<?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>104948</bug_id>
          
          <creation_ts>2012-12-13 13:53:30 -0800</creation_ts>
          <short_desc>Move MutationObserver tests to fast/dom/MutationObserver</short_desc>
          <delta_ts>2012-12-13 15:21:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>esprehn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>790885</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-13 13:53:30 -0800</bug_when>
    <thetext>Move MutationObserver tests to fast/dom/MutationObserver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790889</commentid>
    <comment_count>1</comment_count>
      <attachid>179327</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-13 13:54:14 -0800</bug_when>
    <thetext>Created attachment 179327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790891</commentid>
    <comment_count>2</comment_count>
      <attachid>179327</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 13:56:06 -0800</bug_when>
    <thetext>Comment on attachment 179327
Patch

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

rs=me as long as you’re using svn mv.

&gt; LayoutTests/ChangeLog:10
&gt; +        * fast/dom/MutationObserver/added-out-of-order-expected.txt: Renamed from LayoutTests/fast/mutation/added-out-of-order-expected.txt.

I don’t think we need to list every single test we’re moving. Just add:
* fast/dom/MutationObserver/: Renamed from fast/mutation/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790895</commentid>
    <comment_count>3</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-13 13:58:18 -0800</bug_when>
    <thetext>There&apos;s no other CamelCase directories in LayoutTests/fast, can we name this &quot;mutation-observer&quot; or &quot;mutationobserver&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790897</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-13 14:00:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; There&apos;s no other CamelCase directories in LayoutTests/fast, can we name this &quot;mutation-observer&quot; or &quot;mutationobserver&quot; ?

There are _lots_ of them under fast/dom/:

Node
NodeList
Orientation
Range
Selection
SelectorAPI
StyleSheet
Text
TreeWalker

etc, most of them named after their IDL name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790898</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 14:01:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; There&apos;s no other CamelCase directories in LayoutTests/fast, can we name this &quot;mutation-observer&quot; or &quot;mutationobserver&quot; ?

Our preferred naming scheme is CamelCase. For starters, fast should be Fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790899</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-13 14:02:06 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; There&apos;s no other CamelCase directories in LayoutTests/fast, can we name this &quot;mutation-observer&quot; or &quot;mutationobserver&quot; ?
&gt; 
&gt; There are _lots_ of them under fast/dom/:
&gt; 
&gt; Node
&gt; NodeList
&gt; Orientation
&gt; Range
&gt; Selection
&gt; SelectorAPI
&gt; StyleSheet
&gt; Text
&gt; TreeWalker
&gt; 
&gt; etc, most of them named after their IDL name

Oh I see, it&apos;s fast/dom/MutationObserver, I missed the &quot;dom&quot; in the middle. Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790900</commentid>
    <comment_count>7</comment_count>
      <attachid>179330</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-13 14:02:15 -0800</bug_when>
    <thetext>Created attachment 179330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790902</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-13 14:03:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 179327 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179327&amp;action=review
&gt; 
&gt; rs=me as long as you’re using svn mv.

Does the CQ not know how to move files? I&apos;ve uploaded a patch for landing, but will apply it to an SVN checkout if I need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790906</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 14:05:03 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 179327 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179327&amp;action=review
&gt; &gt; 
&gt; &gt; rs=me as long as you’re using svn mv.
&gt; 
&gt; Does the CQ not know how to move files? I&apos;ve uploaded a patch for landing, but will apply it to an SVN checkout if I need to.

It might but I won’t count on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790921</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-13 14:17:35 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 179327 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179327&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; rs=me as long as you’re using svn mv.
&gt; &gt; 
&gt; &gt; Does the CQ not know how to move files? I&apos;ve uploaded a patch for landing, but will apply it to an SVN checkout if I need to.
&gt; 
&gt; It might but I won’t count on it.

I&apos;ll try it and roll out if the results aren&apos;t to your liking, I don&apos;t have an SVN checkout here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790935</commentid>
    <comment_count>11</comment_count>
      <attachid>179330</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 14:29:23 -0800</bug_when>
    <thetext>Comment on attachment 179330
Patch

Let me do that for you then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790939</commentid>
    <comment_count>12</comment_count>
      <attachid>179330</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 14:34:28 -0800</bug_when>
    <thetext>Comment on attachment 179330
Patch

Per IRC discussion, it might work after all. Let’s give a shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790998</commentid>
    <comment_count>13</comment_count>
      <attachid>179330</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 15:20:56 -0800</bug_when>
    <thetext>Comment on attachment 179330
Patch

Clearing flags on attachment: 179330

Committed r137662: &lt;http://trac.webkit.org/changeset/137662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790999</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 15:21:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179327</attachid>
            <date>2012-12-13 13:54:14 -0800</date>
            <delta_ts>2012-12-13 14:02:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104948-20121213135134.patch</filename>
            <type>text/plain</type>
            <size>307741</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjYyNGQxNDcyMzFkNTg1NmFhZTNk
NzJlOTZlZWI4OTljYTFkZDVjMS4uODdhMWY2MGVhODRhNDU0Y2IwMWRkNGU5M2ZjODcxNmJiN2Q3
ZmRjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTEyLTEzICBBZGFtIEtsZWluICA8YWRh
bWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgTXV0YXRpb25PYnNlcnZlciB0ZXN0cyB0
byBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHNlZW1zIGxpa2UgYSBtb3JlIHNlbnNpYmxlIGxvY2F0
aW9uLCBhbmQgaW4gbGluZSB3aXRoIG90aGVyIERPTSBmZWF0dXJlcy4KKworICAgICAgICAqIGZh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vYWRkZWQtb3V0LW9mLW9yZGVy
LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVk
LW91dC1vZi1vcmRlci5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2NhbGxiYWNrLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2NhbGxiYWNrLWFyZ3VtZW50cy1leHBlY3RlZC50eHQuCisg
ICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jYWxsYmFjay1hcmd1bWVudHMuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY2FsbGJhY2stYXJndW1l
bnRzLmh0bWwuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jbGVhci10cmFu
c2llbnQtd2l0aG91dC1kZWxpdmVyeS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2NsZWFyLXRyYW5z
aWVudC13aXRob3V0LWRlbGl2ZXJ5Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5Lmh0bWwuCisgICAgICAg
ICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcmVhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3JlYXRlLWR1
cmluZy1kZWxpdmVyeS1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9jcmVhdGUtZHVyaW5nLWRlbGl2ZXJ5Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2NyZWF0ZS1kdXJpbmctZGVsaXZlcnkuaHRtbC4KKyAgICAgICAg
KiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhw
ZWN0ZWQudHh0LgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY3Jvc3MtZG9j
dW1lbnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3Mt
ZG9jdW1lbnQuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RhdGFi
YXNlLWNhbGxiYWNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0
LgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJhY2st
ZGVsaXZlcnkuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGF0
YWJhc2UtY2FsbGJhY2stZGVsaXZlcnkuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL2RlbGl2ZXJ5LW9yZGVyLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGVsaXZlcnktb3JkZXItZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXIuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGVsaXZlcnktb3JkZXIuaHRtbC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRp
bmctZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9k
aXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRpbmcuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGlzY29ubmVjdC1jYW5jZWwtcGVuZGlu
Zy5odG1sLgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZG9jdW1lbnQtZnJh
Z21lbnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RvY3VtZW50LWZyYWdtZW50LWluc2Vy
dGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVu
dC1mcmFnbWVudC1pbnNlcnRpb24uaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQudHh0
LgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5kLW9mLXRhc2stZGVsaXZl
cnkuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRh
c2stZGVsaXZlcnkuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Zp
bGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0t
Y2FsbGJhY2stZGVsaXZlcnkuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sLgorICAgICAgICAqIGZhc3Qv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vaW5saW5lLWV2ZW50LWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lu
bGluZS1ldmVudC1saXN0ZW5lci5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL211dGF0ZS1kdXJpbmctZGVsaXZlcnktZXhwZWN0ZWQudHh0OiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5
LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0
ZS1kdXJpbmctZGVsaXZlcnkuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vbXV0YXRlLWR1cmluZy1kZWxpdmVyeS5odG1sLgorICAgICAgICAqIGZhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tY2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jhc2gtZXhwZWN0
ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1j
YWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1jYWxs
YmFjay1ub24tZWxlbWVudC1jcmFzaC5odG1sLgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci5odG1sLgor
ICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tcmVjb3JkLW51bGxp
dHktZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9t
dXRhdGlvbi1yZWNvcmQtbnVsbGl0eS1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sOiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1s
LgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2Jz
ZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL29ic2VydmUtYXR0cmlidXRlcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbC4KKyAgICAgICAgKiBmYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hhcmFjdGVyZGF0YS1leHBlY3RlZC50eHQ6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hhcmFjdGVy
ZGF0YS1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9v
YnNlcnZlLWNoYXJhY3RlcmRhdGEuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qv
bXV0YXRpb24vb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLmh0bWwuCisgICAgICAgICogZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWNoaWxkTGlzdC1leHBlY3RlZC50eHQ6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hpbGRMaXN0LWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hpbGRM
aXN0Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUt
Y2hpbGRMaXN0Lmh0bWwuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNl
cnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGZh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1leGNlcHRpb25zLmh0bWw6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtZXhjZXB0aW9ucy5odG1sLgor
ICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1zdWJ0cmVlLWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1z
dWJ0cmVlLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L29ic2VydmUtc3VidHJlZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9vYnNlcnZlLXN1YnRyZWUuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi1leHBl
Y3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlci13
cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5zaWVudC1l
eHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZl
ci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10cmFuc2llbnQuaHRtbC4K
KyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJv
cG9mZi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZl
ci13cmFwcGVyLWRyb3BvZmYuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL3JlbW92ZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcmVtb3ZlZC1vdXQtb2Ytb3JkZXIu
aHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQt
b2Ytb3JkZXIuaHRtbC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRv
dy1kb20tZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9zaGFkb3ctZG9tLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL3NoYWRvdy1kb20uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vc2hhZG93LWRvbS5odG1sLgorICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvdGFrZVJlY29yZHMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi90YWtlUmVjb3Jkcy1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci90YWtlUmVjb3Jkcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi90YWtlUmVjb3Jkcy5odG1sLgorICAgICAgICAqIGZhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvdHJhbnNpZW50LWdjLWNyYXNoLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdHJhbnNpZW50LWdjLWNyYXNoLWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3RyYW5zaWVudC1nYy1j
cmFzaC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90cmFuc2ll
bnQtZ2MtY3Jhc2guaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2lu
Y2Fpcm8vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAxMi0xMi0xMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGhpcyB0ZXN0IHN0YXJ0ZWQgZmFpbGluZyBhZnRlciBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMzc1OTIgd2hpY2ggCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmYmJiMzNlZmJjZWQ0MzcxZmIxNzJhZjI2ZmQ0
YzEzOTg0MjBlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5
IEBACitUZXN0IE11dGF0aW9uRXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZl
cnM6IGFkZGluZyBub2RlcyAnb3V0IG9mIG9yZGVyJworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5n
dGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUgaXMgJ1NQ
QU4nCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0
aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVk
Tm9kZXNbMF0udGFnTmFtZSBpcyAnRElWJworUEFTUyBtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5s
ZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMl0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCitQ
QVNTIG11dGF0aW9uc1syXS5hZGRlZE5vZGVzWzBdLm5vZGVWYWx1ZSBpcyAnaGVsbG8gd29ybGQn
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQt
b2Ytb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvYWRk
ZWQtb3V0LW9mLW9yZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE4YTE4ZmM2OTQyZTRmNDBiMjA4ZGI1
NmY5MDMyMDg4ODFiMTNlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwKQEAgLTAsMCArMSwzMCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8ZGl2IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25l
Ij48c3Bhbj48L3NwYW4+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgTXV0
YXRpb25FdmVudHMgaW50ZXJmZXJpbmcgd2l0aCBNdXRhdGlvbk9ic2VydmVyczogYWRkaW5nIG5v
ZGVzICdvdXQgb2Ygb3JkZXInIik7Cit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzYW5kYm94Jyk7Cit2YXIgaW5zZXJ0ZWQgPSBmYWxzZTsKK3NhbmRib3guYWRkRXZlbnRM
aXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBmdW5jdGlvbigpIHsKKyAgICBpZiAoIWluc2VydGVk
KSB7CisgICAgICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykpOworICAgICAgICBpbnNlcnRlZCA9IHRydWU7CisgICAgfQorfSk7Cit2YXIgb2JzZXJ2
ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe30pOworb2JzZXJ2ZXIu
b2JzZXJ2ZShzYW5kYm94LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CitzYW5kYm94LnRleHRDb250ZW50
ID0gJ2hlbGxvIHdvcmxkJzsKKwordmFyIG11dGF0aW9ucyA9IG9ic2VydmVyLnRha2VSZWNvcmRz
KCk7CitzaG91bGRCZSgibXV0YXRpb25zLmxlbmd0aCIsICIzIik7CitzaG91bGRCZSgibXV0YXRp
b25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgibXV0YXRpb25zWzBdLnJlbW92
ZWROb2Rlc1swXS50YWdOYW1lIiwgIidTUEFOJyIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5h
ZGRlZE5vZGVzLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWRO
b2Rlcy5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBd
LnRhZ05hbWUiLCAiJ0RJViciKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5s
ZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1syXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
IiwgIjAiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlc1swXS5ub2RlVmFsdWUi
LCAiJ2hlbGxvIHdvcmxkJyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jYWxsYmFjay1hcmd1bWVudHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jYWxsYmFjay1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTMyYzkyODQ5NjU3NjYxYWIwZTlhZTU5
MzU0YTY1ODdhZGVlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2NhbGxiYWNrLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorVmVyaWZpZXMgdGhhdCBNdXRhdGlvbk9ic2VydmVyIGlzIHBhc3NlZCB0byB0aGUg
Y2FsbGJhY2sgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHRoaXNBcmd1bWVudCBpcyBtdXRhdGlvbk9ic2VydmVyCitQQVNTIGFyZ3VtZW50MiBpcyBt
dXRhdGlvbk9ic2VydmVyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9jYWxsYmFjay1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvY2FsbGJhY2stYXJndW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlZmZmMjgz
YjhmM2MzMTY0ZmY4ODhjOWYwODM1ZmExMTcyMjkwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY2FsbGJhY2stYXJndW1lbnRzLmh0bWwK
QEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitkZXNjcmlwdGlvbignVmVyaWZpZXMgdGhhdCBN
dXRhdGlvbk9ic2VydmVyIGlzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgYXMgZXhwZWN0ZWQuJyk7
CisKK2Z1bmN0aW9uIG11dGF0aW9uQ2FsbGJhY2sobXV0YXRpb25zLCBvYnNlcnZlcikgeworICAg
IHdpbmRvdy50aGlzQXJndW1lbnQgPSB0aGlzOworICAgIHdpbmRvdy5hcmd1bWVudDIgPSBvYnNl
cnZlcjsKKyAgICBzaG91bGRCZSgndGhpc0FyZ3VtZW50JywgJ211dGF0aW9uT2JzZXJ2ZXInKTsK
KyAgICBzaG91bGRCZSgnYXJndW1lbnQyJywgJ211dGF0aW9uT2JzZXJ2ZXInKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KK3ZhciBtdXRhdGlvbk9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIobXV0YXRpb25DYWxsYmFjayk7Cit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CittdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczog
dHJ1ZX0pOworZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxpdmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRl
bGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjRkMjE1MjcwYTFlOTcwYTIzYWU2MWEw
YzQ5MjNmOTJjMDQ5OGI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxpdmVyeS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVHJhbnNpZW50IHJlZ2lzdHJhdGlvbnMgc2hvdWxkIGJl
IGNsZWFyZWQgZXZlbiB3aXRob3V0IGRlbGl2ZXJ5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBtdXRhdGlvbnNEZWxpdmVyZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRl
bGl2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2NsZWFy
LXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRiOGM1MDc2Yzg0
ZGE0MWU3OGNhYWY2NTk0ZWQzZTU5YWE5ZDczMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY2xlYXItdHJhbnNpZW50LXdpdGhvdXQtZGVs
aXZlcnkuaHRtbApAQCAtMCwwICsxLDI2IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworZGVzY3JpcHRpb24oJ1RyYW5zaWVudCByZWdpc3RyYXRpb25zIHNob3Vs
ZCBiZSBjbGVhcmVkIGV2ZW4gd2l0aG91dCBkZWxpdmVyeS4nKTsKKwordmFyIG11dGF0aW9uc0Rl
bGl2ZXJlZCA9IGZhbHNlOworZnVuY3Rpb24gY2FsbGJhY2sobXV0YXRpb25zKSB7CisgICAgbXV0
YXRpb25zRGVsaXZlcmVkID0gdHJ1ZTsKK30KK3ZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGNhbGxiYWNrKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwordmFyIHNwYW4gPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3BhbicpKTsKK29ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZSwg
c3VidHJlZTogdHJ1ZX0pOworZGl2LnJlbW92ZUNoaWxkKHNwYW4pOworc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAvLyBCeSB0aGUgdGltZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIHRyYW5z
aWVudCByZWdpc3RyYXRpb24gc2hvdWxkIGJlIGNsZWFyZWQsCisgICAgLy8gc28gd2UgZXhwZWN0
IG5vdCB0byBiZSBub3RpZmllZCBvZiB0aGlzIGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICBzcGFu
LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2JheicpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgIHNob3VsZEJlRmFsc2UoJ211dGF0aW9uc0RlbGl2ZXJlZCcpOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30sIDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcmVhdGUtZHVyaW5n
LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvY3JlYXRlLWR1cmluZy1kZWxpdmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM4
NmRmYWNkNWUxOGFmMmQ3MTJjNjk4YTkzODgzM2E5NzUyMWFjYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY3JlYXRlLWR1cmluZy1kZWxp
dmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdCB0aGF0IE11dGF0aW9uT2Jz
ZXJ2ZXJzIGNyZWF0ZWQgZHVyaW5nIGRlbGl2ZXJ5IG11c3Qgd2FpdCBmb3IgdGhlIG5leHQgbG9v
cC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb3JkZXIubGVuZ3RoIGlz
IDQKK1BBU1Mgb3JkZXJbMF0gaXMgMQorUEFTUyBvcmRlclsxXSBpcyAyCitQQVNTIG9yZGVyWzJd
IGlzIDEKK1BBU1Mgb3JkZXJbM10gaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvY3JlYXRlLWR1cmluZy1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcmVhdGUtZHVyaW5nLWRlbGl2ZXJ5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWZlMTRkZWRjMzgzODljZDZkYzFlMmExMTRiZmJiYWE1ZDhiNzEzYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY3JlYXRl
LWR1cmluZy1kZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZGVzY3JpcHRpb24o
J1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBjcmVhdGVkIGR1cmluZyBkZWxpdmVyeSBtdXN0
IHdhaXQgZm9yIHRoZSBuZXh0IGxvb3AuJyk7CitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgc2hv
dWxkQmUoJ29yZGVyLmxlbmd0aCcsICc0Jyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzBdJywgJzEn
KTsKKyAgICBzaG91bGRCZSgnb3JkZXJbMV0nLCAnMicpOworICAgIHNob3VsZEJlKCdvcmRlclsy
XScsICcxJyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzNdJywgJzMnKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordmFyIG9yZGVyID0gW107Cit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisKK3ZhciBvYnNlcnZlcjM7Cit2YXIgb2JzZXJ2ZXIxID0gbmV3IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgb3JkZXIucHVzaCgx
KTsKKyAgICBpZiAoIW9ic2VydmVyMykgeworICAgICAgICBvYnNlcnZlcjMgPSBuZXcgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIG9yZGVy
LnB1c2goMyk7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlcjMub2JzZXJ2ZShkaXYsIHth
dHRyaWJ1dGVzOiB0cnVlfSk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXon
KTsKKyAgICB9Cit9KTsKK3ZhciBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICBvcmRlci5wdXNoKDIpOworfSk7CisKK29ic2Vy
dmVyMS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK29ic2VydmVyMi5vYnNlcnZl
KGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK2Rpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXIn
KTsKK3NldFRpbWVvdXQoZmluaXNoLCAwKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY3Jvc3MtZG9jdW1lbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcm9zcy1kb2N1
bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlZDQzOTA0NzE4ODVkYWQ1ZDg2NjE0YzY1
MmMwZWQ0ZjE2YjcxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMg
QEAKK1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3MgZG9j
dW1lbnRzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIGJhc2ljIGFz
cGVjdHMgb2YgY3Jvc3MtZG9jdW1lbnQgb2JzZXJ2YXRpb24uCitQQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0
YXRpb25zWzBdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUg
aXMgImlkIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKwor
VGVzdGluZyB0aGF0IHN1YnRyZWUgb2JzZXJ2YXRpb24gd29ya3MgYWZ0ZXIgbm9kZSBpcyBtb3Zl
ZC4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9jcm9zcy1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9jcm9zcy1kb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZGQxODMy
YzhlZmQyZGZhMDU4YTk1ZGM0MzE5N2IxMjhjNGYxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Nyb3NzLWRvY3VtZW50Lmh0bWwKQEAg
LTAsMCArMSwxMDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFy
IG11dGF0aW9uczsKK3ZhciBkaXYsIHN1YkRpdjsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgewor
ICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1
ZygnVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLicp
OworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0
aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CisgICAgICAgIHZhciBuZXdEb2MgPSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywgJycsIG51bGwpOworICAgICAgICBu
ZXdEb2MuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgICAgZGl2LmlkID0gJ2Zvbyc7CisgICAgICAg
IHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0U3VidHJlZSgpIHsK
KyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVi
dWcoJ1Rlc3RpbmcgdGhhdCBzdWJ0cmVlIG9ic2VydmF0aW9uIHdvcmtzIGFmdGVyIG5vZGUgaXMg
bW92ZWQuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAg
ICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9
KTsKKyAgICAgICAgdmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURv
Y3VtZW50KCcnLCAnJywgbnVsbCk7CisgICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChkaXYpOwor
ICAgICAgICBzdWJEaXYuaWQgPSAnZm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFy
Z2V0JywgJ3N1YkRpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWUnLCAnImlkIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWVzcGFjZScsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAg
ICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0
YXJ0KCk7Cit9CisKK3ZhciB0ZXN0cyA9IFt0ZXN0QmFzaWMsIHRlc3RTdWJ0cmVlXTsKK3ZhciB0
ZXN0SW5kZXggPSAwOworCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdElu
ZGV4IDwgdGVzdHMubGVuZ3RoKQorICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAgICBl
bHNlCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0
IE11dGF0aW9uT2JzZXJ2ZXJzIG1vdmUgY29ycmVjdGx5IGFjcm9zcyBkb2N1bWVudHMnKTsKKwor
aWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcikKKyAgICB0ZXN0RmFpbGVkKCdUaGlz
IHRlc3QgcmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUyknKTsKK2Vsc2UKKyAgICBy
dW5OZXh0VGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RhdGFiYXNlLWNhbGxi
YWNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiNGVmOTA0YjBiYjcyODMwOTE0OTUwZGVlNzg3NTkyNTAxNDI3YWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RhdGFiYXNlLWNh
bGxiYWNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0aW5nIG11
dGF0aW9ucyBhcmUgZGVsaXZlcmVkIGZvbGxvd2luZyBEYXRhYmFzZSB0cmFuc2FjdGlvbiBjYWxs
YmFja3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9ucy5s
ZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1Mg
bXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnkuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJh
Y2stZGVsaXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWZmMjQ2ODk5OTY3OTM5YmY5NzllY2NkMzUw
ZjRjYjQ0ZWQ5MWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9kYXRhYmFzZS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEs
NTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7CisKK2Z1bmN0aW9uIHRlc3REYXRhYmFzZSgpIHsKKyAg
ICB2YXIgZGl2OworICAgIHZhciBkYjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlv
biBzdGFydCgpIHsKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0g
bTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmli
dXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKKworICAgICAgICBkYiA9IG9wZW5E
YXRhYmFzZSgnRGF0YWJhc2VNdXRhdGlvbkRlbGl2ZXJ5JywgJzEuMCcsICcnLCAxKTsKKyAgICAg
ICAgZGIudHJhbnNhY3Rpb24obXV0YXRlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtdXRhdGUo
KSB7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc2V0
VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3RpbmcgbXV0
YXRpb25zIGFyZSBkZWxpdmVyZWQgZm9sbG93aW5nIERhdGFiYXNlIHRyYW5zYWN0aW9uIGNhbGxi
YWNrcy4nKTsKKworaWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcikgeworICAgIHRl
c3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfSBlbHNlCisgICAgdGVzdERhdGFiYXNlKCk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL2RlbGl2ZXJ5LW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRh
ZTcxNGViOTQ3NTY3NzZmMWVlZDVkYTNmNWIxYzRhOWUxMTZjZjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RlbGl2ZXJ5LW9yZGVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMg
YXJlIGRlbGl2ZXJlZCB0byBpbiBvcmRlciBvZiBjcmVhdGlvbi4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgb3JkZXIubGVuZ3RoIGlzIDEwCitQQVNTIG9yZGVyWzBdIGlz
IDAKK1BBU1Mgb3JkZXJbMV0gaXMgMQorUEFTUyBvcmRlclsyXSBpcyAyCitQQVNTIG9yZGVyWzNd
IGlzIDMKK1BBU1Mgb3JkZXJbNF0gaXMgNAorUEFTUyBvcmRlcls1XSBpcyA1CitQQVNTIG9yZGVy
WzZdIGlzIDYKK1BBU1Mgb3JkZXJbN10gaXMgNworUEFTUyBvcmRlcls4XSBpcyA4CitQQVNTIG9y
ZGVyWzldIGlzIDkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L2RlbGl2ZXJ5LW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL2RlbGl2ZXJ5LW9yZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY0MGM2NGMxMTc5OTc2OWM1ZjRm
NDdlNDAxZWYwMWQ2OWJjN2Q2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXIuaHRtbApAQCAtMCwwICsxLDUxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgYXJlIGRlbGl2
ZXJlZCB0byBpbiBvcmRlciBvZiBjcmVhdGlvbi4nKTsKK2Z1bmN0aW9uIGZpbmlzaCgpIHsKKyAg
ICBzaG91bGRCZSgnb3JkZXIubGVuZ3RoJywgJzEwJyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzBd
JywgJzAnKTsKKyAgICBzaG91bGRCZSgnb3JkZXJbMV0nLCAnMScpOworICAgIHNob3VsZEJlKCdv
cmRlclsyXScsICcyJyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzNdJywgJzMnKTsKKyAgICBzaG91
bGRCZSgnb3JkZXJbNF0nLCAnNCcpOworICAgIHNob3VsZEJlKCdvcmRlcls1XScsICc1Jyk7Cisg
ICAgc2hvdWxkQmUoJ29yZGVyWzZdJywgJzYnKTsKKyAgICBzaG91bGRCZSgnb3JkZXJbN10nLCAn
NycpOworICAgIHNob3VsZEJlKCdvcmRlcls4XScsICc4Jyk7CisgICAgc2hvdWxkQmUoJ29yZGVy
WzldJywgJzknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIG9yZGVyID0gW107Cit2
YXIgb2JzZXJ2ZXJzID0gW107CisKK2Z1bmN0aW9uIHNldFVwT3JkZXJpbmcobnVtKSB7CisgICAg
b2JzZXJ2ZXJzLnB1c2gobmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRp
b25zKSB7CisgICAgICAgIG9yZGVyLnB1c2gobnVtKTsKKyAgICB9KSk7Cit9CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIHNldFVwT3JkZXJpbmcoaSk7Cit9CisKK3ZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK29ic2VydmVyc1szXS5vYnNlcnZl
KGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK29ic2VydmVyc1syXS5vYnNlcnZlKGRpdiwge2No
YXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKK29ic2VydmVyc1sxXS5vYnNlcnZl
KGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK29ic2VydmVyc1s3XS5vYnNlcnZlKGRpdiwge2No
aWxkTGlzdDogdHJ1ZX0pOworb2JzZXJ2ZXJzWzRdLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczog
dHJ1ZX0pOworb2JzZXJ2ZXJzWzldLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwor
b2JzZXJ2ZXJzWzBdLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CitvYnNlcnZlcnNb
NV0ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CitvYnNlcnZlcnNbNl0ub2JzZXJ2
ZShkaXYsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CitvYnNlcnZlcnNb
OF0ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CitkaXYuc2V0QXR0cmlidXRlKCdm
b28nLCAnYmFyJyk7CitkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hl
bGxvJykpOworZGl2LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSc7CitzZXRUaW1l
b3V0KGZpbmlzaCwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kaXNjb25uZWN0
LWNhbmNlbC1wZW5kaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjVkOTdlNzUzMmQ2OGY2
NjZlYmFlOWZhNWMwYTNjYWQzZmIxYjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgV2ViS2l0TXV0YXRpb25PYnNlcnZl
ci5kaXNjb25uZWN0IGNhbmNlbHMgcGVuZGluZyBkZWxpdmVyeQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworRGlzY29ubmVjdGluZyBzaG91bGQgY2FuY2VsIGFueSBwZW5kaW5nIGRl
bGl2ZXJ5Li4uCitQQVNTIG11dGF0aW9ucyBpcyBudWxsCisuLi5hbmQgcmUtb2JzZXJ2aW5nIHNo
b3VsZCBub3Qgc2VlIGFueSBvZiB0aGUgcHJldmlvdXNseS1nZW5lcmF0ZWQgcmVjb3Jkcy4KK1BB
U1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
IGlzICJiYXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9k
aXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODNlZTE4MjgwMDkzNDAwOWMzZTQ5YjM4MDk5ZDFlMzYyYTM1YjQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kaXNjb25uZWN0LWNhbmNl
bC1wZW5kaW5nLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLmRpc2Nv
bm5lY3QgY2FuY2VscyBwZW5kaW5nIGRlbGl2ZXJ5Jyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7Cit2YXIgb2JzZXJ2ZXI7CisKK2Z1bmN0aW9uIHN0YXJ0
KCkgeworICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisKKyAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICB9KTsKKworICAgIG9i
c2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgZGl2LnNldEF0
dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICBz
ZXRUaW1lb3V0KG5leHQsIDApOworfQorCitmdW5jdGlvbiBuZXh0KCkgeworICAgIGRlYnVnKCdE
aXNjb25uZWN0aW5nIHNob3VsZCBjYW5jZWwgYW55IHBlbmRpbmcgZGVsaXZlcnkuLi4nKTsKKyAg
ICBzaG91bGRCZU51bGwoJ211dGF0aW9ucycpOworICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7
IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2Jheicp
OworICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKK30KKworZnVuY3Rpb24gZmluaXNoKCkgewor
ICAgIGRlYnVnKCcuLi5hbmQgcmUtb2JzZXJ2aW5nIHNob3VsZCBub3Qgc2VlIGFueSBvZiB0aGUg
cHJldmlvdXNseS1nZW5lcmF0ZWQgcmVjb3Jkcy4nKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
JywgJyJiYXIiJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2lmICghd2luZG93LldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAgc3RhcnQoKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZjNlZTNmNDNhYTk5YzYyYmEzOGFlYmUxMzc0NzQyYjcy
Y2UxMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzMCBAQAorSW5zZXJ0aW5nIERvY3VtZW50RnJhZ21lbnRzIHNob3VsZCByZW1vdmUgYWxsIGNo
aWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZvcmUgaW5zZXJ0aW5nIHRoZSBjaGlsZHJlbi4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgYXBwZW5kQ2hpbGQKK1BBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0
aCBpcyAwCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1Mg
bXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLnJl
bW92ZWROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0aW5nIGluc2VydEJlZm9yZQorUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlz
IDAKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRh
dGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCBpcyAwCisKK1Rlc3RpbmcgcmVwbGFjZUNoaWxkCitQQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAor
UEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9u
c1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9k
ZXMubGVuZ3RoIGlzIDEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZiMGM1ODVlOTBlODJiYzZhZDY1YTNmM2U2ZDY4ZTYyM2NkOWEzOGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RvY3Vt
ZW50LWZyYWdtZW50LWluc2VydGlvbi5odG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdJbnNlcnRpbmcgRG9jdW1lbnRGcmFnbWVu
dHMgc2hvdWxkIHJlbW92ZSBhbGwgY2hpbGRyZW4gb2YgdGhlIGZyYWdtZW50IGJlZm9yZSBpbnNl
cnRpbmcgdGhlIGNoaWxkcmVuLicpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2Z1bmN0aW9uIGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSB7CisgICAgdmFyIGZyYWdtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKSk7CisgICAgZnJhZ21lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpKTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGZy
YWdtZW50LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCitm
dW5jdGlvbiBjcmVhdGVPYnNlcnZlZERpdigpIHsKKyAgICByZXR1cm4gZGl2OworfQorCitmdW5j
dGlvbiBjYWxsYmFjayhtdXRhdGlvbnMpIHsKKyAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRp
b25zOworfQordmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJh
Y2spOworCitmdW5jdGlvbiB0ZXN0QXBwZW5kQ2hpbGQoKSB7CisgICAgZGVidWcoJ1Rlc3Rpbmcg
YXBwZW5kQ2hpbGQnKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQoY3JlYXRlT2JzZXJ2ZWRGcmFnbWVudCgpKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAn
MicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywg
JzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
JywgJzAnKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICB0ZXN0SW5zZXJ0QmVmb3JlKCk7
CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnNlcnRCZWZvcmUoKSB7CisgICAgZGVi
dWcoJ1Rlc3RpbmcgaW5zZXJ0QmVmb3JlJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVl
fSk7CisgICAgZGl2Lmluc2VydEJlZm9yZShjcmVhdGVPYnNlcnZlZEZyYWdtZW50KCksIGRpdi5m
aXJzdENoaWxkKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgICAgICB0ZXN0UmVwbGFjZUNoaWxkKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RSZXBsYWNlQ2hpbGQoKSB7CisgICAgZGVidWcoJ1Rlc3RpbmcgcmVwbGFjZUNoaWxkJyk7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgIG9ic2VydmVyLm9i
c2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CisgICAgZGl2LnJlcGxhY2VDaGlsZChjcmVh
dGVPYnNlcnZlZEZyYWdtZW50KCksIGRpdi5maXJzdENoaWxkKTsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzIn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywg
JzEnKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
LCAwKTsKK30KKwordGVzdEFwcGVuZENoaWxkKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2
ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
ZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzY2RmMWU5Mzkz
MmNhMTc0MjVhMzRlYzFhNjE1YTgzZGYzOGJhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NzE1YzRmMGEyYTMzODYxYzU5NzIxMjA0MjNhNmYwNDUwZDg5NjBkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9l
bmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1s
PgorPG9sIGNvbnRlbnRlZGl0YWJsZT4KKyAgICA8bGk+UHJlc3MgZW50ZXIKKzwvb2w+Cis8cD5U
aGVuIGNsaWNrIGhlcmU8L3A+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdvbCcpOworICAgIHZhciBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncCcpOwor
ICAgIHZhciBvYnNlcnZlclJ1bnMgPSAwOworICAgIHZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkgeyArK29ic2VydmVyUnVuczsgfSk7CisgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShsaXN0LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CisgICAgbGlzdC5hZGRFdmVu
dExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24oKSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5u
ZXJIVE1MID0gb2JzZXJ2ZXJSdW5zID09IDEgPyAnUEFTU0VEJyA6ICdGQUlMRUQnOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICB9KTsKKyAgICBsaXN0LmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICBldmVudFNlbmRlci5zY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24o
J1xuJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHAub2Zmc2V0TGVmdCArIHAu
b2Zmc2V0V2lkdGggLyAyLCBwLm9mZnNldFRvcCArIHAub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAg
ICAgIGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKKyAgICB9Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
ZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNDk3NjFhYmY3ODA1MWUyMjg2MjlkYTk2OGIxNjU4N2Vk
MGQ2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTYgQEAKK1Rlc3QgdGhhdCBNdXRhdGlvbiBSZWNvcmRzIGFyZSBkZWxpdmVyZWQgZm9sbG93
aW5nIEZpbGVTeXN0ZW0gY2FsbGJhY2tzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQ
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0
cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImJheiIKKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxs
YmFjay1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJhY2U2ZjBi
NzU5YmVkZDI4ZWMyMDAxYzhmNjZjY2NkMWE1N2NmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxp
dmVyeS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7CisKK2Z1bmN0aW9u
IHRlc3RGaWxlc3lzdGVtKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIGZpbGVFbnRyeTsKKyAg
ICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
b2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTog
dHJ1ZSB9KTsKKworICAgICAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDUq
MTAyNCoxMDI0LCBmdW5jdGlvbihmcykgeworICAgICAgICAgICAgZnMucm9vdC5nZXRGaWxlKCdm
b28udHh0Jywge2NyZWF0ZTogdHJ1ZSwgZXhjbHVzZTogdHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7
CisgICAgICAgICAgICAgICAgZmlsZUVudHJ5ID0gZW50cnk7CisgICAgICAgICAgICAgICAgZmls
ZUVudHJ5LmdldFBhcmVudChtdXRhdGVBZnRlckdldFBhcmVudCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbXV0YXRlQWZ0ZXJHZXRQYXJlbnQo
KSB7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgZmls
ZUVudHJ5LnJlbW92ZShtdXRhdGVBZnRlclJlbW92ZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
bXV0YXRlQWZ0ZXJSZW1vdmUoKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAn
ImZvbyInKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYuc2V0QXR0
cmlidXRlKCdiYXonLCAnYmF0Jyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWUnLCAnImJheiInKTsKKworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAg
ICAgIGRlYnVnKCcnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgc3Rh
cnQoKTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbiBSZWNvcmRzIGFyZSBk
ZWxpdmVyZWQgZm9sbG93aW5nIEZpbGVTeXN0ZW0gY2FsbGJhY2tzLicpOworCitpZiAoIXdpbmRv
dy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIHx8ICF3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0
ZW0pIHsKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykgYW5kIEVOQUJMRShGSUxFX1NZU1RFTSknKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30gZWxzZQorICAgIHRlc3RGaWxlc3lzdGVtKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1s
aXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL2lubGluZS1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNjZGYx
ZTkzOTMyY2ExNzQyNWEzNGVjMWE2MTVhODNkZjM4YmFkOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0
ZW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYmNjMmM0OWM1M2YyZGIzM2I3YTAwMjViMTdlOGM0OTMx
YmI1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5lci5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9D
VFlQRSBodG1sPgorPG9sIGNvbnRlbnRlZGl0YWJsZSBvbmlucHV0PSJkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCA9IG9ic2VydmVyUmFuID8gJ0ZBSUxFRCcgOiAnUEFTU0VEJzsgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSI+CisgICAgPGxpPlByZXNzIGVudGVy
Cis8L29sPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKworICAgIHZhciBsaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignb2wn
KTsKKyAgICB2YXIgb2JzZXJ2ZXJSYW4gPSBmYWxzZTsKKyAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpIHsgb2JzZXJ2ZXJSYW4gPSB0cnVlOyB9
KTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGxpc3QsIHtjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3Rl
ckRhdGE6IHRydWV9KTsKKyAgICBsaXN0LmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKCdc
bicpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL211dGF0ZS1kdXJpbmctZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wOTZjMGQ3YTA5ZWI0NDI3MTEyM2Q0ODk3OTViODVhODc3NjVh
YTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CitUZXN0IHRoYXQgbXV0YXRpb25zIGR1cmluZyBkZWxpdmVyeSBkbyBub3QgaW50ZXJydXB0IGRl
bGl2ZXJ5IG9yZGVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvcmRl
ci5sZW5ndGggaXMgMworUEFTUyBvcmRlclswXSBpcyAxCitQQVNTIG9yZGVyWzFdIGlzIDMKK1BB
U1Mgb3JkZXJbMl0gaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvbXV0YXRlLWR1cmluZy1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTEwMWM5ZTM4MzRhZGQ5YzE1YWVjYjE0ZGE3NWU3ZjBkOWFlMzc2ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRlLWR1cmluZy1k
ZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhh
dCBtdXRhdGlvbnMgZHVyaW5nIGRlbGl2ZXJ5IGRvIG5vdCBpbnRlcnJ1cHQgZGVsaXZlcnkgb3Jk
ZXIuJyk7CitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgc2hvdWxkQmUoJ29yZGVyLmxlbmd0aCcs
ICczJyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzBdJywgJzEnKTsKKyAgICBzaG91bGRCZSgnb3Jk
ZXJbMV0nLCAnMycpOworICAgIHNob3VsZEJlKCdvcmRlclsyXScsICcyJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3ZhciBvcmRlciA9IFtdOwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworCit2YXIgb2JzZXJ2ZXIxID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgb3JkZXIucHVzaCgxKTsKKyAgICBkaXYu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKK30pOwordmFyIG9i
c2VydmVyMiA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykg
eworICAgIG9yZGVyLnB1c2goMik7Cit9KTsKK3ZhciBvYnNlcnZlcjMgPSBuZXcgV2ViS2l0TXV0
YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICBvcmRlci5wdXNoKDMpOwor
fSk7CisKK29ic2VydmVyMS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK29ic2Vy
dmVyMi5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworb2JzZXJ2ZXIzLm9ic2VydmUo
ZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOworZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2Jhcicp
Oworc2V0VGltZW91dChmaW5pc2gsIDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1jYWxsYmFjay1ub24t
ZWxlbWVudC1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL211dGF0aW9uLWNhbGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MmU4ZWEzZjFjYTA0MmZjZjg1NWQzM2JkOTM4YzJlMmE5NzZiNDc5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9t
dXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSBAQAorUEFTUy4gV2ViS2l0IGRpZG4ndCBjcmFzaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1j
cmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlv
bi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZjM2NWE2YTY4
OWIyNTEwYjY3MjA2NjMzMGQzNjA2NjA1MWEwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLWNhbGxiYWNrLW5vbi1lbGVt
ZW50LWNyYXNoLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbXV0YXRpb25DYWxsYmFjayhtdXRhdGlvbnMsIG9i
c2VydmVyKSB7CisgICAgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbLTFdOworfQorCit2YXIgbXV0
YXRpb25PYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9uQ2FsbGJh
Y2spOworbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6
IHRydWV9KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoIlBBU1MuIFdlYktpdCBkaWRuJ3QgY3Jhc2giKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
bXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlYjNlODZlNzBlMjQ4NWE3NzIwMTgwNzc2NDI4NTkx
NzkyNzQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3QgdGhlIGNvbnN0cnVjdG9yIG9mIFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LldlYktpdE11
dGF0aW9uT2JzZXJ2ZXIgaXMgbm9uLW51bGwuCitQQVNTIHR5cGVvZiBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyLnByb3RvdHlwZS5vYnNlcnZlIGlzICJmdW5jdGlvbiIKK1BBU1MgdHlwZW9mIFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLmRpc2Nvbm5lY3QgaXMgImZ1bmN0aW9uIgorUEFT
UyB0eXBlb2Ygb2JzZXJ2ZXIub2JzZXJ2ZSBpcyAiZnVuY3Rpb24iCitQQVNTIHR5cGVvZiBvYnNl
cnZlci5kaXNjb25uZWN0IGlzICJmdW5jdGlvbiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNv
bnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU1OGFjYTkzYjM0YWM1NjY5MDk4Yjg5YjIwNzI0
ODYyMzQ0YTlhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ZGVzY3Jp
cHRpb24+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIHNob3VsZEJlTm9uTnVsbCgnd2luZG93LldlYktpdE11dGF0aW9u
T2JzZXJ2ZXInKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlJywgJ2Z1bmN0aW9uJyk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUu
ZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOworICAgIHdpbmRvdy5vYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeyB9KTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBvYnNlcnZlci5vYnNlcnZlJywgJ2Z1bmN0aW9uJyk7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2Ygb2JzZXJ2ZXIuZGlzY29ubmVjdCcsICdm
dW5jdGlvbicpOworfQorCitkZXNjcmlwdGlvbignVGVzdCB0aGUgY29uc3RydWN0b3Igb2YgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcicpOworCitpZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1blRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjA1NjY0ZTFlMzViOTg3ZjNmNjVkYWEzZTBiYjY4NzdhOTM4
ZGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMCBA
QAorTm9uLXJlbGV2YW50IHByb3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUg
bnVsbCwgZXhjZXB0IGZvciBOb2RlTGlzdHMsIHdoaWNoIHNob3VsZCBiZSBlbXB0eQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworY2hhcmFjdGVyRGF0YSByZWNvcmQ6CitQQVNTIHJl
Y29yZC5hdHRyaWJ1dGVOYW1lIGlzIG51bGwKK1BBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFj
ZSBpcyBudWxsCitQQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCitQQVNTIHJlY29yZC5wcmV2
aW91c1NpYmxpbmcgaXMgbnVsbAorUEFTUyByZWNvcmQubmV4dFNpYmxpbmcgaXMgbnVsbAorUEFT
UyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyByZWNvcmQucmVtb3ZlZE5vZGVz
Lmxlbmd0aCBpcyAwCisKK2NoaWxkTGlzdCByZWNvcmQ6CitQQVNTIHJlY29yZC5hdHRyaWJ1dGVO
YW1lIGlzIG51bGwKK1BBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCitQQVNT
IHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCisKK2F0dHJpYnV0ZXMgcmVjb3JkOgorUEFTUyByZWNv
cmQuYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgcmVjb3JkLm9sZFZhbHVlIGlzIG51
bGwKK1BBU1MgcmVjb3JkLnByZXZpb3VzU2libGluZyBpcyBudWxsCitQQVNTIHJlY29yZC5uZXh0
U2libGluZyBpcyBudWxsCitQQVNTIHJlY29yZC5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNT
IHJlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLXJlY29yZC1udWxsaXR5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLXJlY29yZC1udWxsaXR5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjdjMDhmNmZlOWJmM2M2MGVkNTQwNzFlMDZkYjJlMTNhZDgzYmJk
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignTm9uLXJlbGV2YW50IHByb3BlcnRp
ZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVsbCwgZXhjZXB0IGZvciBOb2RlTGlz
dHMsIHdoaWNoIHNob3VsZCBiZSBlbXB0eScpOwordmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSk7CisKK3ZhciB0ZXh0ID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ3NvbWV0aGluZycpOworb2JzZXJ2ZXIub2JzZXJ2ZSh0ZXh0LCB7Y2hhcmFj
dGVyRGF0YTogdHJ1ZX0pOwordGV4dC5kYXRhID0gJ3NvbWV0aGluZyBlbHNlJzsKK3ZhciByZWNv
cmQgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpWzBdOworZGVidWcoJ2NoYXJhY3RlckRhdGEgcmVj
b3JkOicpOworc2hvdWxkQmVOdWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZScpOworc2hvdWxkQmVO
dWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlJyk7CitzaG91bGRCZU51bGwoJ3JlY29yZC5v
bGRWYWx1ZScpOworc2hvdWxkQmVOdWxsKCdyZWNvcmQucHJldmlvdXNTaWJsaW5nJyk7CitzaG91
bGRCZU51bGwoJ3JlY29yZC5uZXh0U2libGluZycpOworc2hvdWxkQmUoJ3JlY29yZC5hZGRlZE5v
ZGVzLmxlbmd0aCcsICcwJyk7CitzaG91bGRCZSgncmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGgn
LCAnMCcpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitvYnNl
cnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworZGl2LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CityZWNvcmQgPSBvYnNlcnZlci50YWtlUmVj
b3JkcygpWzBdOworZGVidWcoJ1xuY2hpbGRMaXN0IHJlY29yZDonKTsKK3Nob3VsZEJlTnVsbCgn
cmVjb3JkLmF0dHJpYnV0ZU5hbWUnKTsKK3Nob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0ZU5h
bWVzcGFjZScpOworc2hvdWxkQmVOdWxsKCdyZWNvcmQub2xkVmFsdWUnKTsKKworb2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CitkaXYuc2V0QXR0cmlidXRlKCdkYXRh
LWZvbycsICdiYXInKTsKK3JlY29yZCA9IG9ic2VydmVyLnRha2VSZWNvcmRzKClbMF07CitkZWJ1
ZygnXG5hdHRyaWJ1dGVzIHJlY29yZDonKTsKK3Nob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0
ZU5hbWVzcGFjZScpOworc2hvdWxkQmVOdWxsKCdyZWNvcmQub2xkVmFsdWUnKTsKK3Nob3VsZEJl
TnVsbCgncmVjb3JkLnByZXZpb3VzU2libGluZycpOworc2hvdWxkQmVOdWxsKCdyZWNvcmQubmV4
dFNpYmxpbmcnKTsKK3Nob3VsZEJlKCdyZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwor
c2hvdWxkQmUoJ3JlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2Jz
ZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
N2Y2MzE2ZmU1ZGQ1NjBkOWI1ZDUxYjcyYWZiNGQxZjhhYjA2ZWY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjM2IEBACitUZXN0IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIub2JzZXJ2ZSBvbiBhdHRyaWJ1dGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgYXR0cmlidXRlIG9ic2VydmF0aW9uLgorLi4u
Y2FuIGF0dHJpYnV0ZSBjaGFuZ2VzIGJlIG9ic2VydmVkIGF0IGFsbAorUEFTUyBtdXRhdGlvbnMu
bGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNT
IG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0
cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImJhciIKK1BBU1Mg
bXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisuLi5vYnNlcnZlci5kaXNj
b25uZWN0KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxpdmVyeSBvZiBtdXRhdGlvbnMuCitQ
QVNTIG11dGF0aW9ucyBpcyBudWxsCisuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIgZGlzY29ubmVjdCB3
b3JrcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIK
K1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
c3BhY2UgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BB
U1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImJhciIKK1BBU1MgbXV0YXRpb25zWzFd
LmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBvYnNlcnZpbmcgd2l0
aG91dCBzcGVjaWZ5aW5nICJhdHRyaWJ1dGVzIiBkb2VzIG5vdCByZXN1bHQgaW4gaGVhcmluZyBh
Ym91dCBhdHRyaWJ1dGUgY2hhbmdlcy4KK1BBU1MgbXV0YXRpb25zIGlzIG51bGwKKworVGVzdGlu
ZyB0aGF0IHJlLW9ic2VydmluZyB0aGUgc2FtZSBub2RlIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIg
aGFzIHRoZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIHRoZSBvcHRpb25zLgorUEFTUyBjYWxscyBpcyAx
CitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
YXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKK1BB
U1MgbXV0YXRpb25zIGlzIG51bGwKKworVGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBj
YW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlv
bnMuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBp
cyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIK
K1BBU1MgbXV0YXRpb25zMi5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnMyWzBdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uczJbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgor
CitUZXN0aW5nIHRoYXQgImF0dHJpYnV0ZU5hbWVzcGFjZSIgdmFsdWUgaXMgZGVsaXZlcmVkIHBy
b3Blcmx5LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJm
b28iCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgImh0dHA6Ly93d3cu
Zm9vLmNvbS9iYXIiCisKK1Rlc3RpbmcgdGhhdCBtb2RpZmljYXRpb25zIHRvIG5vZGUgcHJvcGVy
dGllcyB3aGljaCBkZWxlZ2F0ZSB0byBhdHRyaWJ1dGUgc3RvcmFnZSBkZWxpdmVyIG11dGF0aW9u
cy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAic3JjIgor
UEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFd
LmF0dHJpYnV0ZU5hbWUgaXMgImhyZWYiCisKK1Rlc3RpbmcgbXV0YXRpb24gcmVjb3JkcyBhcmUg
ZW5xdWV1ZWQgZm9yIGF0dHJpYnV0ZXMgYmVmb3JlIERPTVN1YnRyZWVNb2RpZmllZCBpcyBkaXNw
YXRjaGVkLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJm
b28iCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlv
bnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiYmF6IgorCitUZXN0aW5nIGJhc2ljIG9sZFZhbHVlIGRl
bGl2ZXJ5LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJm
b28iCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxsCitQQVNTIG11dGF0aW9uc1sx
XS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBp
cyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgImJhciIKK1BBU1MgbXV0YXRp
b25zWzJdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVO
YW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9uc1syXS5vbGRWYWx1ZSBpcyAiYm9vIgorCitUZXN0
aW5nIHRoYXQgb2xkVmFsdWUgaXMgZGVsaXZlcmVkIGFzIHJlcXVlc3RlZCAob3Igbm90KS4KK1BB
U1MgbXV0YXRpb25zV2l0aE9sZFZhbHVlLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1dpdGhP
bGRWYWx1ZVswXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFs
dWVbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVb
MF0ub2xkVmFsdWUgaXMgImJhciIKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11
dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgbnVsbAorCitB
biBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9ic2VydmF0aW9ucyB3aWxsIGdldCBhdHRyaWJ1dGVP
bGRWYWx1ZSBpZiBhbnkgZW50cmllcyByZXF1ZXN0IGl0LgorUEFTUyBtdXRhdGlvbnMubGVuZ3Ro
IGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1
ZSBpcyAiYmFyIgorCitUZXN0aW5nIHNldHRpbmcgYW4gYXR0cmlidXRlIHZpYSByZWZsZWN0ZWQg
SURMIGF0dHJpYnV0ZS4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCitQQVNTIG11dGF0aW9u
c1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxsCitQQVNTIG11dGF0
aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRl
TmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiZm9vIgorUEFTUyBt
dXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJp
YnV0ZU5hbWUgaXMgImlkIgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgImJhciIKKwor
VGVzdGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciB3b3JrcyBhcyBleHBlY3RlZCBhbmQgb2JzZXJ2
ZXMgY2FzZSB3aXRoIEhUTUwgZWxlbWVudHMuCisuLi5vbmx5IGZvbyBhbmQgYmFyIHNob3VsZCBi
ZSByZWNlaXZlZC4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sw
XS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBp
cyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKK1BB
U1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS5h
dHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UgaXMgbnVsbAorCitUZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBhdHRyaWJ1dGVGaWx0ZXIgd2hl
biB0aGUgc2FtZSBvYnNlcnZlciBvYnNlcnZlcyBhdCBtdWx0aXBsZSBub2RlcyBpbiBhIHN1YnRy
ZWUgd2l0aCBkaWZmZXJlbnQgZmlsdGVyIG9wdGlvbnMuCisuLi5vbmx5IGZvbywgYmFyICYgYmF0
IHNob3VsZCBiZSByZWNlaXZlZC4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCitQQVNTIG11
dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlz
IG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRl
cyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImJhdCIKK1BBU1MgbXV0YXRp
b25zWzJdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisuLi5iYXIsIGJhdCAmIGJheiBzaG91
bGQgYWxsIGJlIHJlY2VpdmVkLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0
YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMg
bnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRp
b25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImJhdCIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWVzcGFjZSBpcyBudWxsCitQQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVz
IgorUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBpcyAiYmF6IgorUEFTUyBtdXRhdGlv
bnNbMl0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKworVGVzdGluZyB0aGF0IHNldHRpbmcg
YW4gYXR0cmlidXRlRmlsdGVyIGZpbHRlcnMgb3V0IG5hbWVzcGFjZWQgYXR0cmlidXRlcy4KKy4u
LnBhdGhMZW5ndGggc2hvdWxkIG5vdCBiZSByZWNlaXZlZC4KK1BBU1MgbXV0YXRpb25zIGlzIG51
bGwKKworVGVzdGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciByZXNwZWN0cyBjYXNlIHdpdGggbm9u
LUhUTUwgZWxlbWVudHMuCisuLi5vbmx5IElELCBpZCwgYm9vTSBzaG91bGQgYmUgcmVjZWl2ZWQu
CitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMworUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
YXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgIklEIgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25z
WzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1l
IGlzICJpZCIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCitQ
QVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMl0u
YXR0cmlidXRlTmFtZSBpcyAiYm9vTSIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWVz
cGFjZSBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUg
cHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRzLgorUEFTUyBtdXRhdGlvbnMubGVu
Z3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzBdLm9s
ZFZhbHVlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQ
QVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25z
WzFdLm9sZFZhbHVlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCitQQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0
YXRpb25zWzJdLm9sZFZhbHVlIGlzIG51bGwKKy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLgor
UEFTUyBtdXRhdGlvbnMgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1l
bnRzIHN0eWxlIHByb3BlcnR5IGRpc3BhdGNoZXMgTXV0YXRpb24gUmVjb3JkcyB3aXRoIGNvcnJl
Y3Qgb2xkVmFsdWVzLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25z
WzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
IGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJjb2xvcjogeWVsbG93
OyB3aWR0aDogMTAwcHg7IgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIK
K1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlv
bnNbMV0ub2xkVmFsdWUgaXMgImNvbG9yOiByZWQ7IHdpZHRoOiAxMDBweDsiCitQQVNTIG11dGF0
aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRl
TmFtZSBpcyAic3R5bGUiCitQQVNTIG11dGF0aW9uc1syXS5vbGRWYWx1ZSBpcyAiY29sb3I6IHJl
ZDsgd2lkdGg6IDIwMHB4OyIKKy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLgorUEFTUyBtdXRh
dGlvbnMgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgYSBuby1vcCBzdHlsZSBwcm9wZXJ0eSBtdXRh
dGlvbiBkb2VzIG5vdCBjcmVhdGUgTXV0YXRpb24gUmVjb3Jkcy4KK1BBU1MgbXV0YXRpb25zIGlz
IG51bGwKKworVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSB0aHJvdWdoIGFuIGF0dHIg
bm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMg
MQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMF0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRh
dGEtdGVzdCIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCisKK1Rlc3QgdGhh
dCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQgdG8gYW4gYXR0ciBu
b2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAx
CitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZGF0
YS10ZXN0IgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKKworVGVzdCB0aGF0
IG11dGF0aW5nIHZpYSBzZXRBdHRyaWJ1dGVOb2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMK
K1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMg
ZGl2CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0IgorUEFTUyBtdXRhdGlvbnNbMF0ub2xk
VmFsdWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0
YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lIGlzICJkYXRhLW90aGVyIgorUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgbnVs
bAorUEFTUyBtdXRhdGlvbnNbMl0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMl0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImlk
IgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgIm15SWQiCisKK1Rlc3QgdGhhdCBzZXRB
dHRyaWJ1dGUgb24gYW4gYXR0cmlidXRlIHdpdGggYW4gZXhpc3RpbmcgQXR0ciBkZWxpdmVycyBt
dXRhdGlvbiByZWNvcmRzCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlv
bnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRl
cyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKK1BBU1Mg
bXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCisKK1Rlc3QgdGhhdCBzZXROYW1lZEl0ZW0g
YW5kIHJlbW92ZU5hbWVkSXRlbSBkZWxpdmVyIG11dGF0aW9uIHJlY29yZHMKK1BBU1MgbXV0YXRp
b25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11
dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZSBpcyAiZGF0YS10ZXN0IgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZv
byIKK1BBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzFdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJk
YXRhLXRlc3QiCitQQVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiYmFyIgorCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRy
aWJ1dGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFiYWU4NGM2ZjU1OWFmZTJkOTcyZjY0MGFkYzQ1MWJl
MzUzYzE5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKQEAgLTAsMCArMSwxMDA4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3ZhciBtdXRhdGlvbnMsIG11dGF0aW9uczIsIG11dGF0aW9uc1dpdGhPbGRWYWx1ZTsKK3ZhciBj
YWxsczsKK3ZhciBkaXY7CisKK2Z1bmN0aW9uIHRlc3RCYXNpYygpIHsKKyAgICB2YXIgZGl2Owor
ICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1
ZygnVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGF0dHJpYnV0ZSBvYnNlcnZhdGlvbi4nKTsKKwor
ICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2ZvbycpOwor
CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
b2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTog
dHJ1ZSB9KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworICAgICAg
ICBkaXYucmVtb3ZlQXR0cmlidXRlKCdiYXInKTsKKyAgICAgICAgc2V0VGltZW91dChjaGVja0Rp
c2Nvbm5lY3RBbmRNdXRhdGUsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrRGlzY29u
bmVjdEFuZE11dGF0ZSgpIHsKKyAgICAgICAgZGVidWcoJy4uLmNhbiBhdHRyaWJ1dGUgY2hhbmdl
cyBiZSBvYnNlcnZlZCBhdCBhbGwnKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxl
bmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0
cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
JywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWUnLCAnImJhciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAg
ICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9v
JywgJ2JheicpOworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVkQW5kTXV0YXRl
TXVsdGlwbGUsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZlcmVkQW5k
TXV0YXRlTXVsdGlwbGUoKSB7CisgICAgICAgIGRlYnVnKCcuLi5vYnNlcnZlci5kaXNjb25uZWN0
KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxpdmVyeSBvZiBtdXRhdGlvbnMuJyk7CisKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLm9i
c2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoJ2ZvbycsICdiYXQnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2Zvbycp
OworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmlu
aXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5lY3Qg
d29ya3Mgd2l0aCB0aGUgc2FtZSBvYnNlcnZlci4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlw
ZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sx
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFd
LmF0dHJpYnV0ZU5hbWUnLCAnImJhciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sx
XS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBvYnNlcnZlci5kaXNjb25u
ZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9
CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0V3JvbmdUeXBlKCkgeworICAgIHZh
ciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAg
ICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgb2JzZXJ2aW5nIHdpdGhvdXQgc3BlY2lmeWluZyAiYXR0
cmlidXRlcyIgZG9lcyBub3QgcmVzdWx0IGluIGhlYXJpbmcgYWJvdXQgYXR0cmlidXRlIGNoYW5n
ZXMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0
OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBkaXYuc2V0QXR0cmlidXRl
KCdmb28nLCAnYmFyJyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAn
bnVsbCcpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcn
KTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitm
dW5jdGlvbiB0ZXN0TXVsdGlwbGVSZWdpc3RyYXRpb24oKSB7CisgICAgdmFyIGRpdjsKKyAgICB2
YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rl
c3RpbmcgdGhhdCByZS1vYnNlcnZpbmcgdGhlIHNhbWUgbm9kZSB3aXRoIHRoZSBzYW1lIG9ic2Vy
dmVyIGhhcyB0aGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgb3B0aW9ucy4nKTsKKworCQljYWxs
cyA9IDA7CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisJ
CQljYWxscysrOworICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwg
eyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOworICAgICAgICBkaXYuc2V0
QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tEaXNjb25u
ZWN0QW5kTXV0YXRlLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Rpc2Nvbm5lY3RB
bmRNdXRhdGUoKSB7CisgICAgICAgIHNob3VsZEJlKCdjYWxscycsICcxJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hh
cmFjdGVyRGF0YTogdHJ1ZSB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hp
bGRMaXN0OiB0cnVlIH0pOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7
CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
aW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOworICAgICAg
ICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVu
TmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0TXVs
dGlwbGVPYnNlcnZlcnMoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisgICAg
dmFyIG9ic2VydmVyMjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1Zygn
VGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdp
dmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuJyk7CisgICAgICAgIG11dGF0aW9u
cyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0p
IHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworICAgICAgICBvYnNl
cnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAg
ICAgICBtdXRhdGlvbnMyID0gbTsKKyAgICAgICAgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIG9ic2VydmVyMi5vYnNlcnZl
KGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdm
b28nLCAnYmFyJyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAn
ImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczIubGVuZ3RoJywgJzEnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwor
ICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIG9ic2VydmVyMi5kaXNjb25u
ZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9
CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0TmFtZXNwYWNlVVJJKCkgeworICAg
IHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7Cisg
ICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgImF0dHJpYnV0ZU5hbWVzcGFjZSIgdmFsdWUgaXMg
ZGVsaXZlcmVkIHByb3Blcmx5LicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIg
PSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBt
dXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUgfSk7CisgICAgICAgIGRpdi5z
ZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy5mb28uY29tL2JhcicsICdmb28nLCAnYmFyJyk7Cisg
ICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsgICAgCisgICAgfQorCisgICAgZnVuY3Rpb24g
ZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJyJodHRw
Oi8vd3d3LmZvby5jb20vYmFyIicpOyAgICAgICAgCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0K
KworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQcm9wZXJ0eUFjY2VzcygpIHsKKyAg
ICB2YXIgaW1nLCBhOworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
eworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG1vZGlmaWNhdGlvbnMgdG8gbm9kZSBwcm9w
ZXJ0aWVzIHdoaWNoIGRlbGVnYXRlIHRvIGF0dHJpYnV0ZSBzdG9yYWdlIGRlbGl2ZXIgbXV0YXRp
b25zLicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBpbWcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKKyAgICAgICAgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2EnKTsKKworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOwor
CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoaW1nLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Cisg
ICAgICAgIG9ic2VydmVyLm9ic2VydmUoYSwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOworCisgICAg
ICAgIGltZy5zcmMgPSAnYmF6LnBuZyc7CisgICAgICAgIGEuaHJlZiA9ICdmb28uaHRtbCc7CisK
KyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZp
bmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICcic3JjIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaHJlZiInKTsKKyAg
ICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAg
IHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVz
dE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkKCkgeworICAgIHZhciBkaXYsIGRpdjIsIHN1
YkRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisgICAgdmFyIGxpc3RlbmVyOworCisgICAgZnVuY3Rp
b24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIG11dGF0aW9uIHJlY29yZHMgYXJl
IGVucXVldWVkIGZvciBhdHRyaWJ1dGVzIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZpZWQgaXMgZGlz
cGF0Y2hlZC4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsK
KyAgICAgICAgZGl2MiA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpOworCisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMg
PSBtOworICAgICAgICB9KTsKKworICAgICAgICBsaXN0ZW5lciA9IGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgICAgIGRpdjIuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF0Jyk7CisgICAgICAgIH0KKwor
ICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgbGlzdGVu
ZXIpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHN1YkRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVl
IH0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdjIsIHsgYXR0cmlidXRlczogdHJ1ZSB9
KTsKKworICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CisKKyAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmF6IicpOworICAgICAgICBk
aXYucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgbGlzdGVuZXIpOwor
ICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPbGRWYWx1ZSgpIHsK
KyAgICB2YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
eworICAgICAgICBkZWJ1ZygnVGVzdGluZyBiYXNpYyBvbGRWYWx1ZSBkZWxpdmVyeS4nKTsKKyAg
ICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JhcicsICdib28nKTsKKyAg
ICAgICAgCisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRp
b25zOworICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmli
dXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIGRpdi5zZXRB
dHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywg
J2JheicpOworICAgICAgICBkaXYucmVtb3ZlQXR0cmlidXRlKCdiYXInKTsKKyAgICAgICAgZGl2
LnJlbW92ZUF0dHJpYnV0ZSgnbm9uLWV4aXN0YW50Jyk7CisgICAgICAgIHNldFRpbWVvdXQoZmlu
aXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5vbGRWYWx1ZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
dHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5h
dHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
b2xkVmFsdWUnLCAnImJhciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBl
JywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJp
YnV0ZU5hbWUnLCAnImJhciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5vbGRW
YWx1ZScsICciYm9vIicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAg
IGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgp
OworfQorCitmdW5jdGlvbiB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCgpIHsKKyAgICB2YXIgZGl2
OworICAgIHZhciBvYnNlcnZlcldpdGhPbGRWYWx1ZTsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAg
ICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBvbGRWYWx1
ZSBpcyBkZWxpdmVyZWQgYXMgcmVxdWVzdGVkIChvciBub3QpLicpOworICAgICAgICBtdXRhdGlv
bnNXaXRoT2xkVmFsdWUgPSBudWxsOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0
dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworICAgICAgICBvYnNlcnZlcldpdGhPbGRWYWx1ZSA9IG5l
dyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAg
ICAgd2luZG93Lm11dGF0aW9uc1dpdGhPbGRWYWx1ZSA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7
CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwor
ICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXJXaXRoT2xkVmFsdWUub2JzZXJ2ZShkaXYsIHsg
YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIG9i
c2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXonKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1dpdGhPbGRWYWx1ZS5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zV2l0aE9sZFZhbHVlWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLm9sZFZhbHVlJywg
JyJiYXIiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7CisgICAgICAg
IG9ic2VydmVyV2l0aE9sZFZhbHVlLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7Cisg
ICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE9sZFZhbHVlVW5pb25NdWx0
aXBsZU9ic2VydmF0aW9ucygpIHsKKyAgICB2YXIgZGl2OworICAgIHZhciBzcGFuOworICAgIHZh
ciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnQW4g
b2JzZXJ2ZXIgd2l0aCBtdWx0aXBsZSBvYnNlcnZhdGlvbnMgd2lsbCBnZXQgYXR0cmlidXRlT2xk
VmFsdWUgaWYgYW55IGVudHJpZXMgcmVxdWVzdCBpdC4nKTsKKyAgICAgICAgbXV0YXRpb25zID0g
bnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIHNwYW4gPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bhbicp
KTsKKyAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgb2Jz
ZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsK
KyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOwor
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1
dGVPbGRWYWx1ZTogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2Jz
ZXJ2ZShzcGFuLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIHNwYW4uc2V0QXR0cmli
dXRlKCdmb28nLCAnYmF6Jyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMu
bGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJh
dHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScs
ICciYmFyIicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVn
KCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQor
CitmdW5jdGlvbiB0ZXN0SURMQXR0cmlidXRlKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9i
c2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5n
IHNldHRpbmcgYW4gYXR0cmlidXRlIHZpYSByZWZsZWN0ZWQgSURMIGF0dHJpYnV0ZS4nKTsKKyAg
ICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0g
bXV0YXRpb25zOworICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsg
YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIGRp
di5pZCA9ICdmb28nOworICAgICAgICBkaXYuaWQgPSAnYmFyJzsKKyAgICAgICAgZGl2LmlkID0g
bnVsbDsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnImZvbyInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzJdLm9sZFZhbHVlJywgJyJiYXIiJyk7CisgICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVz
dCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RBdHRyaWJ1dGVG
aWx0ZXIoKSB7CisgICAgdmFyIGRpdiwgcGF0aDsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBhdHRyaWJ1dGVG
aWx0ZXIgd29ya3MgYXMgZXhwZWN0ZWQgYW5kIG9ic2VydmVzIGNhc2Ugd2l0aCBIVE1MIGVsZW1l
bnRzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0
YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0
ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydmb28nLCAnYmFyJywgJ2Jvb00nXSB9KTsKKyAg
ICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2ZvbycpOworICAgICAgICBkaXYuc2V0QXR0
cmlidXRlKCdiYXInLCAnYmFyJyk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JheicsICdi
YXonKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnQk9PbScsICdib29tJyk7CisKKyAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKKyAgICAgICAgZGVidWcoJy4uLm9ubHkgZm9vIGFuZCBiYXIgc2hvdWxkIGJlIHJlY2VpdmVk
LicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxs
Jyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RBdHRyaWJ1dGVGaWx0ZXJTdWJ0cmVlKCkgeworICAgIHZhciBkaXYsIGRpdjIsIGRp
djM7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAg
IGRlYnVnKCdUZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBhdHRyaWJ1dGVGaWx0ZXIgd2hlbiB0aGUg
c2FtZSBvYnNlcnZlciBvYnNlcnZlcyBhdCBtdWx0aXBsZSBub2RlcyBpbiBhIHN1YnRyZWUgd2l0
aCBkaWZmZXJlbnQgZmlsdGVyIG9wdGlvbnMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2MiA9IGRp
di5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIGRp
djMgPSBkaXYyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKwor
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVl
OiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnZm9vJywgJ2JhciddIH0pOworICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdjIsIHsgYXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0
cmlidXRlRmlsdGVyOiBbJ2JhcicsICdiYXQnXSB9KTsKKworICAgICAgICBkaXYzLnNldEF0dHJp
YnV0ZSgnZm9vJywgJ2ZvbycpOworICAgICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmFyJywgJ2Jh
cicpOworICAgICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmF0JywgJ2JhdCcpOworICAgICAgICBk
aXYzLnNldEF0dHJpYnV0ZSgnYmF6JywgJ2JheicpOworCisgICAgICAgIHNldFRpbWVvdXQoY2hl
Y2tBbmRPYnNlcnZlQWxsLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0FuZE9ic2Vy
dmVBbGwoKSB7CisgICAgICAgIGRlYnVnKCcuLi5vbmx5IGZvbywgYmFyICYgYmF0IHNob3VsZCBi
ZSByZWNlaXZlZC4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcz
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28i
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywg
J251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAn
ImJhciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0
dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFt
ZScsICciYmF0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5h
bWVzcGFjZScsICdudWxsJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYyLCB7IGF0
dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CisgICAgICAgIGRpdjMuc2V0QXR0cmli
dXRlKCdiYXInLCAnYmFyJyk7CisgICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdiYXQnLCAnYmF0
Jyk7CisgICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF6Jyk7CisKKyAgICAgICAg
c2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsK
KyAgICAgICAgZGVidWcoJy4uLmJhciwgYmF0ICYgYmF6IHNob3VsZCBhbGwgYmUgcmVjZWl2ZWQu
Jyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJiYXQiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImJheiIn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAn
bnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWco
JycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRWxlbWVudCgpIHsKKyAgICB2YXIg
cGF0aDsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAg
ICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBzZXR0aW5nIGFuIGF0dHJpYnV0ZUZpbHRlciBmaWx0ZXJz
IG91dCBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAg
ICBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZycsICdwYXRoJyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUocGF0aCwgeyBhdHRyaWJ1
dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsncGF0aExlbmd0aCddIH0pOworICAgICAgICBw
YXRoLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdwYXRoTGVu
Z3RoJywgJzIwMCcpOworCisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIGRlYnVnKCcuLi5wYXRoTGVuZ3RoIHNo
b3VsZCBub3QgYmUgcmVjZWl2ZWQuJyk7CisKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdtdXRhdGlv
bnMnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7
CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVu
Y3Rpb24gdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxEb2N1bWVudCgpIHsKKyAgICB2YXIgc3Zn
RG9jLCBkaXYsIHBhdGg7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQo
KSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgYXR0cmlidXRlRmlsdGVyIHJlc3BlY3Rz
IGNhc2Ugd2l0aCBub24tSFRNTCBlbGVtZW50cy4nKTsKKworICAgICAgICBzdmdEb2MgPSBkb2N1
bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnLCAnc3ZnJywgJ3N2ZycpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAg
ICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IHN2
Z0RvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYs
IHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ0lEJywgJ2lkJywgJ2Jvb00n
XSB9KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnSUQnLCAnSUQnKTsKKyAgICAgICAgZGl2
LnNldEF0dHJpYnV0ZSgnaWQnLCAnaWQnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmF6
JywgJ2JheicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdib29NJywgJ2Jvb20nKTsKKyAg
ICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnQk9PbScsICdib29tJyk7CisKKyAgICAgICAgc2V0VGlt
ZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAg
ICAgZGVidWcoJy4uLm9ubHkgSUQsIGlkLCBib29NIHNob3VsZCBiZSByZWNlaXZlZC4nKTsKKwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJJRCInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImJvb00iJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsK
KworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAg
ICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlv
biB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcygpIHsKKyAgICB2YXIgZGl2LCBwYXRo
OworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBk
ZWJ1ZygnVGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBwcm9wZXJ0eSBk
aXNwYXRjaGVzIE11dGF0aW9uIFJlY29yZHMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0
dHJpYnV0ZSgnc3R5bGUnLCAnY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OycpOworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOworICAgICAgICBk
aXYuc3R5bGUuY29sb3IgPSAncmVkJzsKKyAgICAgICAgZGl2LnN0eWxlLndpZHRoID0gJzIwMHB4
JzsKKyAgICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJ2JsdWUnOworCisgICAgICAgIHNldFRpbWVv
dXQoY2hlY2tBbmRDb250aW51ZSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0ub2xkVmFsdWUnLCAnbnVsbCcpOworCisgICAgICAg
IG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdi5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7Cisg
ICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5p
c2goKSB7CisgICAgICAgIGRlYnVnKCcuLi5tdXRhdGlvbiByZWNvcmQgY3JlYXRlZC4nKTsKKwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsKKworICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0U3R5bGVBdHRyaWJ1
dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlKCkgeworICAgIHZhciBkaXYsIHBhdGg7CisgICAgdmFy
IG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0
aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1lbnRzIHN0eWxlIHByb3BlcnR5IGRpc3BhdGNoZXMg
TXV0YXRpb24gUmVjb3JkcyB3aXRoIGNvcnJlY3Qgb2xkVmFsdWVzLicpOworCisgICAgICAgIG11
dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiB5ZWxsb3c7IHdpZHRoOiAxMDBw
eDsnKTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwg
YXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdy
ZWQnOworICAgICAgICBkaXYuc3R5bGUud2lkdGggPSAnMjAwcHgnOworICAgICAgICBkaXYuc3R5
bGUuY29sb3IgPSAnYmx1ZSc7CisKKyAgICAgICAgc2V0VGltZW91dChjaGVja0FuZENvbnRpbnVl
LCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0FuZENvbnRpbnVlKCkgeworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OyIn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxl
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJjb2xvcjog
cmVkOyB3aWR0aDogMTAwcHg7IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0
cmlidXRlTmFtZScsICcic3R5bGUiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0u
b2xkVmFsdWUnLCAnImNvbG9yOiByZWQ7IHdpZHRoOiAyMDBweDsiJyk7CisKKyAgICAgICAgbXV0
YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTsKKyAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKKyAgICAgICAgZGVidWcoJy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLicpOworCisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOwor
ICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUF0dHJpYnV0ZVBy
b3BlcnR5QWNjZXNzSWdub3JlTm9vcCgpIHsKKyAgICB2YXIgZGl2LCBwYXRoOworICAgIHZhciBv
YnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGlu
ZyB0aGF0IGEgbm8tb3Agc3R5bGUgcHJvcGVydHkgbXV0YXRpb24gZG9lcyBub3QgY3JlYXRlIE11
dGF0aW9uIFJlY29yZHMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAg
b2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAg
ICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAgICBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnc3R5
bGUnLCAnY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OycpOworICAgICAgICBvYnNlcnZlci5v
YnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOworICAgICAgICBkaXYuc3R5bGUucmVt
b3ZlUHJvcGVydHkoJ2hlaWdodCcpOworCisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAg
ICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSgpIHsKKyAg
ICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWco
J1Rlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgdGhyb3VnaCBhbiBhdHRyIG5vZGUgZGVs
aXZlcnMgbXV0YXRpb24gcmVjb3JkcycpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7Cisg
ICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0
YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAg
ICAgICB9KTsKKworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOworICAgICAgICBv
YnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1
ZTogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXNbJ2RhdGEtdGVzdCddLnZhbHVlID0g
J2Jhcic7CisKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAn
MScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCIn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOwor
CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAg
ICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVDaGlsZCgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisK
KyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBtdXRhdGlu
ZyBhbiBhdHRyaWJ1dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQgdG8gYW4gYXR0ciBub2RlIGRlbGl2
ZXJzIG11dGF0aW9uIHJlY29yZHMnKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAg
ICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0
aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28nKTsKKyAgICAgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6
IHRydWUgfSk7CisgICAgICAgIGRpdi5hdHRyaWJ1dGVzWydkYXRhLXRlc3QnXS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYmFyJykpOworCisgICAgICAgIHNldFRpbWVvdXQo
ZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKKworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0
KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisK
KyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0QW5kUmVtb3ZlQXR0cmlidXRlTm9k
ZSgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAg
ICAgZGVidWcoJ1Rlc3QgdGhhdCBtdXRhdGluZyB2aWEgc2V0QXR0cmlidXRlTm9kZSBkZWxpdmVy
cyBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAg
ICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlv
bnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAg
IH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
ICAgICBkaXYuaWQgPSAnbXlJZCc7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVz
dCcsICdmb28nKTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczog
dHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIHZhciBhdHRyID0gZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlKCdkYXRhLXRlc3QnKTsKKyAgICAgICAgYXR0ci52YWx1ZSA9
ICdiYXInOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKKyAgICAgICAgYXR0
ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS1vdGhlcicpOworICAgICAgICBhdHRy
LnZhbHVlID0gJ2Jheic7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOworICAg
ICAgICBkaXYucmVtb3ZlQXR0cmlidXRlTm9kZShkaXYuYXR0cmlidXRlc1snaWQnXSk7CisKKyAg
ICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlz
aCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtb3RoZXIiJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzJdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzJdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzJdLm9sZFZhbHVlJywgJyJteUlkIicpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3Qo
KTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKwor
ICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNaXhlZE5vZGVBbmRFbGVtZW50T3BlcmF0
aW9ucygpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAg
ICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBzZXRBdHRyaWJ1dGUgb24gYW4gYXR0cmlidXRlIHdpdGgg
YW4gZXhpc3RpbmcgQXR0ciBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlv
bnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICB2YXIgYXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0
dHJpYnV0ZSgnZGF0YS10ZXN0Jyk7CisgICAgICAgIGF0dHIudmFsdWUgPSAnZm9vJzsKKyAgICAg
ICAgZGl2LnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUo
ZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOworICAg
ICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRlc3QnLCAnYmFyJyk7CisKKyAgICAgICAgc2V0
VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworCisgICAgICAgIG9ic2VydmVyLmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOwor
ICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3ROYW1lZE5vZGVNYXBPcGVy
YXRpb25zKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewor
ICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IHNldE5hbWVkSXRlbSBhbmQgcmVtb3ZlTmFtZWRJdGVt
IGRlbGl2ZXIgbXV0YXRpb24gcmVjb3JkcycpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7
CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwor
ICAgICAgICB9KTsKKworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRW
YWx1ZTogdHJ1ZSB9KTsKKyAgICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1
dGUoJ2RhdGEtdGVzdCcpOworICAgICAgICBhdHRyLnZhbHVlID0gJ2Jhcic7CisgICAgICAgIGRp
di5hdHRyaWJ1dGVzLnNldE5hbWVkSXRlbShhdHRyKTsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXMu
cmVtb3ZlTmFtZWRJdGVtKCdkYXRhLXRlc3QnKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlz
aCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0udGFyZ2V0JywgJ2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZScsICciZGF0YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
Lm9sZFZhbHVlJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFy
Z2V0JywgJ2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0
dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFt
ZScsICciZGF0YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZh
bHVlJywgJyJiYXIiJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAg
ICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQo
KTsKK30KKwordmFyIHRlc3RzID0gWworICAgIHRlc3RCYXNpYywKKyAgICB0ZXN0V3JvbmdUeXBl
LAorICAgIHRlc3RNdWx0aXBsZVJlZ2lzdHJhdGlvbiwKKyAgICB0ZXN0TXVsdGlwbGVPYnNlcnZl
cnMsCisgICAgdGVzdE5hbWVzcGFjZVVSSSwKKyAgICB0ZXN0UHJvcGVydHlBY2Nlc3MsCisgICAg
dGVzdE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkLAorICAgIHRlc3RPbGRWYWx1ZSwKKyAg
ICB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCwKKyAgICB0ZXN0T2xkVmFsdWVVbmlvbk11bHRpcGxl
T2JzZXJ2YXRpb25zLAorICAgIHRlc3RJRExBdHRyaWJ1dGUsCisgICAgdGVzdEF0dHJpYnV0ZUZp
bHRlciwKKyAgICB0ZXN0QXR0cmlidXRlRmlsdGVyU3VidHJlZSwKKyAgICB0ZXN0QXR0cmlidXRl
RmlsdGVyTm9uSFRNTEVsZW1lbnQsCisgICAgdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxEb2N1
bWVudCwKKyAgICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcywKKyAgICB0ZXN0U3R5
bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlLAorICAgIHRlc3RTdHlsZUF0dHJpYnV0
ZVByb3BlcnR5QWNjZXNzSWdub3JlTm9vcCwKKyAgICB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJOb2Rl
VmFsdWUsCisgICAgdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZUNoaWxkLAorICAgIHRlc3RTZXRB
bmRSZW1vdmVBdHRyaWJ1dGVOb2RlLAorICAgIHRlc3RNaXhlZE5vZGVBbmRFbGVtZW50T3BlcmF0
aW9ucywKKyAgICB0ZXN0TmFtZWROb2RlTWFwT3BlcmF0aW9ucworXTsKK3ZhciB0ZXN0SW5kZXgg
PSAwOworCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVz
dHMubGVuZ3RoKQorICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAgICBlbHNlCisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdCBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyLm9ic2VydmUgb24gYXR0cmlidXRlcycpOworCitpZiAoIXdpbmRvdy5XZWJLaXRN
dXRhdGlvbk9ic2VydmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFC
TEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1bk5leHRUZXN0KCk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZGZmM2I1NWQyNzZjYzE1YTY4MzliZWQ3ZDk3YjM4MmM2ZjdhZGZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9v
YnNlcnZlLWNoYXJhY3RlcmRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjEgQEAKK1Rlc3Qg
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5vYnNlcnZlIG9uIENoYXJhY3RlckRhdGEgbm9kZXMKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBj
aGFyYWN0ZXJEYXRhIG9ic2VydmF0aW9uLgorLi4uY2FuIGNoYXJhY3RlckRhdGEgY2hhbmdlcyBi
ZSBvYnNlcnZlZCBhdCBhbGwKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0
aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0
IGlzIGNoYXJEYXRhTm9kZQorLi4ub2JzZXJ2ZXIuZGlzY29ubmVjdCgpIHNob3VsZCBwcmV2ZW50
IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRpb25zLgorUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAor
Li4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5lY3Qgd29ya3Mgd2l0aCB0aGUgc2FtZSBvYnNl
cnZlci4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJjaGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGNoYXJEYXRh
Tm9kZQorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0
YXRpb25zWzFdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKKworVGVzdGluZyB0aGF0IG9ic2Vydmlu
ZyB3aXRob3V0IHNwZWNpZnlpbmcgImNoYXJhY3RlckRhdGEiIGRvZXMgbm90IHJlc3VsdCBpbiBo
ZWFyaW5nIGFib3V0IGNoYXJhY3RlckRhdGEgY2hhbmdlcy4KK1BBU1MgbXV0YXRpb25zIGlzIG51
bGwKKworVGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0
byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuCitQQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIK
K1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKK1BBU1MgbXV0YXRpb25z
Mi5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnMyWzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEi
CitQQVNTIG11dGF0aW9uczJbMF0udGFyZ2V0IGlzIGNoYXJEYXRhTm9kZQorCitUZXN0aW5nIG11
dGF0aW9uIHJlY29yZHMgYXJlIGVucXVldWVkIGZvciBjaGFyYWN0ZXJEYXRhIGJlZm9yZSBET01T
dWJ0cmVlTW9kaWZpZWQgaXMgZGlzcGF0Y2hlZC4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAy
CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlv
bnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKKworVGVzdGluZyB0aGF0IG9sZFZhbHVlIGlzIHJl
dHVybmVkIHdoZW4gcmVxdWVzdGVkLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1Mg
bXV0YXRpb25zWzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCitQQVNTIG11dGF0aW9uc1swXS50
YXJnZXQgaXMgY2hhckRhdGFOb2RlCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9v
IgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0YXRp
b25zWzFdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKK1BBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVl
IGlzICJiYXIiCisKK1Rlc3RpbmcgdGhhdCBvbGRWYWx1ZSBpcyBkZWxpdmVyZWQgYXMgcmVxdWVz
dGVkIChvciBub3QpLgorUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWUubGVuZ3RoIGlzIDEKK1BB
U1MgbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCitQQVNT
IG11dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS5vbGRWYWx1ZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlv
bnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEi
CitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxsCisKK0FuIG9ic2VydmVyIHdpdGgg
bXVsdGlwbGUgb2JzZXJ2YXRpb25zIHdpbGwgZ2V0IGNoYXJhY3RlckRhdGFPbGRWYWx1ZSBpZiBh
bnkgZW50cmllcyByZXF1ZXN0IGl0LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1Mg
bXV0YXRpb25zWzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCitQQVNTIG11dGF0aW9uc1swXS5v
bGRWYWx1ZSBpcyAiZm9vIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9vYnNlcnZlLWNoYXJhY3RlcmRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzc3ODAzYWI2Mjg5OWEyMjA0MzU0NDNlZTdmMDZhNjViYzRiZWIxYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1jaGFyYWN0
ZXJkYXRhLmh0bWwKQEAgLTAsMCArMSwzMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ZGVzY3JpcHRpb24+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgbXV0YXRpb25zOwordmFyIG11dGF0aW9u
czI7Cit2YXIgbXV0YXRpb25zV2l0aE9sZFZhbHVlOwordmFyIGNhbGxzOwordmFyIGNoYXJEYXRh
Tm9kZTsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9i
c2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5n
IGJhc2ljIGFzcGVjdHMgb2YgY2hhcmFjdGVyRGF0YSBvYnNlcnZhdGlvbi4nKTsKKworICAgICAg
ICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2Zvbyc7CisgICAgICAgIGNoYXJE
YXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07
CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7
Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOworICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQg
PSAnYmFyJzsKKyAgICAgICAgc2V0VGltZW91dChjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUsIDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrRGlzY29ubmVjdEFuZE11dGF0ZSgpIHsKKyAg
ICAgICAgZGVidWcoJy4uLmNhbiBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQg
YWxsJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2NoYXJEYXRhTm9kZScpOwor
CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3Qo
KTsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jheic7CisgICAgICAgIHNl
dFRpbWVvdXQoY2hlY2tOb3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0aXBsZSwgMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tOb3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0aXBsZSgpIHsKKyAg
ICAgICAgZGVidWcoJy4uLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSBzaG91bGQgcHJldmVudCBmdXJ0
aGVyIGRlbGl2ZXJ5IG9mIG11dGF0aW9ucy4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zJywgJ251bGwnKTsKKyAgICAgICAgY2hhckRhdGFOb2RlID0gZG9jdW1lbnQuY3JlYXRlQ29t
bWVudCgpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwgeyBjaGFyYWN0
ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQgPSAnZm9v
JzsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7CisgICAgICAgIHNl
dFRpbWVvdXQoZmluaXNoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAg
ICAgIGRlYnVnKCcuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIgZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRo
ZSBzYW1lIG9ic2VydmVyLicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0
ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdjaGFy
RGF0YU5vZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJjaGFy
YWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdj
aGFyRGF0YU5vZGUnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBk
ZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsK
K30KKworZnVuY3Rpb24gdGVzdFdyb25nVHlwZSgpIHsKKyAgICB2YXIgZGl2OworICAgIHZhciBv
YnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGlu
ZyB0aGF0IG9ic2VydmluZyB3aXRob3V0IHNwZWNpZnlpbmcgImNoYXJhY3RlckRhdGEiIGRvZXMg
bm90IHJlc3VsdCBpbiBoZWFyaW5nIGFib3V0IGNoYXJhY3RlckRhdGEgY2hhbmdlcy4nKTsKKwor
ICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2hlbGxvJzsKKyAgICAg
ICAgY2hhckRhdGFOb2RlID0gZGl2LmZpcnN0Q2hpbGQ7CisgICAgICAgIG9ic2VydmVyID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRp
b25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjaGFyRGF0
YU5vZGUsIHtjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZXM6IHRydWV9KTsKKyAgICAgICAgY2hh
ckRhdGFOb2RlID0gJ2dvb2RieWUnOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBk
ZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsK
K30KKworZnVuY3Rpb24gdGVzdE11bHRpcGxlT2JzZXJ2ZXJzKCkgeworICAgIHZhciBkaXY7Cisg
ICAgdmFyIG9ic2VydmVyOworICAgIHZhciBvYnNlcnZlcjI7CisKKyAgICBmdW5jdGlvbiBzdGFy
dCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtdWx0aXBsZSBvYnNlcnZlcnMgY2Fu
IGJlIHJlZ2lzdGVyZWQgdG8gYSBnaXZlbiBub2RlIGFuZCBib3RoIHJlY2VpdmUgbXV0YXRpb25z
LicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2Zvbyc7Cisg
ICAgICAgIGNoYXJEYXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOworICAgICAgICBvYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11
dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMyID0g
bTsKKyAgICAgICAgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7
Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOworICAgICAgICBvYnNlcnZlcjIub2JzZXJ2ZShjaGFyRGF0
YU5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7CisgICAgICAgIGNoYXJEYXRhTm9kZS50ZXh0
Q29udGVudCA9ICdiYXInOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxl
bmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hh
cmFjdGVyRGF0YSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAn
Y2hhckRhdGFOb2RlJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyLmxlbmd0aCcsICcx
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLnR5cGUnLCAnImNoYXJhY3RlckRh
dGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLnRhcmdldCcsICdjaGFyRGF0
YU5vZGUnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBvYnNlcnZl
cjIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0
KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE9yZGVyaW5nV3J0
RE9NU3VidHJlZU1vZGlmaWVkKCkgeworICAgIHZhciBkaXYsIGRpdjIsIHN1YkRpdjsKKyAgICB2
YXIgb2JzZXJ2ZXI7CisgICAgdmFyIGxpc3RlbmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7
CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIG11dGF0aW9uIHJlY29yZHMgYXJlIGVucXVldWVkIGZv
ciBjaGFyYWN0ZXJEYXRhIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZpZWQgaXMgZGlzcGF0Y2hlZC4n
KTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAg
ZGl2MiA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykpOworCisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHN1YkRpdi50ZXh0Q29udGVudCA9ICdmb28nOwor
ICAgICAgICBjaGFyRGF0YU5vZGUgPSBzdWJEaXYuZmlyc3RDaGlsZDsKKworICAgICAgICBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg
ICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAgICAgIGxpc3RlbmVyID0gZnVu
Y3Rpb24oZSkgeworICAgICAgICAgICAgZGl2Mi5zZXRBdHRyaWJ1dGUoJ2JheicsICdiYXQnKTsK
KyAgICAgICAgfQorCisgICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9k
aWZpZWQnLCBsaXN0ZW5lcik7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2Rl
LCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdjIs
IHthdHRyaWJ1dGVzOiB0cnVlfSk7CisKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50
ID0gJ2Jhcic7CisKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgn
LCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoYXJhY3Rl
ckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmli
dXRlcyInKTsKKyAgICAgICAgZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2Rp
ZmllZCcsIGxpc3RlbmVyKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYp
OworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAg
ICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlv
biB0ZXN0T2xkVmFsdWUoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAg
ICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBvbGRWYWx1
ZSBpcyByZXR1cm5lZCB3aGVuIHJlcXVlc3RlZC4nKTsKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
IGRpdi50ZXh0Q29udGVudCA9ICdmb28nOworICAgICAgICBjaGFyRGF0YU5vZGUgPSBkaXYuZmly
c3RDaGlsZDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRh
dGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9k
ZSwge2NoYXJhY3RlckRhdGE6IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0pOwor
ICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQgPSAnYmFyJzsKKyAgICAgICAgY2hhckRh
dGFOb2RlLnRleHRDb250ZW50ID0gJ2Jheic7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAw
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50
eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5vbGRWYWx1ZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5
cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
dGFyZ2V0JywgJ2NoYXJEYXRhTm9kZScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFd
Lm9sZFZhbHVlJywgJyJiYXIiJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAg
ICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0
YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPbGRWYWx1ZUFzUmVxdWVzdGVkKCkgeworICAgIHZh
ciBkaXY7CisgICAgdmFyIG9ic2VydmVyV2l0aE9sZFZhbHVlOworICAgIHZhciBvYnNlcnZlcjsK
KworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9s
ZFZhbHVlIGlzIGRlbGl2ZXJlZCBhcyByZXF1ZXN0ZWQgKG9yIG5vdCkuJyk7CisgICAgICAgIG11
dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG11dGF0aW9uc1dpdGhPbGRWYWx1ZSA9IG51bGw7Cisg
ICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYu
dGV4dENvbnRlbnQgPSAnZm9vJzsKKyAgICAgICAgY2hhckRhdGFOb2RlID0gZGl2LmZpcnN0Q2hp
bGQ7CisgICAgICAgIG9ic2VydmVyV2l0aE9sZFZhbHVlID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25z
V2l0aE9sZFZhbHVlID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIg
PSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAg
ICBvYnNlcnZlcldpdGhPbGRWYWx1ZS5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRh
dGE6IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0pOworICAgICAgICBvYnNlcnZl
ci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsKKyAgICAgICAg
Y2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7CisgICAgICAgIHNldFRpbWVvdXQoZmlu
aXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNXaXRoT2xkVmFsdWUubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLm9sZFZhbHVlJywgJyJm
b28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJ251bGwnKTsKKyAgICAgICAg
b2JzZXJ2ZXJXaXRoT2xkVmFsdWUuZGlzY29ubmVjdCgpOworICAgICAgICBvYnNlcnZlci5kaXNj
b25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAg
ICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0T2xkVmFsdWVVbmlvbk11bHRp
cGxlT2JzZXJ2YXRpb25zKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisg
ICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdBbiBvYnNlcnZlciB3aXRoIG11
bHRpcGxlIG9ic2VydmF0aW9ucyB3aWxsIGdldCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgaWYgYW55
IGVudHJpZXMgcmVxdWVzdCBpdC4nKTsKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAg
ICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi50ZXh0
Q29udGVudCA9ICdmb28nOworICAgICAgICBjaGFyRGF0YU5vZGUgPSBkaXYuZmlyc3RDaGlsZDsK
KyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
dXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cisg
ICAgICAgIH0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoYXJhY3RlckRhdGE6
IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOworICAg
ICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9
KTsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7CisgICAgICAgIHNl
dFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7CisgICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK3ZhciB0ZXN0cyA9IFsKKyAgICB0ZXN0QmFz
aWMsCisgICAgdGVzdFdyb25nVHlwZSwKKyAgICB0ZXN0TXVsdGlwbGVPYnNlcnZlcnMsCisgICAg
dGVzdE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkLAorICAgIHRlc3RPbGRWYWx1ZSwKKyAg
ICB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCwKKyAgICB0ZXN0T2xkVmFsdWVVbmlvbk11bHRpcGxl
T2JzZXJ2YXRpb25zCitdOwordmFyIHRlc3RJbmRleCA9IDA7CisKK2Z1bmN0aW9uIHJ1bk5leHRU
ZXN0KCkgeworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpCisgICAgICAgIHRlc3Rz
W3Rlc3RJbmRleCsrXSgpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K2Rlc2NyaXB0aW9uKCdUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBDaGFy
YWN0ZXJEYXRhIG5vZGVzJyk7CisKK2lmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIp
CisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9vYnNlcnZlLWNoaWxkTGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hpbGRMaXN0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kN2JiMjc2NDJmMWQ0NmJlZmJjMmQwMGZiMWFlNTlkOGUwNzdkMjBhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZl
LWNoaWxkTGlzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5NCBAQAorVGVzdCBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyLm9ic2VydmUgb24gYXR0cmlidXRlcy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjaGlsZExpc3Qgb2JzZXJ2YXRp
b24uCisuLi5jYW4gY2hpbGRMaXN0IGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsCitQQVNTIG11
dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0
IgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlv
bnNbMF0uYWRkZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MQorLi4ub2JzZXJ2ZXIuZGlzY29ubmVj
dCgpIHNob3VsZCBwcmV2ZW50IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRpb25zLgorUEFTUyBt
dXRhdGlvbnMgaXMgbnVsbAorLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5lY3Qgd29ya3Mg
d2l0aCB0aGUgc2FtZSBvYnNlcnZlci4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNT
IG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1swXS5yZW1v
dmVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBp
cyByZW1vdmVkRGl2MQorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFT
UyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1sx
XS5yZW1vdmVkTm9kZXNbMF0gaXMgcmVtb3ZlZERpdjIKKworVGVzdGluZyB0aGF0IG9ic2Vydmlu
ZyB3aXRob3V0IHNwZWNpZnlpbmcgImNoaWxkTGlzdCIgZG9lcyBub3QgcmVzdWx0IGluIGhlYXJp
bmcgYWJvdXQgY2hpbGRMaXN0IGNoYW5nZXMuCitQQVNTIG11dGF0aW9ucyBpcyBudWxsCisKK1Rl
c3RpbmcgdGhhdCByZS1vYnNlcnZpbmcgdGhlIHNhbWUgbm9kZSB3aXRoIHRoZSBzYW1lIG9ic2Vy
dmVyIGhhcyB0aGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgb3B0aW9ucy4KK1BBU1MgY2FsbHMg
aXMgMQorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUg
aXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zIGlzIG51bGwKKworVGVzdGluZyB0aGF0IG11
bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdpdmVuIG5vZGUgYW5kIGJv
dGggcmVjZWl2ZSBtdXRhdGlvbnMuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnMyLmxlbmd0aCBp
cyAxCitQQVNTIG11dGF0aW9uczJbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgorCitUZXN0aW5nIHRo
YXQgaW5uZXJUZXh0IGFuZCBpbm5lckhUTUwgYWx3YXlzIHJlc3VsdCBpbiBhIHNpbmdsZSBjaGls
ZExpc3QgbXV0YXRpb24uCisuLi5pbm5lckhUTUwKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAx
CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sw
XS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAzCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBd
IGlzIGFkZGVkRGl2MQorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXSBpcyBhZGRlZERp
djIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMl0gaXMgYWRkZWREaXYzCitQQVNTIG11
dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnJl
bW92ZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MQorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5v
ZGVzWzFdIGlzIHJlbW92ZWREaXYyCisuLi5pbm5lclRleHQKK1BBU1MgbXV0YXRpb25zLmxlbmd0
aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0
aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVk
Tm9kZXMubGVuZ3RoIGlzIDMKKworVGVzdGluZyB0aGF0IHJlcGxhY2VDaGlsZCByZXN1bHRzIGlu
IG1pbmltYWwgY2hpbGRMaXN0IG11dGF0aW9ucy4KKy4uLnNpbXBsZSByZXBsYWNlIGNoaWxkCitQ
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hp
bGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXSBpcyBhZGRlZERpdjEKK1BBU1MgbXV0YXRpb25zWzBd
LnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVz
WzBdIGlzIHJlbW92ZWREaXYxCisuLi5yZXBsYWNlIHdpdGggRG9jdW1lbnRGcmFnbWVudAorUEFT
UyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxk
TGlzdCIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0
YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0gaXMgYWRkZWREaXYxCitQQVNTIG11dGF0aW9uc1swXS5h
ZGRlZE5vZGVzWzFdIGlzIGFkZGVkRGl2MgorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVz
Lmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0gaXMgcmVtb3Zl
ZERpdjEKKworVGVzdGluZyB0aGF0IGluc2VydEJlZm9yZSByZXN1bHRzIGluIG1pbmltYWwgY2hp
bGRMaXN0IG11dGF0aW9ucy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0
aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVz
Lmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdIGlzIGFkZGVkRGl2
MQorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXSBpcyBhZGRlZERpdjIKK1BBU1MgbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0aW5nIHRoYXQgYXBwZW5k
Q2hpbGQgcmVzdWx0cyBpbiBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMuCitQQVNTIG11dGF0
aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0Igor
UEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNb
MF0uYWRkZWROb2Rlc1swXSBpcyBhZGRlZERpdjEKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXNbMV0gaXMgYWRkZWREaXYyCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
IGlzIDAKKworU2V0dGluZyBhbiBlbXB0eSBjaGlsZGxpc3QgdG8gdGhlIGVtcHR5IHN0cmluZyB3
aXRoIGlubmVySFRNTCBzaG91bGQgbm90IGFzc2VydC4KK1BBU1MgbXV0YXRpb25zIGlzIG51bGwK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1j
aGlsZExpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2Jz
ZXJ2ZS1jaGlsZExpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjIxZmMzMDk4MDQxMTM5MjYxM2E2YTI5
MDM3NzhlZjk5MDY0MjI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWNoaWxkTGlzdC5odG1sCkBAIC0wLDAgKzEsNDI3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ZGVzY3JpcHRpb24+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Cit2YXIgbXV0YXRpb25zLCBtdXRhdGlvbnMyOwordmFyIGNhbGxzOwor
dmFyIGRpdiwgcmVtb3ZlZERpdjEsIHJlbW92ZWREaXYyLCBhZGRlZERpdjEsIGFkZGVkRGl2Miwg
YWRkZWREaXYzOworCitmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2
YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rl
c3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjaGlsZExpc3Qgb2JzZXJ2YXRpb24uJyk7CisKKyAgICAg
ICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOworICAg
ICAgICByZW1vdmVkRGl2MSA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKSk7CisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlLCAw
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUoKSB7Cisg
ICAgICAgIGRlYnVnKCcuLi5jYW4gY2hpbGRMaXN0IGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxs
Jyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXScsICdyZW1vdmVkRGl2MScpOwor
CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3Qo
KTsKKyAgICAgICAgcmVtb3ZlZERpdjEgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpOworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVkQW5k
TXV0YXRlTXVsdGlwbGUsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZl
cmVkQW5kTXV0YXRlTXVsdGlwbGUoKSB7CisgICAgICAgIGRlYnVnKCcuLi5vYnNlcnZlci5kaXNj
b25uZWN0KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxpdmVyeSBvZiBtdXRhdGlvbnMuJyk7
CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisgICAgICAgIG9ic2Vy
dmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKKyAgICAgICAgcmVtb3ZlZERp
djEgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpOworICAgICAgICByZW1vdmVkRGl2
MiA9IGRpdi5yZW1vdmVDaGlsZChkaXYuZmlyc3RDaGlsZCk7CisgICAgICAgIHNldFRpbWVvdXQo
ZmluaXNoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIGRlYnVn
KCcuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIgZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9i
c2VydmVyLicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdJywgJ3JlbW92
ZWREaXYxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciY2hpbGRM
aXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5n
dGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1sw
XScsICdyZW1vdmVkRGl2MicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAg
ICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFy
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0V3JvbmdUeXBlKCkgeworICAgIHZhciBkaXY7CisgICAg
dmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdU
ZXN0aW5nIHRoYXQgb2JzZXJ2aW5nIHdpdGhvdXQgc3BlY2lmeWluZyAiY2hpbGRMaXN0IiBkb2Vz
IG5vdCByZXN1bHQgaW4gaGVhcmluZyBhYm91dCBjaGlsZExpc3QgY2hhbmdlcy4nKTsKKworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsK
KworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGFy
YWN0ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
JywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1
ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30K
KworZnVuY3Rpb24gdGVzdE11bHRpcGxlUmVnaXN0cmF0aW9uKCkgeworICAgIHZhciBkaXY7Cisg
ICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVn
KCdUZXN0aW5nIHRoYXQgcmUtb2JzZXJ2aW5nIHRoZSBzYW1lIG5vZGUgd2l0aCB0aGUgc2FtZSBv
YnNlcnZlciBoYXMgdGhlIGVmZmVjdCBvZiByZXNldHRpbmcgdGhlIG9wdGlvbnMuJyk7CisKKyAg
ICAgICAgY2FsbHMgPSAwOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBtdXRhdGlv
bnMgPSBtOworICAgICAgICAgICAgY2FsbHMrKzsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVl
IH0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUgfSk7
CisgICAgICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7
CisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlLCAwKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUoKSB7CisgICAgICAgIHNo
b3VsZEJlKCdjYWxscycsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExp
c3QiJyk7CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKKyAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKKyAgICAgICAg
ZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAg
c2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZU9ic2Vy
dmVycygpIHsKKyAgICB2YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKyAgICB2YXIgb2JzZXJ2
ZXIyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRo
YXQgbXVsdGlwbGUgb2JzZXJ2ZXJzIGNhbiBiZSByZWdpc3RlcmVkIHRvIGEgZ2l2ZW4gbm9kZSBh
bmQgYm90aCByZWNlaXZlIG11dGF0aW9ucy4nKTsKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
KyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAg
ICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisgICAgICAgIG9ic2VydmVyMiA9IG5l
dyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0
aW9uczIgPSBtOworICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsg
Y2hpbGRMaXN0OiB0cnVlIH0pOworICAgICAgICBvYnNlcnZlcjIub2JzZXJ2ZShkaXYsIHsgY2hp
bGRMaXN0OiB0cnVlIH0pOworICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxl
bmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hp
bGRMaXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMi5sZW5ndGgnLCAnMScpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Cisg
ICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgb2JzZXJ2ZXIyLmRpc2Nvbm5l
Y3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0K
KworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbm5lckhUTUxBbmRJbm5lclRleHQo
KSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFy
dCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBpbm5lclRleHQgYW5kIGlubmVySFRN
TCBhbHdheXMgcmVzdWx0IGluIGEgc2luZ2xlIGNoaWxkTGlzdCBtdXRhdGlvbi4nKTsKKworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8c3Bhbj5Gb288L3NwYW4+PGRp
dj5CYXI8L2Rpdj4nOworICAgICAgICByZW1vdmVkRGl2MSA9IGRpdi5maXJzdENoaWxkOworICAg
ICAgICByZW1vdmVkRGl2MiA9IHJlbW92ZWREaXYxLm5leHRTaWJsaW5nOworICAgICAgICBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg
ICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LmlubmVySFRNTCA9ICdm
b288aW1nIHNyYz0iYmFyLnBuZyI+PHA+QmF6PC9wPic7CisgICAgICAgIGFkZGVkRGl2MSA9IGRp
di5jaGlsZE5vZGVzWzBdOworICAgICAgICBhZGRlZERpdjIgPSBkaXYuY2hpbGROb2Rlc1sxXTsK
KyAgICAgICAgYWRkZWREaXYzID0gZGl2LmNoaWxkTm9kZXNbMl07CisgICAgICAgIHNldFRpbWVv
dXQoY2hlY2tJbm5lckhUTUwsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrSW5uZXJI
VE1MKCkgeworICAgICAgICBkZWJ1ZygnLi4uaW5uZXJIVE1MJyk7CisKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5hZGRlZE5vZGVzLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYWRkZWROb2Rlc1swXScsICdhZGRlZERpdjEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5hZGRlZE5vZGVzWzFdJywgJ2FkZGVkRGl2MicpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMl0nLCAnYWRkZWREaXYzJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdJywgJ3JlbW92ZWREaXYxJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzFdJywgJ3JlbW92ZWRE
aXYyJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2LmlubmVyVGV4
dCA9ICdmb28nOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4uaW5uZXJUZXh0Jyk7CisKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICczJyk7CisgICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVz
dCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXBsYWNlQ2hp
bGQoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisgICAgdmFyIGZyYWdtZW50
OworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQg
cmVwbGFjZUNoaWxkIHJlc3VsdHMgaW4gbWluaW1hbCBjaGlsZExpc3QgbXV0YXRpb25zLicpOwor
CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuaW5uZXJIVE1MID0gJzxzcGFuPkZvbzwvc3Bh
bj48ZGl2PkJhcjwvZGl2Pic7CisgICAgICAgIHJlbW92ZWREaXYxID0gZGl2LmZpcnN0Q2hpbGQ7
CisKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUgfSk7CisgICAgICAgIGFk
ZGVkRGl2MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYucmVw
bGFjZUNoaWxkKGFkZGVkRGl2MSwgZGl2LmZpcnN0Q2hpbGQpOworICAgICAgICBzZXRUaW1lb3V0
KGNoZWNrUmVwbGFjZVdpdGhOb2RlLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1Jl
cGxhY2VXaXRoTm9kZSgpIHsKKyAgICAgICAgZGVidWcoJy4uLnNpbXBsZSByZXBsYWNlIGNoaWxk
Jyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXScsICdhZGRlZERpdjEnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0nLCAncmVtb3Zl
ZERpdjEnKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBmcmFnbWVudCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgYWRkZWREaXYxID0g
ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAg
ICAgICBhZGRlZERpdjIgPSBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKSk7CisgICAgICAgIHJlbW92ZWREaXYxID0gZGl2LmZpcnN0Q2hpbGQ7CisKKyAg
ICAgICAgZGl2LnJlcGxhY2VDaGlsZChmcmFnbWVudCwgcmVtb3ZlZERpdjEpOworCisgICAgICAg
IHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7
CisgICAgICAgIGRlYnVnKCcuLi5yZXBsYWNlIHdpdGggRG9jdW1lbnRGcmFnbWVudCcpOworCisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0nLCAnYWRkZWREaXYxJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXScsICdhZGRlZERpdjInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0nLCAncmVtb3ZlZERp
djEnKTsKKworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcn
KTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitm
dW5jdGlvbiB0ZXN0SW5zZXJ0QmVmb3JlKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2Vy
dmVyOworICAgIHZhciBmcmFnbWVudDsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAg
ICBkZWJ1ZygnVGVzdGluZyB0aGF0IGluc2VydEJlZm9yZSByZXN1bHRzIGluIG1pbmltYWwgY2hp
bGRMaXN0IG11dGF0aW9ucy4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LmlubmVy
SFRNTCA9ICc8c3Bhbj5Gb288L3NwYW4+JzsKKyAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIGFkZGVkRGl2MSA9IGZyYWdtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgYWRkZWRE
aXYyID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworCisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rp
b24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOworICAgICAgICBk
aXYuaW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBkaXYuZmlyc3RDaGlsZCk7CisgICAgICAgIHNldFRp
bWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXScsICdhZGRlZERpdjEnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzFdJywgJ2FkZGVkRGl2MicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworCisg
ICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAg
ICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RBcHBlbmRDaGlsZCgpIHsKKyAgICB2YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKyAgICB2
YXIgZnJhZ21lbnQ7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rl
c3RpbmcgdGhhdCBhcHBlbmRDaGlsZCByZXN1bHRzIGluIG1pbmltYWwgY2hpbGRMaXN0IG11dGF0
aW9ucy4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8c3Bh
bj5Gb288L3NwYW4+JzsKKyAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CisgICAgICAgIGFkZGVkRGl2MSA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgYWRkZWREaXYyID0gZnJhZ21l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworCisgICAgICAg
IG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAg
ICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOworICAgICAgICBkaXYuYXBwZW5kQ2hp
bGQoZnJhZ21lbnQpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0
aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRM
aXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3Ro
JywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdJywg
J2FkZGVkRGl2MScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNb
MV0nLCAnYWRkZWREaXYyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCcsICcwJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwor
ICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAg
c3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdElubmVySFRNTEVtcHR5KCkgeworICAgIGZ1bmN0
aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnU2V0dGluZyBhbiBlbXB0eSBjaGlsZGxpc3Qg
dG8gdGhlIGVtcHR5IHN0cmluZyB3aXRoIGlubmVySFRNTCBzaG91bGQgbm90IGFzc2VydC4nKTsK
KworICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0
YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKKyAgICAgICAgZGl2LmlubmVySFRNTCA9ICcnOwor
ICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmlu
aXNoKCkgeworICAgICAgICBzaG91bGRCZU51bGwoJ211dGF0aW9ucycpOworICAgICAgICBkZWJ1
ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30K
KwordmFyIHRlc3RzID0gW3Rlc3RCYXNpYywgdGVzdFdyb25nVHlwZSwgdGVzdE11bHRpcGxlUmVn
aXN0cmF0aW9uLCB0ZXN0TXVsdGlwbGVPYnNlcnZlcnMsIHRlc3RJbm5lckhUTUxBbmRJbm5lclRl
eHQsIHRlc3RSZXBsYWNlQ2hpbGQsIHRlc3RJbnNlcnRCZWZvcmUsIHRlc3RBcHBlbmRDaGlsZCwg
dGVzdElubmVySFRNTEVtcHR5XTsKK3ZhciB0ZXN0SW5kZXggPSAwOworIAorZnVuY3Rpb24gcnVu
TmV4dFRlc3QoKSB7CisgICAgaWYgKHRlc3RJbmRleCA8IHRlc3RzLmxlbmd0aCkKKyAgICAgICAg
dGVzdHNbdGVzdEluZGV4KytdKCk7CisgICAgZWxzZQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKworZGVzY3JpcHRpb24oJ1Rlc3QgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5vYnNlcnZlIG9u
IGF0dHJpYnV0ZXMuJyk7CisKK2lmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCisg
ICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYxNjgzYWQ4YjYzZGFiZWQ0YjYzM2IwOTUyN2I5NWQ1ZDEyY2E4ODgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUt
ZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGVzdCB0aGF0IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSB0aHJvd3MgZXhjZXB0aW9ucyBhcHByb3ByaWF0ZWx5
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG9ic2VydmVyLm9ic2VydmUo
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mg
b2JzZXJ2ZXIub2JzZXJ2ZShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KK1BBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZSh1bmRlZmluZWQpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBvYnNlcnZlci5v
YnNlcnZlKGRvY3VtZW50LmJvZHkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzLgorUEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIG51bGwp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQ
QVNTIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgdW5kZWZpbmVkKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBvYnNlcnZl
ci5vYnNlcnZlKG51bGwsIHthdHRyaWJ1dGVzOiB0cnVlfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDguCitQQVNTIG9ic2VydmVyLm9ic2VydmUo
dW5kZWZpbmVkLCB7YXR0cmlidXRlczogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90
Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4LgorUEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3Vt
ZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5i
b2R5LCB7Y2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZX0pIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG9ic2Vy
dmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRh
dGFPbGRWYWx1ZTogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERP
TSBFeGNlcHRpb24gMTIuCitQQVNTIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2No
YXJhY3RlckRhdGE6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWyJpZCJdfSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtZXhjZXB0aW9ucy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWV4Y2VwdGlvbnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYzIzYTAxYWZjNTg0MTM3ZGM2YmZlMzQ2MWQ4NTAyOWI0MDYzMjEy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9vYnNlcnZlLWV4Y2VwdGlvbnMuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+PC90
aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdp
bmRvdy5vYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0
aW9ucykgeyB9KTsKKyAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZSgpJyk7CisgICAg
c2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUobnVsbCknKTsKKyAgICBzaG91bGRUaHJvdygn
b2JzZXJ2ZXIub2JzZXJ2ZSh1bmRlZmluZWQpJyk7CisgICAgc2hvdWxkVGhyb3coJ29ic2VydmVy
Lm9ic2VydmUoZG9jdW1lbnQuYm9keSknKTsKKyAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2Jz
ZXJ2ZShkb2N1bWVudC5ib2R5LCBudWxsKScpOworICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5v
YnNlcnZlKGRvY3VtZW50LmJvZHksIHVuZGVmaW5lZCknKTsKKyAgICBzaG91bGRUaHJvdygnb2Jz
ZXJ2ZXIub2JzZXJ2ZShudWxsLCB7YXR0cmlidXRlczogdHJ1ZX0pJyk7CisgICAgc2hvdWxkVGhy
b3coJ29ic2VydmVyLm9ic2VydmUodW5kZWZpbmVkLCB7YXR0cmlidXRlczogdHJ1ZX0pJyk7Cisg
ICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge3N1YnRyZWU6
IHRydWV9KScpOworICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJv
ZHksIHtjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlfSknKTsKKyAgICBz
aG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7YXR0cmlidXRlczog
dHJ1ZSwgY2hhcmFjdGVyRGF0YU9sZFZhbHVlOiB0cnVlfSknKTsKKyAgICBzaG91bGRUaHJvdygn
b2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZSwgYXR0
cmlidXRlRmlsdGVyOiBbImlkIl19KScpOworfQorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSB0aHJvd3MgZXhjZXB0aW9ucyBhcHByb3ByaWF0
ZWx5Jyk7CisKK2lmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZh
aWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7Citl
bHNlCisgICAgcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8i
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUt
c3VidHJlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL29ic2VydmUtc3VidHJlZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg5NGRjZGExYjNm
NmQyZDM0OWJkN2M0YTlhNGNkMDY5YTRlNjllZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1zdWJ0cmVlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDgxIEBACitUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBv
biBhIHN1YnRyZWUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgYmFz
aWMgYXNwZWN0cyBvZiBzdWJ0cmVlIG9ic2VydmF0aW9uLgorLi4uYXR0cmlidXRlIGFuZCBjaGFy
YWN0ZXJEYXRhIGNoYW5nZXMgaW4gc3VidHJlZQorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIK
K1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sw
XS50YXJnZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJm
b28iCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBt
dXRhdGlvbnNbMV0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0YXRpb25zWzFdLnRh
cmdldCBpcyBzdWJEaXYuZmlyc3RDaGlsZAorCitUZXN0aW5nIHR3byBvYnNlcnZlcnMgYXQgZGlm
ZmVyZW50IGRlcHRocy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9u
c1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1
YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25zMi5sZW5n
dGggaXMgMQorUEFTUyBtdXRhdGlvbnMyWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11
dGF0aW9uczJbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnMyWzBdLmF0dHJpYnV0
ZU5hbWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zMlswXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMg
bnVsbAorCitUZXN0aW5nIG9uZSBvYnNlcnZlciBhdCB0d28gZGlmZmVyZW50IGRlcHRocy4KK1BB
U1MgY2FsbHMgaXMgMQorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25z
WzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgc3Vi
RGl2CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgdHJhbnNp
ZW50bHkgZGV0YWNoZWQgbm9kZXMgYXJlIHN0aWxsIG9ic2VydmVkIHZpYSBzdWJ0cmVlLgorLi4u
Ym90aCBjaGFuZ2VzIHNob3VsZCBiZSByZWNlaXZlZC4gQ2hhbmdlIGRldGFjaGVkIHN1YkRpdiBh
Z2Fpbi4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMV0u
dHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBzdWJEaXYK
K1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgInRlc3QiCisuLi50cmFuc2llbnQg
c3VidHJlZSBvYnNlcnZhdGlvbiB3YXMgc3RvcHBlZCBhZnRlciBkZWxpdmVyeSwgc28gc3ViRGl2
IGNoYW5nZSBzaG91bGQgbm90IGJlIHJlY2VpdmVkLiBSZWF0dGFjaCBhbmQgY2hhbmdlIGFnYWlu
LgorUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAorLi4ucmVhdHRhY2hlZCBzdWJ0cmVlIHNob3VsZCBu
b3cgYmUgb2JzZXJ2YWJsZS4gVHJ5IGRldGFjaGluZyBhbmQgcmUtb2JzZXJ2aW5nLgorUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCisuLi5UaGUgY2hhbmdlIG1hZGUgYmVmb3JlIHJlLW9i
c2VydmluZyBzaG91bGQgYmUgcmVjZWl2ZWQsIGJ1dCBub3QgdGhlIG9uZSBhZnRlci4KK1BBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0
ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdi5maXJzdENoaWxkCisK
K1Rlc3RpbmcgY29ycmVjdCBiZWhhdmlvciBvZiB0cmFuc2llbnQgb2JzZXJ2YXRpb24gd2l0aCBj
b21wbGV4IG1vdmVtZW50IC4KKy4uLkFsbCBjaGFuZ2VzIHNob3VsZCBiZSByZWNlaXZlZCBleGNl
cHQgZm9yIHNldHRpbmcgdGhlICJkIiBhdHRyaWJ1dGUgb24gc3ViRGl2MyBiZWZvcmUgaXQgd2Fz
IHJlYWNoYWJsZSBmcm9tIGRpdi4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyA2CitQQVNTIG11
dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0
IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYSIKK1BBU1Mg
bXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS50YXJn
ZXQgaXMgc3ViRGl2MgorUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiYiIKK1BB
U1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCitQQVNTIG11dGF0aW9uc1sy
XS50YXJnZXQgaXMgdGV4dAorUEFTUyBtdXRhdGlvbnNbM10udHlwZSBpcyAiYXR0cmlidXRlcyIK
K1BBU1MgbXV0YXRpb25zWzNdLnRhcmdldCBpcyBzdWJEaXYyCitQQVNTIG11dGF0aW9uc1szXS5h
dHRyaWJ1dGVOYW1lIGlzICJlIgorUEFTUyBtdXRhdGlvbnNbNF0udHlwZSBpcyAiYXR0cmlidXRl
cyIKK1BBU1MgbXV0YXRpb25zWzRdLnRhcmdldCBpcyBzdWJEaXYzCitQQVNTIG11dGF0aW9uc1s0
XS5hdHRyaWJ1dGVOYW1lIGlzICJmIgorUEFTUyBtdXRhdGlvbnNbNV0udHlwZSBpcyAiYXR0cmli
dXRlcyIKK1BBU1MgbXV0YXRpb25zWzVdLnRhcmdldCBpcyBzdWJEaXYyCitQQVNTIG11dGF0aW9u
c1s1XS5hdHRyaWJ1dGVOYW1lIGlzICJnIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLXN1YnRyZWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1zdWJ0cmVlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Zl
ZTNkMThjYWMxNmRjNDE3NTIyM2NhMWQ2M2Q5N2E0ZDVkODJkOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1zdWJ0cmVlLmh0
bWwKQEAgLTAsMCArMSwzMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD1kZXNjcmlwdGlvbj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7Cit2YXIg
bXV0YXRpb25zMjsKK3ZhciBkaXY7Cit2YXIgc3ViRGl2LCBzdWJEaXYyLCBzdWJEaXYzLCB0ZXh0
OwordmFyIGNhbGxzOworCitmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAgdmFyIG9ic2VydmVy
OworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2lj
IGFzcGVjdHMgb2Ygc3VidHJlZSBvYnNlcnZhdGlvbi4nKTsKKworICAgICAgICBtdXRhdGlvbnMg
PSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKKyAgICAgICAgc3ViRGl2LmlubmVySFRNTCA9ICdoZWxsbywgd29ybGQnOworICAgICAg
ICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9u
cykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBj
aGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAgIHN1YkRpdi5zZXRB
dHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc3ViRGl2LmZpcnN0Q2hpbGQudGV4dENv
bnRlbnQgPSAnZ29vZGJ5ZSEnOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4uYXR0cmlidXRl
IGFuZCBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMgaW4gc3VidHJlZScpOworCisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1sxXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLnRhcmdldCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOworICAgICAgICBvYnNlcnZlci5k
aXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsK
KyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0TXVsdGlwbGVPYnNlcnZl
cnMoKSB7CisgICAgdmFyIG9ic2VydmVyOworICAgIHZhciBvYnNlcnZlcjI7CisKKyAgICBmdW5j
dGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdHdvIG9ic2VydmVycyBhdCBk
aWZmZXJlbnQgZGVwdGhzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAg
IG11dGF0aW9uczIgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlv
bnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlcjIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdp
bmRvdy5tdXRhdGlvbnMyID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAg
ICAgICAgb2JzZXJ2ZXIyLm9ic2VydmUoc3ViRGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOworICAg
ICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CisgICAgICAgIHNldFRpbWVv
dXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uczIubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0u
dHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0u
dGFyZ2V0JywgJ3N1YkRpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS5hdHRy
aWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLmF0
dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3Qo
KTsKKyAgICAgICAgb2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RNdWx0aXBsZU9ic2VydmF0aW9ucygpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAg
ICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3Rpbmcgb25lIG9ic2VydmVy
IGF0IHR3byBkaWZmZXJlbnQgZGVwdGhzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7
CisgICAgICAgIGNhbGxzID0gMDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRp
b25zID0gbXV0YXRpb25zOworICAgICAgICAgICAgKytjYWxsczsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0
cnVlfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoc3ViRGl2LCB7YXR0cmlidXRlczogdHJ1
ZSwgc3VidHJlZTogdHJ1ZX0pOworICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAn
YmFyJyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdjYWxscycsICcxJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7Cisg
ICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFRyYW5zaWVudERldGFjaGVk
QmFzaWMoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7Cisg
ICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgdHJhbnNpZW50bHkgZGV0YWNoZWQgbm9kZXMgYXJl
IHN0aWxsIG9ic2VydmVkIHZpYSBzdWJ0cmVlLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51
bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAg
ICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworICAgICAgICBzdWJEaXYuaW5uZXJIVE1MID0gJ2hlbGxvLCB3b3JsZCc7CisgICAgICAgIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7
CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsK
KworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJh
Y3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICAgICAgc3ViRGl2LnNldEF0dHJp
YnV0ZSgnZm9vJywgJ2JhcicpOworICAgICAgICBkaXYucmVtb3ZlQ2hpbGQoc3ViRGl2KTsKKyAg
ICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgndGVzdCcsICd0ZXN0Jyk7CisgICAgICAgIHNldFRp
bWVvdXQoY2hlY2tEZWxpdmVyZWRBbmRDaGFuZ2VBZ2FpbiwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gY2hlY2tEZWxpdmVyZWRBbmRDaGFuZ2VBZ2FpbigpIHsKKyAgICAgICAgZGVidWcoJy4u
LmJvdGggY2hhbmdlcyBzaG91bGQgYmUgcmVjZWl2ZWQuIENoYW5nZSBkZXRhY2hlZCBzdWJEaXYg
YWdhaW4uJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJ0ZXN0IicpOworCisgICAgICAg
IG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdi
YXonKTsKKworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVkQW5kUmVhdHRhY2gp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZlcmVkQW5kUmVhdHRhY2goKSB7
CisgICAgICAgIGRlYnVnKCcuLi50cmFuc2llbnQgc3VidHJlZSBvYnNlcnZhdGlvbiB3YXMgc3Rv
cHBlZCBhZnRlciBkZWxpdmVyeSwgc28gc3ViRGl2IGNoYW5nZSBzaG91bGQgbm90IGJlIHJlY2Vp
dmVkLiBSZWF0dGFjaCBhbmQgY2hhbmdlIGFnYWluLicpOworCisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGwKKyAgICAgICAg
ZGl2LmFwcGVuZENoaWxkKHN1YkRpdik7CisgICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2Zv
bycsICdiYXQnKTsKKworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRGVsaXZlcmVkQW5kUmVvYnNl
cnZlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0RlbGl2ZXJlZEFuZFJlb2JzZXJ2ZSgp
IHsKKyAgICAgICAgZGVidWcoJy4uLnJlYXR0YWNoZWQgc3VidHJlZSBzaG91bGQgbm93IGJlIG9i
c2VydmFibGUuIFRyeSBkZXRhY2hpbmcgYW5kIHJlLW9ic2VydmluZy4nKTsKKworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7
CisgICAgICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOworICAgICAgICBzdWJEaXYuZmlyc3RD
aGlsZC50ZXh0Q29udGVudCA9ICdiYWRieWUnOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9
KTsKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JvbycpOworCisgICAgICAg
IHNldFRpbWVvdXQoZmluaXNoKTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsK
KyAgICAgICAgZGVidWcoJy4uLlRoZSBjaGFuZ2UgbWFkZSBiZWZvcmUgcmUtb2JzZXJ2aW5nIHNo
b3VsZCBiZSByZWNlaXZlZCwgYnV0IG5vdCB0aGUgb25lIGFmdGVyLicpOworCisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOworCisgICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVz
dCgpOworICAgIH0KKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0VHJhbnNpZW50RGV0
YWNoZWREZXRhaWxlZCgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFy
dCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgY29ycmVjdCBiZWhhdmlvciBvZiB0cmFuc2ll
bnQgb2JzZXJ2YXRpb24gd2l0aCBjb21wbGV4IG1vdmVtZW50IC4nKTsKKworICAgICAgICBtdXRh
dGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpKTsKKyAgICAgICAgc3ViRGl2MiA9IHN1YkRpdi5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHN1YkRpdjIuaW5uZXJIVE1MID0gJ2hl
bGxvLCB3b3JsZCc7CisgICAgICAgIHN1YkRpdjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0
aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRy
aWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAg
ICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOworICAgICAgICBzdWJEaXYucmVtb3ZlQ2hpbGQo
c3ViRGl2Mik7CisgICAgICAgIHRleHQgPSBzdWJEaXYyLnJlbW92ZUNoaWxkKHN1YkRpdjIuZmly
c3RDaGlsZCk7CisKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnYScsICdhJyk7CisgICAg
ICAgIHN1YkRpdjIuc2V0QXR0cmlidXRlKCdiJywgJ2InKTsKKyAgICAgICAgdGV4dC50ZXh0Q29u
dGVudCA9ICdjJzsKKyAgICAgICAgc3ViRGl2My5hcHBlbmRDaGlsZChzdWJEaXYyKTsKKyAgICAg
ICAgc3ViRGl2My5zZXRBdHRyaWJ1dGUoJ2QnLCAnZCcpOworICAgICAgICBzdWJEaXYyLnNldEF0
dHJpYnV0ZSgnZScsICdlJyk7CisgICAgICAgIGRpdi5hcHBlbmRDaGlsZChzdWJEaXYzKTsKKyAg
ICAgICAgc3ViRGl2My5zZXRBdHRyaWJ1dGUoJ2YnLCAnZicpOworICAgICAgICBzdWJEaXYyLnNl
dEF0dHJpYnV0ZSgnZycsICdnJyk7CisKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVidWcoJy4uLkFsbCBj
aGFuZ2VzIHNob3VsZCBiZSByZWNlaXZlZCBleGNlcHQgZm9yIHNldHRpbmcgdGhlICJkIiBhdHRy
aWJ1dGUgb24gc3ViRGl2MyBiZWZvcmUgaXQgd2FzIHJlYWNoYWJsZSBmcm9tIGRpdi4nKTsKKwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc2Jyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYSInKTsKKworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0udGFyZ2V0JywgJ3N1YkRpdjInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJiIicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMl0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1syXS50YXJnZXQnLCAndGV4dCcpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbM10udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1szXS50YXJnZXQnLCAnc3ViRGl2MicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzNd
LmF0dHJpYnV0ZU5hbWUnLCAnImUiJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1s0
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzRd
LnRhcmdldCcsICdzdWJEaXYzJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbNF0uYXR0
cmlidXRlTmFtZScsICciZiInKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzVdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbNV0udGFy
Z2V0JywgJ3N1YkRpdjInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1s1XS5hdHRyaWJ1
dGVOYW1lJywgJyJnIicpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAg
ICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKyAgICBzdGFydCgp
OworfQorCit2YXIgdGVzdHMgPSBbdGVzdEJhc2ljLCB0ZXN0TXVsdGlwbGVPYnNlcnZlcnMsIHRl
c3RNdWx0aXBsZU9ic2VydmF0aW9ucywgdGVzdFRyYW5zaWVudERldGFjaGVkQmFzaWMsIHRlc3RU
cmFuc2llbnREZXRhY2hlZERldGFpbGVkXTsKK3ZhciB0ZXN0SW5kZXggPSAwOworCitmdW5jdGlv
biBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdHMubGVuZ3RoKQorICAg
ICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAgICBlbHNlCisgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9ic2Vy
dmUgb24gYSBzdWJ0cmVlJyk7CisKK2lmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIp
CisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YzBmMmU5ZGNjNjQxNjVkZDgyYTdkMTI0YzVmMzI5ZWMz
YmU5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorTXV0YXRpb25PYnNlcnZlciB3cmFwcGVycyBzaG91bGQgc3Vydml2ZSBHQyBmb3IgcGFz
c2luZyBpbnRvIHRoZSBjYWxsYmFjayBldmVuIGlmIEpTIGhhcyBsb3N0IHJlZmVyZW5jZXMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG9ic2VydmVyLnRlc3RQcm9wZXJ0
eSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9v
YnNlcnZlci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRy
YW5zaWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYzYTU1M2VjMjIzNmNjMWZlZGQzMWU4
ZWRmMTFhNDQxYzNiNmJiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5zaWVudC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorTXV0YXRpb25PYnNlcnZlciB3cmFwcGVycyBzaG91
bGQgc3Vydml2ZSBHQyBmb3IgcGFzc2luZyBpbnRvIHRoZSBjYWxsYmFjayBldmVuIGlmIEpTIGhh
cyBsb3N0IHJlZmVyZW5jZXMgYW5kIHRoZSBvbmx5IHJlbWFpbmluZyBvYnNlcnZhdGlvbnMgYXJl
IHRyYW5zaWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb2JzZXJ2
ZXIudGVzdFByb3BlcnR5IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10cmFuc2llbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9w
b2ZmLXRyYW5zaWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkOWYyZjc2MzdmZDc2YTgxYTYzZjEwYTI1
ZmU2ZjZlMjA5N2ExNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10cmFuc2llbnQuaHRtbApA
QCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
LyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ011dGF0aW9uT2JzZXJ2ZXIgd3JhcHBlcnMgc2hvdWxkIHN1cnZpdmUgR0MgZm9yIHBh
c3NpbmcgaW50byB0aGUgY2FsbGJhY2sgZXZlbiBpZiBKUyBoYXMgbG9zdCByZWZlcmVuY2VzIGFu
ZCB0aGUgb25seSByZW1haW5pbmcgb2JzZXJ2YXRpb25zIGFyZSB0cmFuc2llbnQuJyk7CisKK2pz
VGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBhZGRPYnNlcnZlcihub2RlLCBmbikgewor
ICAgIHZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZuKTsKKyAgICBv
YnNlcnZlci50ZXN0UHJvcGVydHkgPSB0cnVlOworICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSwg
e2F0dHJpYnV0ZXM6dHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOworfQorCitvbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHZhciBjaGlsZCA9IHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bh
bicpKTsKKyAgICBhZGRPYnNlcnZlcihyb290LCBmdW5jdGlvbihyZWNvcmRzLCBvYnNlcnZlcikg
eworICAgICAgICB3aW5kb3cub2JzZXJ2ZXIgPSBvYnNlcnZlcjsKKyAgICAgICAgc2hvdWxkQmUo
J29ic2VydmVyLnRlc3RQcm9wZXJ0eScsICd0cnVlJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0pOworCisgICAgcm9vdC5yZW1vdmVDaGlsZChjaGlsZCk7CisgICAgY2hpbGQuc2V0
QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CisgICAgcm9vdCA9IG51bGw7CisKKyAgICBnYygpOwor
fTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGFiNzdiYjY2YmQzOWQ1YjdmNjYwMThmMWExNTk0Mzg5NDRhNDE4NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2Jz
ZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0
bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdNdXRhdGlvbk9ic2VydmVyIHdyYXBw
ZXJzIHNob3VsZCBzdXJ2aXZlIEdDIGZvciBwYXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2ZW4g
aWYgSlMgaGFzIGxvc3QgcmVmZXJlbmNlcy4nKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2Z1bmN0aW9uIGFkZE9ic2VydmVyKG5vZGUsIGZuKSB7CisgICAgdmFyIG9ic2VydmVyID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZm4pOworICAgIG9ic2VydmVyLnRlc3RQcm9wZXJ0eSA9
IHRydWU7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShub2RlLCB7YXR0cmlidXRlczp0cnVlfSk7Cit9
CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGFkZE9ic2VydmVyKGRvY3VtZW50LmJvZHks
IGZ1bmN0aW9uKHJlY29yZHMsIG9ic2VydmVyKSB7CisgICAgICAgIHdpbmRvdy5vYnNlcnZlciA9
IG9ic2VydmVyOworICAgICAgICBzaG91bGRCZSgnb2JzZXJ2ZXIudGVzdFByb3BlcnR5JywgJ3Ry
dWUnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7CisKKyAgICBnYygpOworCisg
ICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ3RvdWNoJywgJ3RoZSBub2RlJyk7Cit9Owor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL3JlbW92ZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcmVtb3ZlZC1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU1ZGZjMDEyNmFkOGY0MTE5MmM3YTBkZGE4MjhmNGViZWRmYzJhYWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L3JlbW92ZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0
IE11dGF0aW9uRXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IHJlbW92
aW5nIG5vZGVzICdvdXQgb2Ygb3JkZXInCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
cy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAw
CitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUgaXMgJ0InCitQQVNTIG11
dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1sxXS5yZW1v
dmVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1swXS50
YWdOYW1lIGlzICdCJworUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlz
ICdJJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcmVtb3Zl
ZC1vdXQtb2Ytb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvcmVtb3ZlZC1vdXQtb2Ytb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTlhY2I1NmYyM2Y1MTll
M2M5MmZhZGZhMjgzYzUxMDU3ZjUwMzNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9yZW1vdmVkLW91dC1vZi1vcmRlci5odG1sCkBAIC0w
LDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGRpdiBpZD0ic2FuZGJveCIgc3R5bGU9ImRp
c3BsYXk6bm9uZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgTXV0YXRp
b25FdmVudHMgaW50ZXJmZXJpbmcgd2l0aCBNdXRhdGlvbk9ic2VydmVyczogcmVtb3Zpbmcgbm9k
ZXMgJ291dCBvZiBvcmRlciciKTsKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NhbmRib3gnKTsKK3ZhciByZW1vdmVkID0gZmFsc2U7CitzYW5kYm94LmFkZEV2ZW50TGlz
dGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGZ1bmN0aW9uKCkgeworICAgIGlmICghcmVtb3ZlZCkg
eworICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7CisgICAg
ICAgIHJlbW92ZWQgPSB0cnVlOworICAgIH0KK30pOwordmFyIG9ic2VydmVyID0gbmV3IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt9KTsKK29ic2VydmVyLm9ic2VydmUoc2FuZGJv
eCwge2NoaWxkTGlzdDogdHJ1ZX0pOworc2FuZGJveC5pbm5lckhUTUwgPSAnPGI+PC9iPjxpPjwv
aT4nOworCit2YXIgbXV0YXRpb25zID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKTsKK3Nob3VsZEJl
KCJtdXRhdGlvbnMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMF0uYWRkZWRO
b2Rlcy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMu
bGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXS50YWdO
YW1lIiwgIidCJyIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCIs
ICIxIik7CitzaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgiLCAiMSIp
Oworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSIsICInQici
KTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIiwgIidJJyIp
OworPC9zY3JpcHQ+Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRvdy1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9zaGFkb3ctZG9tLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iN2ExYzU1MThiNzM2Mzg1MzdkODRhNWU4ZWZmYzkwZGZhMjI1N2RlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9zaGFkb3ct
ZG9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0IHRoYXQgTXV0YXRpb25PYnNl
cnZlcnMgb3BlcmF0ZSBpbiBTaGFkb3cgRE9NCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitNdXRhdGlvbnMgaW4gc2hhZG93IERPTSBzaG91bGQgaGF2ZSBiZWVuIG9ic2VydmVkOgor
UEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDQKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11
dGF0aW9uc1syXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnNbM10udHlw
ZSBpcyAiY2hpbGRMaXN0IgorCitPYnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRvdyBET00gc2hv
dWxkIG5vdCBzZWUgbXV0YXRpb25zIGluIHRoZSBzaGFkb3c6CitQQVNTIG11dGF0aW9ucyBpcyBu
dWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9zaGFkb3ct
ZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRvdy1k
b20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NzMyZmJjMTY0ZjYwNTQ0ZTA5ZWRlODU4NGU4OTk0Y2FjMjY3
NTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9zaGFkb3ctZG9tLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
Ym9keT4KKzxpbnB1dCB0eXBlPSJyYW5nZSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvInJlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBvcGVyYXRlIGluIFNoYWRvdyBET00nKTsKKworZnVu
Y3Rpb24gZG9UZXN0KCkgeworICAgIGZ1bmN0aW9uIG11dGF0ZShlbHQpIHsKKyAgICAgICAgZWx0
LnNldEF0dHJpYnV0ZSgnZGF0YS1mb28nLCAnYmFyJyk7CisgICAgICAgIGVsdC5pbnNlcnRCZWZv
cmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxvJyksIGVsdC5maXJzdENoaWxkKTsKKyAg
ICAgICAgZWx0LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSc7CisgICAgICAgIGVs
dC5yZW1vdmVDaGlsZChlbHQuZmlyc3RDaGlsZCk7CisgICAgfQorCisgICAgdmFyIHNoYWRvd1Jv
b3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcp
KTsKKyAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtdXRhdGlvbnMpIHsKKyAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAg
ICB9KTsKKworICAgIG9ic2VydmVyLm9ic2VydmUoc2hhZG93Um9vdC5maXJzdENoaWxkLCB7YXR0
cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0
cmVlOiB0cnVlfSk7CisgICAgbXV0YXRlKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7CisKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygnTXV0YXRpb25zIGluIHNoYWRv
dyBET00gc2hvdWxkIGhhdmUgYmVlbiBvYnNlcnZlZDonKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9ucy5sZW5ndGgnLCAnNCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlw
ZScsICciY2hpbGRMaXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUn
LCAnImNoYXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbM10udHlw
ZScsICciY2hpbGRMaXN0IicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisKKyAg
ICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUo
ZG9jdW1lbnQsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRh
dGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICAgICAgbXV0YXRlKHNoYWRvd1Jvb3QuZmly
c3RDaGlsZCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBk
ZWJ1ZygnXG5PYnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRvdyBET00gc2hvdWxkIG5vdCBzZWUg
bXV0YXRpb25zIGluIHRoZSBzaGFkb3c6Jyk7CisgICAgICAgICAgICBzaG91bGRCZU51bGwoJ211
dGF0aW9ucycpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOwor
ICAgIH0sIDApOworfQorCitpZiAod2luZG93LmludGVybmFscykgeworICAgIGRvVGVzdCgpOwor
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK30gZWxzZQorICAgIHRlc3RGYWlsZWQo
J1RoaXMgdGVzdCBvbmx5IHJ1bnMgaW4gRFJUJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy8icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3Rha2VSZWNv
cmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
dGFrZVJlY29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNjQ0MjZhYjEzYWUyZTFjOTAz
OGRmYjYzYjc5MTJkM2EwNjVlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL3Rha2VSZWNvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI0IEBACitUZXN0aW5nIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIudGFrZVJlY29yZHMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgdGFrZVJlY29yZHMuCisuLi5yZWNv
cmRzIGFyZSB0YWtlbiBzeW5jaHJvbm91c2x5LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIK
K1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sw
XS50YXJnZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJm
b28iCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBt
dXRhdGlvbnNbMV0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0YXRpb25zWzFdLnRh
cmdldCBpcyBzdWJEaXYuZmlyc3RDaGlsZAorLi4udGFrZVJlY29yZCB0b29rIHJlY29yZHMsIGJ1
dCBkaWQgbm90IGNsZWFyIHRyYW5zaWVudCBvYnNlcnZlcnMKK1BBU1MgbXV0YXRpb25zLmxlbmd0
aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRh
dGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZSBpcyAiZm9vIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci90YWtlUmVjb3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci90YWtlUmVjb3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YjQzNzExNWNlNmQ5MTlkMDhhYzk4Y2Uy
MDk0YzhlMmI5ZWYwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL3Rha2VSZWNvcmRzLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHRp
dGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPWRlc2NyaXB0aW9uPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwordmFyIG11dGF0aW9uczsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgeworICAgIHZh
ciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVz
dGluZyB0YWtlUmVjb3Jkcy4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgc3ViRGl2ID0g
ZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAg
c3ViRGl2LmlubmVySFRNTCA9ICdoZWxsbywgd29ybGQnOworICAgICAgICBvYnNlcnZlciA9IG5l
dyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAg
ICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
b2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0
cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2Zvbycs
ICdiYXInKTsKKyAgICAgICAgc3ViRGl2LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5
ZSEnOworICAgICAgICBkaXYucmVtb3ZlQ2hpbGQoc3ViRGl2KTsKKworICAgICAgICBtdXRhdGlv
bnMgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpOworCisgICAgICAgIGRlYnVnKCcuLi5yZWNvcmRz
IGFyZSB0YWtlbiBzeW5jaHJvbm91c2x5LicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcs
ICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
JywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywg
JyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdl
dCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOworCisgICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUo
J2ZvbycsICdiYXonKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVidWcoJy4uLnRha2VSZWNvcmQgdG9v
ayByZWNvcmRzLCBidXQgZGlkIG5vdCBjbGVhciB0cmFuc2llbnQgb2JzZXJ2ZXJzJyk7CisKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7Cisg
ICAgfQorCisgICAgc3RhcnQoKTsKK30KKwordmFyIHRlc3RzID0gW3Rlc3RCYXNpY107Cit2YXIg
dGVzdEluZGV4ID0gMDsKKworZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CisgICAgaWYgKHRlc3RJ
bmRleCA8IHRlc3RzLmxlbmd0aCkKKyAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7CisgICAg
ZWxzZQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3Rpbmcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlci50YWtlUmVjb3JkcycpOworCitpZiAoIXdpbmRvdy5XZWJL
aXRNdXRhdGlvbk9ic2VydmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBF
TkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1bk5leHRUZXN0KCk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvdHJhbnNpZW50LWdjLWNyYXNoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvdHJhbnNpZW50LWdjLWNy
YXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTBjMDFmYTlkNWEwMTZiM2VkZWNmZmU4Y2Ji
OGU3NzgwZjhmZTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci90cmFuc2llbnQtZ2MtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK0NsZWFyaW5nIHRyYW5zaWVudCBvYnNlcnZlcnMgYWZ0ZXIgb2JzZXJ2YXRpb24gbm9k
ZSBpcyBHQ2VkIHNob3VsZCBub3QgY2F1c2UgYSBjcmFzaC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci90cmFuc2llbnQtZ2MtY3Jhc2guaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvdHJhbnNpZW50LWdjLWNyYXNoLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTA2YTVjNDNkZjNmM2NhY2Y5ODU0NTFmNDMzZGQyMWJmOWIyZGMwNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
dHJhbnNpZW50LWdjLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzLyJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Rlc2NyaXB0aW9uKCdDbGVhcmluZyB0cmFuc2ll
bnQgb2JzZXJ2ZXJzIGFmdGVyIG9ic2VydmF0aW9uIG5vZGUgaXMgR0NlZCBzaG91bGQgbm90IGNh
dXNlIGEgY3Jhc2guJyk7CisKK2Z1bmN0aW9uIGNhbGxiYWNrKG11dGF0aW9ucykgeworICAgIHdp
bmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cit9Cit2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKK3ZhciBzcGFuID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKSk7CitvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRy
dWUsIHN1YnRyZWU6IHRydWV9KTsKK2Rpdi5yZW1vdmVDaGlsZChzcGFuKTsKK2RpdiA9IG51bGw7
CitnYygpOworc3Bhbi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKK3NldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy8i
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZmJiYjMzZWZiY2VkNDM3MWZiMTcyYWYyNmZk
NGMxMzk4NDIwZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9hZGRlZC1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGVzdCBNdXRhdGlvbkV2ZW50cyBp
bnRlcmZlcmluZyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzOiBhZGRpbmcgbm9kZXMgJ291dCBvZiBv
cmRlcicKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgbXV0YXRpb25zLmxl
bmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNT
IG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBd
LnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIGlzICdTUEFOJwotUEFTUyBtdXRhdGlvbnNbMV0uYWRk
ZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0
aCBpcyAwCi1QQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUgaXMgJ0RJVicK
LVBBU1MgbXV0YXRpb25zWzJdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25z
WzJdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAotUEFTUyBtdXRhdGlvbnNbMl0uYWRkZWROb2Rl
c1swXS5ub2RlVmFsdWUgaXMgJ2hlbGxvIHdvcmxkJwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bXV0YXRpb24vYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL2FkZGVkLW91dC1vZi1vcmRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNDNlOWE0MjQ3NjYxYTUxNGUzYjk1OTkyMTdlYTdhMDNjMGFiNTkxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxkaXYgaWQ9InNhbmRib3giIHN0eWxlPSJkaXNwbGF5Om5vbmUi
PjxzcGFuPjwvc3Bhbj48L2Rpdj4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0IE11dGF0aW9u
RXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IGFkZGluZyBub2RlcyAn
b3V0IG9mIG9yZGVyJyIpOwotdmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2FuZGJveCcpOwotdmFyIGluc2VydGVkID0gZmFsc2U7Ci1zYW5kYm94LmFkZEV2ZW50TGlzdGVu
ZXIoJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCFpbnNlcnRlZCkgewot
ICAgICAgICBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KTsKLSAgICAgICAgaW5zZXJ0ZWQgPSB0cnVlOwotICAgIH0KLX0pOwotdmFyIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt9KTsKLW9ic2VydmVyLm9ic2Vy
dmUoc2FuZGJveCwge2NoaWxkTGlzdDogdHJ1ZX0pOwotc2FuZGJveC50ZXh0Q29udGVudCA9ICdo
ZWxsbyB3b3JsZCc7Ci0KLXZhciBtdXRhdGlvbnMgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpOwot
c2hvdWxkQmUoIm11dGF0aW9ucy5sZW5ndGgiLCAiMyIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sw
XS5hZGRlZE5vZGVzLmxlbmd0aCIsICIwIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzBdLnJlbW92
ZWROb2Rlcy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1swXS5yZW1vdmVkTm9k
ZXNbMF0udGFnTmFtZSIsICInU1BBTiciKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWRO
b2Rlcy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMu
bGVuZ3RoIiwgIjAiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdO
YW1lIiwgIidESVYnIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzJdLmFkZGVkTm9kZXMubGVuZ3Ro
IiwgIjEiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMl0ucmVtb3ZlZE5vZGVzLmxlbmd0aCIsICIw
Iik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzJdLmFkZGVkTm9kZXNbMF0ubm9kZVZhbHVlIiwgIido
ZWxsbyB3b3JsZCciKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9jYWxsYmFjay1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9jYWxsYmFjay1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4OWUzMmM5Mjg0OTY1NzY2MWFiMGU5YWU1OTM1NGE2NTg3YWRlZWMx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vY2FsbGJhY2stYXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDExICswLDAgQEAKLVZlcmlmaWVzIHRoYXQgTXV0YXRpb25PYnNlcnZlciBp
cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGFzIGV4cGVjdGVkLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLQotUEFTUyB0aGlzQXJndW1lbnQgaXMgbXV0YXRpb25PYnNlcnZlcgotUEFT
UyBhcmd1bWVudDIgaXMgbXV0YXRpb25PYnNlcnZlcgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bXV0YXRpb24vY2FsbGJhY2stYXJndW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL2NhbGxiYWNrLWFyZ3VtZW50cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNzhkZGQ5MmQzNWE0OTg0ODI2MGQ2N2M2ZTIxZWVkYWQwNzFkZDYzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vY2FsbGJhY2stYXJndW1lbnRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotZGVzY3JpcHRpb24oJ1ZlcmlmaWVzIHRoYXQgTXV0YXRpb25PYnNlcnZlciBpcyBw
YXNzZWQgdG8gdGhlIGNhbGxiYWNrIGFzIGV4cGVjdGVkLicpOwotCi1mdW5jdGlvbiBtdXRhdGlv
bkNhbGxiYWNrKG11dGF0aW9ucywgb2JzZXJ2ZXIpIHsKLSAgICB3aW5kb3cudGhpc0FyZ3VtZW50
ID0gdGhpczsKLSAgICB3aW5kb3cuYXJndW1lbnQyID0gb2JzZXJ2ZXI7Ci0gICAgc2hvdWxkQmUo
J3RoaXNBcmd1bWVudCcsICdtdXRhdGlvbk9ic2VydmVyJyk7Ci0gICAgc2hvdWxkQmUoJ2FyZ3Vt
ZW50MicsICdtdXRhdGlvbk9ic2VydmVyJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci12YXIg
bXV0YXRpb25PYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9uQ2Fs
bGJhY2spOwotdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotbXV0YXRp
b25PYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLWRpdi5zZXRBdHRy
aWJ1dGUoJ2ZvbycsICdiYXInKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxpdmVyeS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2NsZWFyLXRyYW5zaWVudC13
aXRob3V0LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGY0ZDIxNTI3MGExZTk3MGEyM2FlNjFhMGM0OTIzZjkyYzA0OThiNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRyYW5zaWVudCByZWdpc3RyYXRpb25zIHNob3VsZCBi
ZSBjbGVhcmVkIGV2ZW4gd2l0aG91dCBkZWxpdmVyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVBBU1MgbXV0YXRpb25zRGVsaXZlcmVkIGlzIGZhbHNlCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxpdmVyeS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxp
dmVyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWZlZTgxNzIwZWJjZDcw
OWU4MDk5OWY0YTliZTEyNzJjYWE4N2UyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY2xlYXItdHJhbnNpZW50
LXdpdGhvdXQtZGVsaXZlcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWRlc2NyaXB0aW9uKCdUcmFuc2ll
bnQgcmVnaXN0cmF0aW9ucyBzaG91bGQgYmUgY2xlYXJlZCBldmVuIHdpdGhvdXQgZGVsaXZlcnku
Jyk7Ci0KLXZhciBtdXRhdGlvbnNEZWxpdmVyZWQgPSBmYWxzZTsKLWZ1bmN0aW9uIGNhbGxiYWNr
KG11dGF0aW9ucykgewotICAgIG11dGF0aW9uc0RlbGl2ZXJlZCA9IHRydWU7Ci19Ci12YXIgb2Jz
ZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7Ci0KLXZhciBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLXZhciBzcGFuID0gZGl2LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Ci1vYnNlcnZlci5vYnNlcnZlKGRp
diwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLWRpdi5yZW1vdmVDaGlsZChz
cGFuKTsKLXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgLy8gQnkgdGhlIHRpbWUgdGhpcyBm
dW5jdGlvbiBydW5zIHRoZSB0cmFuc2llbnQgcmVnaXN0cmF0aW9uIHNob3VsZCBiZSBjbGVhcmVk
LAotICAgIC8vIHNvIHdlIGV4cGVjdCBub3QgdG8gYmUgbm90aWZpZWQgb2YgdGhpcyBhdHRyaWJ1
dGUgbXV0YXRpb24uCi0gICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2JhcicsICdiYXonKTsKLSAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBzaG91bGRCZUZhbHNlKCdtdXRhdGlvbnNE
ZWxpdmVyZWQnKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgMCk7Ci19LCAwKTsK
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcmVhdGUt
ZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
Y3JlYXRlLWR1cmluZy1kZWxpdmVyeS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDEzODZkZmFjZDVlMThhZjJkNzEyYzY5OGE5Mzg4MzNhOTc1MjFhY2IuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9jcmVhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0ICswLDAgQEAKLVRlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBjcmVhdGVk
IGR1cmluZyBkZWxpdmVyeSBtdXN0IHdhaXQgZm9yIHRoZSBuZXh0IGxvb3AuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG9yZGVyLmxlbmd0aCBpcyA0Ci1QQVNTIG9yZGVy
WzBdIGlzIDEKLVBBU1Mgb3JkZXJbMV0gaXMgMgotUEFTUyBvcmRlclsyXSBpcyAxCi1QQVNTIG9y
ZGVyWzNdIGlzIDMKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2NyZWF0ZS1kdXJp
bmctZGVsaXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3JlYXRlLWR1cmlu
Zy1kZWxpdmVyeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWVlMjRlNzA4
MmNmODFkNWE1YTU0OWM0Y2Q3YjRkMmRiOGUyMDI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3JlYXRlLWR1
cmluZy1kZWxpdmVyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWRlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgY3JlYXRlZCBkdXJpbmcgZGVsaXZl
cnkgbXVzdCB3YWl0IGZvciB0aGUgbmV4dCBsb29wLicpOwotZnVuY3Rpb24gZmluaXNoKCkgewot
ICAgIHNob3VsZEJlKCdvcmRlci5sZW5ndGgnLCAnNCcpOwotICAgIHNob3VsZEJlKCdvcmRlclsw
XScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzFdJywgJzInKTsKLSAgICBzaG91bGRCZSgn
b3JkZXJbMl0nLCAnMScpOwotICAgIHNob3VsZEJlKCdvcmRlclszXScsICczJyk7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBvcmRlciA9IFtdOwotdmFyIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi12YXIgb2JzZXJ2ZXIzOwotdmFyIG9ic2VydmVyMSA9IG5l
dyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgIG9yZGVy
LnB1c2goMSk7Ci0gICAgaWYgKCFvYnNlcnZlcjMpIHsKLSAgICAgICAgb2JzZXJ2ZXIzID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAg
ICBvcmRlci5wdXNoKDMpOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIzLm9ic2VydmUo
ZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28n
LCAnYmF6Jyk7Ci0gICAgfQotfSk7Ci12YXIgb2JzZXJ2ZXIyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgb3JkZXIucHVzaCgyKTsKLX0pOwot
Ci1vYnNlcnZlcjEub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1vYnNlcnZlcjIu
b2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1kaXYuc2V0QXR0cmlidXRlKCdmb28n
LCAnYmFyJyk7Ci1zZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZWQ0MzkwNDcxODg1ZGFkNWQ4NjYxNGM2NTJj
MGVkNGYxNmI3MTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZl
cnMgbW92ZSBjb3JyZWN0bHkgYWNyb3NzIGRvY3VtZW50cwotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2Vy
dmF0aW9uLgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2Ci1QQVNT
IG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKLVBBU1MgbXV0YXRpb25zWzBdLmF0
dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi0KLVRlc3RpbmcgdGhhdCBzdWJ0cmVlIG9ic2VydmF0
aW9uIHdvcmtzIGFmdGVyIG5vZGUgaXMgbW92ZWQuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMg
MQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25z
WzBdLnRhcmdldCBpcyBzdWJEaXYKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMg
ImlkIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLQotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjRlZTdmMGNmY2Q4NzRiZWRiZjg4YTlmYWZhN2FiYTlmMTgwNGZhMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQ+Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXZhciBtdXRhdGlv
bnM7Ci12YXIgZGl2LCBzdWJEaXY7Ci0KLWZ1bmN0aW9uIHRlc3RCYXNpYygpIHsKLSAgICB2YXIg
b2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3Rp
bmcgYmFzaWMgYXNwZWN0cyBvZiBjcm9zcy1kb2N1bWVudCBvYnNlcnZhdGlvbi4nKTsKLQotICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBt
dXRhdGlvbnM7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7
YXR0cmlidXRlczogdHJ1ZX0pOwotICAgICAgICB2YXIgbmV3RG9jID0gZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycsICcnLCBudWxsKTsKLSAgICAgICAgbmV3RG9jLmFw
cGVuZENoaWxkKGRpdik7Ci0gICAgICAgIGRpdi5pZCA9ICdmb28nOwotICAgICAgICBzZXRUaW1l
b3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29u
bmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAg
fQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFN1YnRyZWUoKSB7Ci0gICAgdmFy
IG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0
aW5nIHRoYXQgc3VidHJlZSBvYnNlcnZhdGlvbiB3b3JrcyBhZnRlciBub2RlIGlzIG1vdmVkLicp
OwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2lu
ZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2
ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci0gICAg
ICAgIHZhciBuZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgn
JywgJycsIG51bGwpOwotICAgICAgICBuZXdEb2MuYXBwZW5kQ2hpbGQoZGl2KTsKLSAgICAgICAg
c3ViRGl2LmlkID0gJ2Zvbyc7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMu
bGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJh
dHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdz
dWJEaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywg
JyJpZCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRl
YnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwot
fQotCi12YXIgdGVzdHMgPSBbdGVzdEJhc2ljLCB0ZXN0U3VidHJlZV07Ci12YXIgdGVzdEluZGV4
ID0gMDsKLQotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7Ci0gICAgaWYgKHRlc3RJbmRleCA8IHRl
c3RzLmxlbmd0aCkKLSAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7Ci0gICAgZWxzZQotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlv
bk9ic2VydmVycyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3MgZG9jdW1lbnRzJyk7Ci0KLWlmICghd2lu
ZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCi0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7Ci1lbHNlCi0gICAgcnVuTmV4dFRl
c3QoKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2RhdGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnkt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjRlZjkwNGIwYmI3
MjgzMDkxNDk1MGRlZTc4NzU5MjUwMTQyN2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGF0YWJhc2UtY2Fs
bGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotVGVzdGluZyBtdXRhdGlvbnMgYXJlIGRlbGl2ZXJlZCBmb2xsb3dpbmcgRGF0YWJhc2UgdHJh
bnNhY3Rpb24gY2FsbGJhY2tzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFT
UyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJp
YnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi0KLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RhdGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RhdGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3OWEzZmFjMjdkZDg3Y2E5NDU5
YzYxYzExMmE2YzI4YzQ2NmY2MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kYXRhYmFzZS1jYWxsYmFjay1k
ZWxpdmVyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci12YXIgbXV0YXRpb25z
OwotCi1mdW5jdGlvbiB0ZXN0RGF0YWJhc2UoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgZGI7
Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIG11
dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRh
dGE6IHRydWUgfSk7Ci0KLSAgICAgICAgZGIgPSBvcGVuRGF0YWJhc2UoJ0RhdGFiYXNlTXV0YXRp
b25EZWxpdmVyeScsICcxLjAnLCAnJywgMSk7Ci0gICAgICAgIGRiLnRyYW5zYWN0aW9uKG11dGF0
ZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbXV0YXRlKCkgewotICAgICAgICBkaXYuc2V0QXR0
cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWUnLCAnImZvbyInKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAg
ICBkZWJ1ZygnJyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0
KCk7Ci19Ci0KLWRlc2NyaXB0aW9uKCdUZXN0aW5nIG11dGF0aW9ucyBhcmUgZGVsaXZlcmVkIGZv
bGxvd2luZyBEYXRhYmFzZSB0cmFuc2FjdGlvbiBjYWxsYmFja3MuJyk7Ci0KLWlmICghd2luZG93
LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpIHsKLSAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVx
dWlyZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUyknKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0gZWxzZQotICAgIHRlc3REYXRhYmFzZSgpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2RlbGl2ZXJ5LW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGVsaXZlcnktb3JkZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWU3MTRlYjk0NzU2Nzc2ZjFlZWQ1ZGEzZjViMWM0YTll
MTE2Y2Y3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGVsaXZlcnktb3JkZXItZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIGFy
ZSBkZWxpdmVyZWQgdG8gaW4gb3JkZXIgb2YgY3JlYXRpb24uCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIG9yZGVyLmxlbmd0aCBpcyAxMAotUEFTUyBvcmRlclswXSBpcyAw
Ci1QQVNTIG9yZGVyWzFdIGlzIDEKLVBBU1Mgb3JkZXJbMl0gaXMgMgotUEFTUyBvcmRlclszXSBp
cyAzCi1QQVNTIG9yZGVyWzRdIGlzIDQKLVBBU1Mgb3JkZXJbNV0gaXMgNQotUEFTUyBvcmRlcls2
XSBpcyA2Ci1QQVNTIG9yZGVyWzddIGlzIDcKLVBBU1Mgb3JkZXJbOF0gaXMgOAotUEFTUyBvcmRl
cls5XSBpcyA5Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kZWxpdmVyeS1vcmRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kZWxpdmVyeS1vcmRlci5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTU1YzBkNjJiNjUzNDhkOWVhYTNjMmI1MDY3
ZjVmYWZiODJiNGRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGVsaXZlcnktb3JkZXIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgotd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi1kZXNjcmlwdGlvbignVGVzdCB0aGF0IE11dGF0aW9u
T2JzZXJ2ZXJzIGFyZSBkZWxpdmVyZWQgdG8gaW4gb3JkZXIgb2YgY3JlYXRpb24uJyk7Ci1mdW5j
dGlvbiBmaW5pc2goKSB7Ci0gICAgc2hvdWxkQmUoJ29yZGVyLmxlbmd0aCcsICcxMCcpOwotICAg
IHNob3VsZEJlKCdvcmRlclswXScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzFdJywgJzEn
KTsKLSAgICBzaG91bGRCZSgnb3JkZXJbMl0nLCAnMicpOwotICAgIHNob3VsZEJlKCdvcmRlclsz
XScsICczJyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzRdJywgJzQnKTsKLSAgICBzaG91bGRCZSgn
b3JkZXJbNV0nLCAnNScpOwotICAgIHNob3VsZEJlKCdvcmRlcls2XScsICc2Jyk7Ci0gICAgc2hv
dWxkQmUoJ29yZGVyWzddJywgJzcnKTsKLSAgICBzaG91bGRCZSgnb3JkZXJbOF0nLCAnOCcpOwot
ICAgIHNob3VsZEJlKCdvcmRlcls5XScsICc5Jyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LXZhciBvcmRlciA9IFtdOwotdmFyIG9ic2VydmVycyA9IFtdOwotCi1mdW5jdGlvbiBzZXRVcE9y
ZGVyaW5nKG51bSkgewotICAgIG9ic2VydmVycy5wdXNoKG5ldyBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICBvcmRlci5wdXNoKG51bSk7Ci0gICAg
fSkpOwotfQotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICBzZXRVcE9yZGVy
aW5nKGkpOwotfQotCi12YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci1v
YnNlcnZlcnNbM10ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1vYnNlcnZlcnNb
Ml0ub2JzZXJ2ZShkaXYsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci1v
YnNlcnZlcnNbMV0ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1vYnNlcnZlcnNb
N10ub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKLW9ic2VydmVyc1s0XS5vYnNlcnZl
KGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLW9ic2VydmVyc1s5XS5vYnNlcnZlKGRpdiwge2F0
dHJpYnV0ZXM6IHRydWV9KTsKLW9ic2VydmVyc1swXS5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDog
dHJ1ZX0pOwotb2JzZXJ2ZXJzWzVdLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwot
b2JzZXJ2ZXJzWzZdLm9ic2VydmUoZGl2LCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZSwgc3VidHJlZTog
dHJ1ZX0pOwotb2JzZXJ2ZXJzWzhdLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwot
ZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdoZWxsbycpKTsKLWRpdi5maXJzdENoaWxkLnRleHRDb250ZW50ID0g
J2dvb2RieWUnOwotc2V0VGltZW91dChmaW5pc2gsIDApOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRpbmctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kaXNjb25uZWN0LWNhbmNlbC1w
ZW5kaW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1ZDk3
ZTc1MzJkNjhmNjY2ZWJhZTlmYTVjMGEzY2FkM2ZiMWIxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Rpc2Nv
bm5lY3QtY2FuY2VsLXBlbmRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQg
KzAsMCBAQAotVGVzdCB0aGF0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCBjYW5j
ZWxzIHBlbmRpbmcgZGVsaXZlcnkKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLURp
c2Nvbm5lY3Rpbmcgc2hvdWxkIGNhbmNlbCBhbnkgcGVuZGluZyBkZWxpdmVyeS4uLgotUEFTUyBt
dXRhdGlvbnMgaXMgbnVsbAotLi4uYW5kIHJlLW9ic2VydmluZyBzaG91bGQgbm90IHNlZSBhbnkg
b2YgdGhlIHByZXZpb3VzbHktZ2VuZXJhdGVkIHJlY29yZHMuCi1QQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYmFyIgotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGlzY29ubmVjdC1jYW5jZWwtcGVuZGluZy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MmZkNTI5ZTM5YzUxYWM3YzQ2OGM5
OWJlYTM3MTM3NTAxNTZhZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kaXNjb25uZWN0LWNhbmNlbC1wZW5k
aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLWRlc2NyaXB0aW9uKCdUZXN0IHRoYXQgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5k
aXNjb25uZWN0IGNhbmNlbHMgcGVuZGluZyBkZWxpdmVyeScpOwotCi13aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Ci12YXIgbXV0YXRpb25zOwotdmFyIG9ic2VydmVyOwotCi1mdW5jdGlvbiBz
dGFydCgpIHsKLSAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNl
cnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgfSk7Ci0KLSAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0g
ICAgc2V0VGltZW91dChuZXh0LCAwKTsKLX0KLQotZnVuY3Rpb24gbmV4dCgpIHsKLSAgICBkZWJ1
ZygnRGlzY29ubmVjdGluZyBzaG91bGQgY2FuY2VsIGFueSBwZW5kaW5nIGRlbGl2ZXJ5Li4uJyk7
Ci0gICAgc2hvdWxkQmVOdWxsKCdtdXRhdGlvbnMnKTsKLSAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JhcicsICdi
YXonKTsKLSAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaCgp
IHsKLSAgICBkZWJ1ZygnLi4uYW5kIHJlLW9ic2VydmluZyBzaG91bGQgbm90IHNlZSBhbnkgb2Yg
dGhlIHByZXZpb3VzbHktZ2VuZXJhdGVkIHJlY29yZHMuJyk7Ci0gICAgc2hvdWxkQmUoJ211dGF0
aW9ucy5sZW5ndGgnLCAnMScpOwotICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZScsICciYmFyIicpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1pZiAoIXdpbmRvdy5X
ZWJLaXRNdXRhdGlvbk9ic2VydmVyKQotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOwotZWxzZQotICAgIHN0YXJ0KCk7Ci0KLTwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1m
cmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMmYzZWUzZjQzYWE5OWM2MmJhMzhhZWJlMTM3NDc0MmI3MmNlMTM4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUluc2VydGluZyBEb2N1bWVudEZyYWdt
ZW50cyBzaG91bGQgcmVtb3ZlIGFsbCBjaGlsZHJlbiBvZiB0aGUgZnJhZ21lbnQgYmVmb3JlIGlu
c2VydGluZyB0aGUgY2hpbGRyZW4uCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1U
ZXN0aW5nIGFwcGVuZENoaWxkCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRh
dGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBp
cyAyCi1QQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKLQotVGVzdGlu
ZyBpbnNlcnRCZWZvcmUKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9u
c1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9k
ZXMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIK
LVBBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAotCi1UZXN0aW5nIHJl
cGxhY2VDaGlsZAotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzBd
LmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKLVBBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5s
ZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgotUEFT
UyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCi0KLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24uaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FjNDZjZmY0MzIwN2E5ZTJiZjBkOWZhNmMz
YzNkZWMyYWU1ZmZlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlv
bi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci1kZXNjcmlwdGlvbignSW5zZXJ0aW5nIERvY3VtZW50RnJhZ21lbnRzIHNob3VsZCBy
ZW1vdmUgYWxsIGNoaWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZvcmUgaW5zZXJ0aW5nIHRoZSBj
aGlsZHJlbi4nKTsKLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi1mdW5jdGlvbiBj
cmVhdGVPYnNlcnZlZEZyYWdtZW50KCkgewotICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdiJykpOwotICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2knKSk7Ci0gICAgb2JzZXJ2ZXIub2JzZXJ2ZShmcmFnbWVudCwge2No
aWxkTGlzdDogdHJ1ZX0pOwotICAgIHJldHVybiBmcmFnbWVudDsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlT2JzZXJ2ZWREaXYoKSB7Ci0gICAgcmV0dXJuIGRpdjsKLX0KLQotZnVuY3Rpb24gY2FsbGJh
Y2sobXV0YXRpb25zKSB7Ci0gICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKLX0KLXZh
ciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTsKLQotZnVu
Y3Rpb24gdGVzdEFwcGVuZENoaWxkKCkgewotICAgIGRlYnVnKCdUZXN0aW5nIGFwcGVuZENoaWxk
Jyk7Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIG9i
c2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7Ci0gICAgZGl2LmFwcGVuZENo
aWxkKGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7Ci0g
ICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgdGVzdEluc2VydEJlZm9yZSgpOwotICAgIH0sIDAp
OwotfQotCi1mdW5jdGlvbiB0ZXN0SW5zZXJ0QmVmb3JlKCkgewotICAgIGRlYnVnKCdUZXN0aW5n
IGluc2VydEJlZm9yZScpOwotICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bhbicp
KTsKLSAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOwotICAgIGRp
di5pbnNlcnRCZWZvcmUoY3JlYXRlT2JzZXJ2ZWRGcmFnbWVudCgpLCBkaXYuZmlyc3RDaGlsZCk7
Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXMubGVuZ3RoJywgJzAnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVk
Tm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRl
ZE5vZGVzLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVt
b3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgdGVz
dFJlcGxhY2VDaGlsZCgpOwotICAgIH0sIDApOwotfQotCi1mdW5jdGlvbiB0ZXN0UmVwbGFjZUNo
aWxkKCkgewotICAgIGRlYnVnKCdUZXN0aW5nIHJlcGxhY2VDaGlsZCcpOwotICAgIHZhciBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBkaXYuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKLSAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwg
e2NoaWxkTGlzdDogdHJ1ZX0pOwotICAgIGRpdi5yZXBsYWNlQ2hpbGQoY3JlYXRlT2JzZXJ2ZWRG
cmFnbWVudCgpLCBkaXYuZmlyc3RDaGlsZCk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAg
ICAgIGRlYnVnKCcnKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgMCk7Ci19Ci0K
LXRlc3RBcHBlbmRDaGlsZCgpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2NkZjFlOTM5MzJjYTE3NDI1YTM0ZWMxYTYxNWE4
M2RmMzhiYWQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUEFTU0VECmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc3MTVjNGYwYTJhMzM4NjFjNTk3MjEyMDQyM2E2ZjA0NTBkODk2
MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMjggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08b2wgY29udGVudGVkaXRhYmxl
PgotICAgIDxsaT5QcmVzcyBlbnRlcgotPC9vbD4KLTxwPlRoZW4gY2xpY2sgaGVyZTwvcD4KLTxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9
Ci0KLSAgICB2YXIgbGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ29sJyk7Ci0gICAgdmFy
IHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwJyk7Ci0gICAgdmFyIG9ic2VydmVyUnVucyA9
IDA7Ci0gICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rp
b24oKSB7ICsrb2JzZXJ2ZXJSdW5zOyB9KTsKLSAgICBvYnNlcnZlci5vYnNlcnZlKGxpc3QsIHtj
aGlsZExpc3Q6IHRydWV9KTsKLSAgICBsaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBvYnNlcnZlclJ1bnMg
PT0gMSA/ICdQQVNTRUQnIDogJ0ZBSUxFRCc7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotICAgIGxp
c3QuZm9jdXMoKTsKLSAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIGV2ZW50
U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bignXG4nKTsKLSAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8ocC5vZmZzZXRMZWZ0ICsgcC5vZmZzZXRXaWR0aCAvIDIsIHAub2Zm
c2V0VG9wICsgcC5vZmZzZXRIZWlnaHQgLyAyKTsKLSAgICAgICAgZXZlbnRTZW5kZXIuc2NoZWR1
bGVBc3luY2hyb25vdXNDbGljaygpOwotICAgIH0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZmlsZXN5c3RlbS1jYWxsYmFjay1k
ZWxpdmVyeS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNDk3
NjFhYmY3ODA1MWUyMjg2MjlkYTk2OGIxNjU4N2VkMGQ2OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxl
c3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDE2ICswLDAgQEAKLVRlc3QgdGhhdCBNdXRhdGlvbiBSZWNvcmRzIGFyZSBkZWxpdmVyZWQgZm9s
bG93aW5nIEZpbGVTeXN0ZW0gY2FsbGJhY2tzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUg
aXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28i
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
YXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImJheiIKLQot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxp
dmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxiYWNr
LWRlbGl2ZXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMWM1NmExNWE4
ZTgyMzA0YzgxZTU3ZjRhY2RjODhjOWRiNzU3ZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVt
LWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXZh
ciBtdXRhdGlvbnM7Ci0KLWZ1bmN0aW9uIHRlc3RGaWxlc3lzdGVtKCkgewotICAgIHZhciBkaXY7
Ci0gICAgdmFyIGZpbGVFbnRyeTsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBz
dGFydCgpIHsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRl
czogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLQotICAgICAgICB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShURU1QT1JBUlksIDUqMTAyNCoxMDI0LCBmdW5jdGlvbihmcykgewotICAgICAg
ICAgICAgZnMucm9vdC5nZXRGaWxlKCdmb28udHh0Jywge2NyZWF0ZTogdHJ1ZSwgZXhjbHVzZTog
dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgZmlsZUVudHJ5ID0gZW50
cnk7Ci0gICAgICAgICAgICAgICAgZmlsZUVudHJ5LmdldFBhcmVudChtdXRhdGVBZnRlckdldFBh
cmVudCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gbXV0YXRlQWZ0ZXJHZXRQYXJlbnQoKSB7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2Zv
bycsICdiYXInKTsKLSAgICAgICAgZmlsZUVudHJ5LnJlbW92ZShtdXRhdGVBZnRlclJlbW92ZSk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbXV0YXRlQWZ0ZXJSZW1vdmUoKSB7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF0Jyk7Ci0gICAgICAgIHNl
dFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImJheiInKTsKLQotICAgICAgICBvYnNl
cnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3QgdGhh
dCBNdXRhdGlvbiBSZWNvcmRzIGFyZSBkZWxpdmVyZWQgZm9sbG93aW5nIEZpbGVTeXN0ZW0gY2Fs
bGJhY2tzLicpOwotCi1pZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIHx8ICF3aW5k
b3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3Qg
cmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykgYW5kIEVOQUJMRShGSUxFX1NZU1RF
TSknKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0gZWxzZQotICAgIHRlc3RGaWxlc3lzdGVtKCk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vaW5saW5l
LWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
aW5saW5lLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTNjZGYxZTkzOTMyY2ExNzQyNWEzNGVjMWE2MTVhODNkZjM4YmFkOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi1QQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL2lubGluZS1ldmVudC1saXN0ZW5lci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyMmJjYzJjNDljNTNmMmRiMzNiN2EwMDI1YjE3ZThjNDkzMWJiNTkwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxvbCBjb250ZW50ZWRpdGFibGUgb25pbnB1dD0iZG9j
dW1lbnQuYm9keS5pbm5lckhUTUwgPSBvYnNlcnZlclJhbiA/ICdGQUlMRUQnIDogJ1BBU1NFRCc7
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiPgotICAgIDxs
aT5QcmVzcyBlbnRlcgotPC9vbD4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0KLSAgICB2YXIgbGlzdCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ29sJyk7Ci0gICAgdmFyIG9ic2VydmVyUmFuID0gZmFsc2U7Ci0gICAgdmFyIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7IG9ic2VydmVy
UmFuID0gdHJ1ZTsgfSk7Ci0gICAgb2JzZXJ2ZXIub2JzZXJ2ZShsaXN0LCB7Y2hpbGRMaXN0OiB0
cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7Ci0gICAgbGlzdC5mb2N1cygpOwotICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAgICAgIGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9u
b3VzS2V5RG93bignXG4nKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRlLWR1cmluZy1kZWxpdmVyeS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NmMwZDdhMDllYjQ0MjcxMTIzZDQ4OTc5NWI4
NWE4Nzc2NWFhMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVRlc3QgdGhhdCBtdXRhdGlv
bnMgZHVyaW5nIGRlbGl2ZXJ5IGRvIG5vdCBpbnRlcnJ1cHQgZGVsaXZlcnkgb3JkZXIuCi0KLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG9yZGVyLmxlbmd0aCBpcyAzCi1QQVNT
IG9yZGVyWzBdIGlzIDEKLVBBU1Mgb3JkZXJbMV0gaXMgMwotUEFTUyBvcmRlclsyXSBpcyAyCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0ZS1kdXJpbmctZGVsaXZlcnkuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzMDFiOTdlNWNkMThhMTA1MjI0Y2Zk
YWM0ZmU0ZjhhMzkzN2IzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0ZS1kdXJpbmctZGVsaXZlcnku
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0Pgotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi1kZXNjcmlwdGlvbignVGVzdCB0
aGF0IG11dGF0aW9ucyBkdXJpbmcgZGVsaXZlcnkgZG8gbm90IGludGVycnVwdCBkZWxpdmVyeSBv
cmRlci4nKTsKLWZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICBzaG91bGRCZSgnb3JkZXIubGVuZ3Ro
JywgJzMnKTsKLSAgICBzaG91bGRCZSgnb3JkZXJbMF0nLCAnMScpOwotICAgIHNob3VsZEJlKCdv
cmRlclsxXScsICczJyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzJdJywgJzInKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdmFyIG9yZGVyID0gW107Ci12YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0KLXZhciBvYnNlcnZlcjEgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICBvcmRlci5wdXNoKDEpOwotICAgIGRp
di5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOwotfSk7Ci12YXIg
b2JzZXJ2ZXIyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25z
KSB7Ci0gICAgb3JkZXIucHVzaCgyKTsKLX0pOwotdmFyIG9ic2VydmVyMyA9IG5ldyBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgIG9yZGVyLnB1c2goMyk7
Ci19KTsKLQotb2JzZXJ2ZXIxLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwotb2Jz
ZXJ2ZXIyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7Ci1vYnNlcnZlcjMub2JzZXJ2
ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1kaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFy
Jyk7Ci1zZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tY2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jhc2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1jYWxsYmFj
ay1ub24tZWxlbWVudC1jcmFzaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQyZThlYTNmMWNhMDQyZmNmODU1ZDMzYmQ5MzhjMmUyYTk3NmI0NzkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9tdXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1QQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLWNhbGxiYWNrLW5v
bi1lbGVtZW50LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9u
LWNhbGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IGRhZjM2NWE2YTY4OWIyNTEwYjY3MjA2NjMzMGQzNjA2NjA1MWEwZDMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9tdXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxib2R5Pgot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLQotZnVuY3Rpb24gbXV0YXRpb25DYWxsYmFjayhtdXRhdGlvbnMsIG9ic2VydmVyKSB7
Ci0gICAgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbLTFdOwotfQotCi12YXIgbXV0YXRpb25PYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9uQ2FsbGJhY2spOwotbXV0
YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWV9KTsK
LWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlBBU1Mu
IFdlYktpdCBkaWRuJ3QgY3Jhc2giKSk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItY29u
c3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlv
bi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJiZWIzZTg2ZTcwZTI0ODVhNzcyMDE4MDc3NjQyODU5MTc5Mjc0OWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1UZXN0IHRoZSBjb25zdHJ1Y3RvciBvZiBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNT
IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIGlzIG5vbi1udWxsLgotUEFTUyB0eXBlb2Yg
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZSBpcyAiZnVuY3Rpb24iCi1Q
QVNTIHR5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5kaXNjb25uZWN0IGlz
ICJmdW5jdGlvbiIKLVBBU1MgdHlwZW9mIG9ic2VydmVyLm9ic2VydmUgaXMgImZ1bmN0aW9uIgot
UEFTUyB0eXBlb2Ygb2JzZXJ2ZXIuZGlzY29ubmVjdCBpcyAiZnVuY3Rpb24iCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rv
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjQwZjcwZWQ3MzY4ZjUzODVh
MWY0OWQ4NWQzOWU0YTYwYWUzN2NkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXIt
Y29uc3RydWN0b3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHRpdGxlPjwv
dGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPWRlc2NyaXB0aW9uPjwvcD4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBz
aG91bGRCZU5vbk51bGwoJ3dpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyJyk7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5
cGUub2JzZXJ2ZScsICdmdW5jdGlvbicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHlw
ZW9mIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLmRpc2Nvbm5lY3QnLCAnZnVuY3Rp
b24nKTsKLSAgICB3aW5kb3cub2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbihtdXRhdGlvbnMpIHsgfSk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBl
b2Ygb2JzZXJ2ZXIub2JzZXJ2ZScsICdmdW5jdGlvbicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygndHlwZW9mIG9ic2VydmVyLmRpc2Nvbm5lY3QnLCAnZnVuY3Rpb24nKTsKLX0KLQotZGVz
Y3JpcHRpb24oJ1Rlc3QgdGhlIGNvbnN0cnVjdG9yIG9mIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIn
KTsKLQotaWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcikKLSAgICB0ZXN0RmFpbGVk
KCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUyknKTsKLWVsc2UK
LSAgICBydW5UZXN0KCk7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxs
aXR5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIwNTY2NGUx
ZTM1Yjk4N2YzZjY1ZGFhM2UwYmI2ODc3YTkzOGRkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9u
LXJlY29yZC1udWxsaXR5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAg
QEAKLU5vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJl
IG51bGwsIGV4Y2VwdCBmb3IgTm9kZUxpc3RzLCB3aGljaCBzaG91bGQgYmUgZW1wdHkKLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLWNoYXJhY3RlckRhdGEgcmVjb3JkOgotUEFTUyBy
ZWNvcmQuYXR0cmlidXRlTmFtZSBpcyBudWxsCi1QQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3Bh
Y2UgaXMgbnVsbAotUEFTUyByZWNvcmQub2xkVmFsdWUgaXMgbnVsbAotUEFTUyByZWNvcmQucHJl
dmlvdXNTaWJsaW5nIGlzIG51bGwKLVBBU1MgcmVjb3JkLm5leHRTaWJsaW5nIGlzIG51bGwKLVBB
U1MgcmVjb3JkLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKLVBBU1MgcmVjb3JkLnJlbW92ZWROb2Rl
cy5sZW5ndGggaXMgMAotCi1jaGlsZExpc3QgcmVjb3JkOgotUEFTUyByZWNvcmQuYXR0cmlidXRl
TmFtZSBpcyBudWxsCi1QQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotUEFT
UyByZWNvcmQub2xkVmFsdWUgaXMgbnVsbAotCi1hdHRyaWJ1dGVzIHJlY29yZDoKLVBBU1MgcmVj
b3JkLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBu
dWxsCi1QQVNTIHJlY29yZC5wcmV2aW91c1NpYmxpbmcgaXMgbnVsbAotUEFTUyByZWNvcmQubmV4
dFNpYmxpbmcgaXMgbnVsbAotUEFTUyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAotUEFT
UyByZWNvcmQucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhZjQ4ZmRjNWRlYWM5YWE4MDNmMDgzYTljZWRhMzA3NGJlMTVhOWYwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDQwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24o
J05vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51
bGwsIGV4Y2VwdCBmb3IgTm9kZUxpc3RzLCB3aGljaCBzaG91bGQgYmUgZW1wdHknKTsKLXZhciBv
YnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30pOwotCi12
YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdzb21ldGhpbmcnKTsKLW9ic2VydmVy
Lm9ic2VydmUodGV4dCwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsKLXRleHQuZGF0YSA9ICdzb21l
dGhpbmcgZWxzZSc7Ci12YXIgcmVjb3JkID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKVswXTsKLWRl
YnVnKCdjaGFyYWN0ZXJEYXRhIHJlY29yZDonKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJp
YnV0ZU5hbWUnKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFjZScpOwot
c2hvdWxkQmVOdWxsKCdyZWNvcmQub2xkVmFsdWUnKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLnBy
ZXZpb3VzU2libGluZycpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQubmV4dFNpYmxpbmcnKTsKLXNo
b3VsZEJlKCdyZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwotc2hvdWxkQmUoJ3JlY29y
ZC5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKLQotdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwotb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9
KTsKLWRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOwotcmVj
b3JkID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKVswXTsKLWRlYnVnKCdcbmNoaWxkTGlzdCByZWNv
cmQ6Jyk7Ci1zaG91bGRCZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lJyk7Ci1zaG91bGRCZU51
bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UnKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLm9s
ZFZhbHVlJyk7Ci0KLW9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwot
ZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS1mb28nLCAnYmFyJyk7Ci1yZWNvcmQgPSBvYnNlcnZlci50
YWtlUmVjb3JkcygpWzBdOwotZGVidWcoJ1xuYXR0cmlidXRlcyByZWNvcmQ6Jyk7Ci1zaG91bGRC
ZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UnKTsKLXNob3VsZEJlTnVsbCgncmVjb3Jk
Lm9sZFZhbHVlJyk7Ci1zaG91bGRCZU51bGwoJ3JlY29yZC5wcmV2aW91c1NpYmxpbmcnKTsKLXNo
b3VsZEJlTnVsbCgncmVjb3JkLm5leHRTaWJsaW5nJyk7Ci1zaG91bGRCZSgncmVjb3JkLmFkZGVk
Tm9kZXMubGVuZ3RoJywgJzAnKTsKLXNob3VsZEJlKCdyZWNvcmQucmVtb3ZlZE5vZGVzLmxlbmd0
aCcsICcwJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDdmNjMxNmZlNWRkNTYwZDliNWQ1MWI3MmFmYjRkMWY4YWIwNmVmOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwyMzYgKzAsMCBAQAotVGVzdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9ic2VydmUg
b24gYXR0cmlidXRlcwotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotVGVzdGluZyBi
YXNpYyBhc3BlY3RzIG9mIGF0dHJpYnV0ZSBvYnNlcnZhdGlvbi4KLS4uLmNhbiBhdHRyaWJ1dGUg
Y2hhbmdlcyBiZSBvYnNlcnZlZCBhdCBhbGwKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1Q
QVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNw
YWNlIGlzIG51bGwKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNT
IG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCi1QQVNTIG11dGF0aW9uc1sxXS5h
dHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotLi4ub2JzZXJ2ZXIuZGlzY29ubmVjdCgpIHNob3Vs
ZCBwcmV2ZW50IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRpb25zLgotUEFTUyBtdXRhdGlvbnMg
aXMgbnVsbAotLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5lY3Qgd29ya3Mgd2l0aCB0aGUg
c2FtZSBvYnNlcnZlci4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9u
c1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwK
LVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sx
XS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1l
c3BhY2UgaXMgbnVsbAotCi1UZXN0aW5nIHRoYXQgb2JzZXJ2aW5nIHdpdGhvdXQgc3BlY2lmeWlu
ZyAiYXR0cmlidXRlcyIgZG9lcyBub3QgcmVzdWx0IGluIGhlYXJpbmcgYWJvdXQgYXR0cmlidXRl
IGNoYW5nZXMuCi1QQVNTIG11dGF0aW9ucyBpcyBudWxsCi0KLVRlc3RpbmcgdGhhdCByZS1vYnNl
cnZpbmcgdGhlIHNhbWUgbm9kZSB3aXRoIHRoZSBzYW1lIG9ic2VydmVyIGhhcyB0aGUgZWZmZWN0
IG9mIHJlc2V0dGluZyB0aGUgb3B0aW9ucy4KLVBBU1MgY2FsbHMgaXMgMQotUEFTUyBtdXRhdGlv
bnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1Q
QVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9ucyBp
cyBudWxsCi0KLVRlc3RpbmcgdGhhdCBtdWx0aXBsZSBvYnNlcnZlcnMgY2FuIGJlIHJlZ2lzdGVy
ZWQgdG8gYSBnaXZlbiBub2RlIGFuZCBib3RoIHJlY2VpdmUgbXV0YXRpb25zLgotUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMi
Ci1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9u
czIubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zMlswXS50eXBlIGlzICJhdHRyaWJ1dGVzIgot
UEFTUyBtdXRhdGlvbnMyWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLQotVGVzdGluZyB0aGF0
ICJhdHRyaWJ1dGVOYW1lc3BhY2UiIHZhbHVlIGlzIGRlbGl2ZXJlZCBwcm9wZXJseS4KLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzICJodHRwOi8vd3d3LmZvby5jb20vYmFyIgot
Ci1UZXN0aW5nIHRoYXQgbW9kaWZpY2F0aW9ucyB0byBub2RlIHByb3BlcnRpZXMgd2hpY2ggZGVs
ZWdhdGUgdG8gYXR0cmlidXRlIHN0b3JhZ2UgZGVsaXZlciBtdXRhdGlvbnMuCi1QQVNTIG11dGF0
aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIK
LVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgInNyYyIKLVBBU1MgbXV0YXRpb25z
WzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1l
IGlzICJocmVmIgotCi1UZXN0aW5nIG11dGF0aW9uIHJlY29yZHMgYXJlIGVucXVldWVkIGZvciBh
dHRyaWJ1dGVzIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZpZWQgaXMgZGlzcGF0Y2hlZC4KLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRh
dGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWUgaXMgImJheiIKLQotVGVzdGluZyBiYXNpYyBvbGRWYWx1ZSBkZWxpdmVyeS4KLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRh
dGlvbnNbMF0ub2xkVmFsdWUgaXMgbnVsbAotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0
cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1Mg
bXV0YXRpb25zWzFdLm9sZFZhbHVlIGlzICJiYXIiCi1QQVNTIG11dGF0aW9uc1syXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBpcyAiYmFyIgot
UEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgImJvbyIKLQotVGVzdGluZyB0aGF0IG9sZFZh
bHVlIGlzIGRlbGl2ZXJlZCBhcyByZXF1ZXN0ZWQgKG9yIG5vdCkuCi1QQVNTIG11dGF0aW9uc1dp
dGhPbGRWYWx1ZS5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLmF0dHJpYnV0
ZU5hbWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLm9sZFZhbHVlIGlz
ICJiYXIiCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZv
byIKLVBBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzIG51bGwKLQotQW4gb2JzZXJ2ZXIgd2l0
aCBtdWx0aXBsZSBvYnNlcnZhdGlvbnMgd2lsbCBnZXQgYXR0cmlidXRlT2xkVmFsdWUgaWYgYW55
IGVudHJpZXMgcmVxdWVzdCBpdC4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11
dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImJhciIKLQot
VGVzdGluZyBzZXR0aW5nIGFuIGF0dHJpYnV0ZSB2aWEgcmVmbGVjdGVkIElETCBhdHRyaWJ1dGUu
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMwotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
YXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgotUEFT
UyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgbnVsbAotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBp
cyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgot
UEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zWzJdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJp
ZCIKLVBBU1MgbXV0YXRpb25zWzJdLm9sZFZhbHVlIGlzICJiYXIiCi0KLVRlc3RpbmcgdGhhdCBh
dHRyaWJ1dGVGaWx0ZXIgd29ya3MgYXMgZXhwZWN0ZWQgYW5kIG9ic2VydmVzIGNhc2Ugd2l0aCBI
VE1MIGVsZW1lbnRzLgotLi4ub25seSBmb28gYW5kIGJhciBzaG91bGQgYmUgcmVjZWl2ZWQuCi1Q
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0
cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1Mg
bXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNTIG11dGF0aW9uc1sx
XS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBp
cyAiYmFyIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLQot
VGVzdGluZyB0aGUgYmVoYXZpb3Igb2YgYXR0cmlidXRlRmlsdGVyIHdoZW4gdGhlIHNhbWUgb2Jz
ZXJ2ZXIgb2JzZXJ2ZXMgYXQgbXVsdGlwbGUgbm9kZXMgaW4gYSBzdWJ0cmVlIHdpdGggZGlmZmVy
ZW50IGZpbHRlciBvcHRpb25zLgotLi4ub25seSBmb28sIGJhciAmIGJhdCBzaG91bGQgYmUgcmVj
ZWl2ZWQuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMwotUEFTUyBtdXRhdGlvbnNbMF0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZv
byIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNTIG11
dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmli
dXRlTmFtZSBpcyAiYmFyIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlIGlz
IG51bGwKLVBBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0
aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXQiCi1QQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1
dGVOYW1lc3BhY2UgaXMgbnVsbAotLi4uYmFyLCBiYXQgJiBiYXogc2hvdWxkIGFsbCBiZSByZWNl
aXZlZC4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYmFy
IgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0
YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lIGlzICJiYXQiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMg
bnVsbAotUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRp
b25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImJheiIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0
ZU5hbWVzcGFjZSBpcyBudWxsCi0KLVRlc3RpbmcgdGhhdCBzZXR0aW5nIGFuIGF0dHJpYnV0ZUZp
bHRlciBmaWx0ZXJzIG91dCBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMuCi0uLi5wYXRoTGVuZ3RoIHNo
b3VsZCBub3QgYmUgcmVjZWl2ZWQuCi1QQVNTIG11dGF0aW9ucyBpcyBudWxsCi0KLVRlc3Rpbmcg
dGhhdCBhdHRyaWJ1dGVGaWx0ZXIgcmVzcGVjdHMgY2FzZSB3aXRoIG5vbi1IVE1MIGVsZW1lbnRz
LgotLi4ub25seSBJRCwgaWQsIGJvb00gc2hvdWxkIGJlIHJlY2VpdmVkLgotUEFTUyBtdXRhdGlv
bnMubGVuZ3RoIGlzIDMKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1Q
QVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJJRCIKLVBBU1MgbXV0YXRpb25zWzBd
LmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJh
dHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCi1QQVNT
IG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotUEFTUyBtdXRhdGlvbnNb
Ml0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUg
aXMgImJvb00iCi1QQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAot
Ci1UZXN0aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1lbnRzIHN0eWxlIHByb3BlcnR5IGRpc3Bh
dGNoZXMgTXV0YXRpb24gUmVjb3Jkcy4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNT
IG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZSBpcyAic3R5bGUiCi1QQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxs
Ci1QQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNb
MV0uYXR0cmlidXRlTmFtZSBpcyAic3R5bGUiCi1QQVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBp
cyBudWxsCi1QQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRh
dGlvbnNbMl0uYXR0cmlidXRlTmFtZSBpcyAic3R5bGUiCi1QQVNTIG11dGF0aW9uc1syXS5vbGRW
YWx1ZSBpcyBudWxsCi0uLi5tdXRhdGlvbiByZWNvcmQgY3JlYXRlZC4KLVBBU1MgbXV0YXRpb25z
IGlzIG51bGwKLQotVGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBwcm9w
ZXJ0eSBkaXNwYXRjaGVzIE11dGF0aW9uIFJlY29yZHMgd2l0aCBjb3JyZWN0IG9sZFZhbHVlcy4K
LVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJh
dHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAic3R5bGUiCi1Q
QVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4
OyIKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9u
c1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKLVBBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVl
IGlzICJjb2xvcjogcmVkOyB3aWR0aDogMTAwcHg7IgotUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBp
cyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxl
IgotUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgImNvbG9yOiByZWQ7IHdpZHRoOiAyMDBw
eDsiCi0uLi5tdXRhdGlvbiByZWNvcmQgY3JlYXRlZC4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwK
LQotVGVzdGluZyB0aGF0IGEgbm8tb3Agc3R5bGUgcHJvcGVydHkgbXV0YXRpb24gZG9lcyBub3Qg
Y3JlYXRlIE11dGF0aW9uIFJlY29yZHMuCi1QQVNTIG11dGF0aW9ucyBpcyBudWxsCi0KLVRlc3Qg
dGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgdGhyb3VnaCBhbiBhdHRyIG5vZGUgZGVsaXZlcnMg
bXV0YXRpb24gcmVjb3JkcwotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRp
b25zWzBdLnRhcmdldCBpcyBkaXYKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCi1QQVNT
IG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgotCi1UZXN0IHRoYXQgbXV0YXRpbmcgYW4g
YXR0cmlidXRlIGJ5IGF0dGFjaGluZyBhIGNoaWxkIHRvIGFuIGF0dHIgbm9kZSBkZWxpdmVycyBt
dXRhdGlvbiByZWNvcmRzCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlv
bnNbMF0udGFyZ2V0IGlzIGRpdgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRl
cyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKLVBBU1Mg
bXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCi0KLVRlc3QgdGhhdCBtdXRhdGluZyB2aWEg
c2V0QXR0cmlidXRlTm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzCi1QQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMwotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgotUEFTUyBtdXRh
dGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWUgaXMgImRhdGEtdGVzdCIKLVBBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28i
Ci1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgZGl2Ci1QQVNTIG11dGF0aW9uc1sxXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiZGF0
YS1vdGhlciIKLVBBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVlIGlzIG51bGwKLVBBU1MgbXV0YXRp
b25zWzJdLnRhcmdldCBpcyBkaXYKLVBBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKLVBBU1MgbXV0YXRp
b25zWzJdLm9sZFZhbHVlIGlzICJteUlkIgotCi1UZXN0IHRoYXQgc2V0QXR0cmlidXRlIG9uIGFu
IGF0dHJpYnV0ZSB3aXRoIGFuIGV4aXN0aW5nIEF0dHIgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3Jk
cwotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBp
cyBkaXYKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCi1QQVNTIG11dGF0aW9uc1swXS5v
bGRWYWx1ZSBpcyAiZm9vIgotCi1UZXN0IHRoYXQgc2V0TmFtZWRJdGVtIGFuZCByZW1vdmVOYW1l
ZEl0ZW0gZGVsaXZlciBtdXRhdGlvbiByZWNvcmRzCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMg
MgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgotUEFTUyBtdXRhdGlvbnNbMF0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRh
dGEtdGVzdCIKLVBBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCi1QQVNTIG11dGF0
aW9uc1sxXS50YXJnZXQgaXMgZGl2Ci1QQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0IgotUEFT
UyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgImJhciIKLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmNDc2ZTBhODhmOGMxZTlmNTIwNGEyZmMxMGNmYzI2YTMyY2Y3MTExLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDA4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci12YXIgbXV0YXRpb25zLCBtdXRhdGlvbnMyLCBtdXRhdGlvbnNXaXRoT2xkVmFsdWU7
Ci12YXIgY2FsbHM7Ci12YXIgZGl2OwotCi1mdW5jdGlvbiB0ZXN0QmFzaWMoKSB7Ci0gICAgdmFy
IGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAg
ICAgZGVidWcoJ1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBhdHRyaWJ1dGUgb2JzZXJ2YXRpb24u
Jyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JhcicsICdm
b28nKTsKLQotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0g
ICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3Rl
ckRhdGE6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsK
LSAgICAgICAgZGl2LnJlbW92ZUF0dHJpYnV0ZSgnYmFyJyk7Ci0gICAgICAgIHNldFRpbWVvdXQo
Y2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVj
a0Rpc2Nvbm5lY3RBbmRNdXRhdGUoKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5jYW4gYXR0cmlidXRl
IGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9ucy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJp
YnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
dHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5h
dHRyaWJ1dGVOYW1lJywgJyJiYXIiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
YXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxs
OwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoJ2ZvbycsICdiYXonKTsKLSAgICAgICAgc2V0VGltZW91dChjaGVja05vdERlbGl2ZXJlZEFu
ZE11dGF0ZU11bHRpcGxlLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja05vdERlbGl2
ZXJlZEFuZE11dGF0ZU11bHRpcGxlKCkgewotICAgICAgICBkZWJ1ZygnLi4ub2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpIHNob3VsZCBwcmV2ZW50IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRpb25zLicp
OwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOwotICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAgICBkaXYuc2V0
QXR0cmlidXRlKCdmb28nLCAnYmF0Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2Jhcics
ICdmb28nKTsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gpOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgZGVidWcoJy4uLnJlLW9ic2VydmluZyBhZnRlciBkaXNj
b25uZWN0IHdvcmtzIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIuJyk7Ci0KLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJiYXIiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgb2JzZXJ2ZXIu
ZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7
Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFdyb25nVHlwZSgpIHsK
LSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
ewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9ic2VydmluZyB3aXRob3V0IHNwZWNpZnlp
bmcgImF0dHJpYnV0ZXMiIGRvZXMgbm90IHJlc3VsdCBpbiBoZWFyaW5nIGFib3V0IGF0dHJpYnV0
ZSBjaGFuZ2VzLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBX
ZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9u
cyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNo
aWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LnNldEF0
dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zJywgJ251bGwnKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBk
ZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsK
LX0KLQotZnVuY3Rpb24gdGVzdE11bHRpcGxlUmVnaXN0cmF0aW9uKCkgewotICAgIHZhciBkaXY7
Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRl
YnVnKCdUZXN0aW5nIHRoYXQgcmUtb2JzZXJ2aW5nIHRoZSBzYW1lIG5vZGUgd2l0aCB0aGUgc2Ft
ZSBvYnNlcnZlciBoYXMgdGhlIGVmZmVjdCBvZiByZXNldHRpbmcgdGhlIG9wdGlvbnMuJyk7Ci0K
LQkJY2FsbHMgPSAwOwotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMg
PSBtOwotCQkJY2FsbHMrKzsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLSAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKLSAgICAgICAg
ZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBzZXRUaW1lb3V0KGNoZWNr
RGlzY29ubmVjdEFuZE11dGF0ZSwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tEaXNj
b25uZWN0QW5kTXV0YXRlKCkgewotICAgICAgICBzaG91bGRCZSgnY2FsbHMnLCAnMScpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIG11dGF0aW9u
cyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRy
dWUsIGNoYXJhY3RlckRhdGE6IHRydWUgfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2
LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywg
J2JheicpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsK
LSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAg
ICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24g
dGVzdE11bHRpcGxlT2JzZXJ2ZXJzKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVy
OwotICAgIHZhciBvYnNlcnZlcjI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAg
ZGVidWcoJ1Rlc3RpbmcgdGhhdCBtdWx0aXBsZSBvYnNlcnZlcnMgY2FuIGJlIHJlZ2lzdGVyZWQg
dG8gYSBnaXZlbiBub2RlIGFuZCBib3RoIHJlY2VpdmUgbXV0YXRpb25zLicpOwotICAgICAgICBt
dXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5j
dGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLSAgICAg
ICAgb2JzZXJ2ZXIyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewot
ICAgICAgICAgICAgbXV0YXRpb25zMiA9IG07Ci0gICAgICAgIH0pOwotICAgICAgICBvYnNlcnZl
ci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAgICBvYnNlcnZlcjIu
b2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LnNldEF0dHJp
YnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICci
YXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyLmxlbmd0aCcsICcx
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZv
byInKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBvYnNlcnZlcjIu
ZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7
Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE5hbWVzcGFjZVVSSSgp
IHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0
KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0ICJhdHRyaWJ1dGVOYW1lc3BhY2UiIHZh
bHVlIGlzIGRlbGl2ZXJlZCBwcm9wZXJseS4nKTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
LSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAg
ICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2Jz
ZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAg
ICBkaXYuc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cuZm9vLmNvbS9iYXInLCAnZm9vJywgJ2Jh
cicpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7ICAgIAotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAn
MScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9v
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScs
ICciaHR0cDovL3d3dy5mb28uY29tL2JhciInKTsgICAgICAgIAotICAgICAgICBvYnNlcnZlci5k
aXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsK
LSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0UHJvcGVydHlBY2Nlc3Mo
KSB7Ci0gICAgdmFyIGltZywgYTsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBz
dGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtb2RpZmljYXRpb25zIHRvIG5v
ZGUgcHJvcGVydGllcyB3aGljaCBkZWxlZ2F0ZSB0byBhdHRyaWJ1dGUgc3RvcmFnZSBkZWxpdmVy
IG11dGF0aW9ucy4nKTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgaW1nID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7Ci0gICAgICAgIGEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhJyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAg
ICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGltZywgeyBhdHRyaWJ1dGVzOiB0cnVl
IH0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGEsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsK
LQotICAgICAgICBpbWcuc3JjID0gJ2Jhei5wbmcnOwotICAgICAgICBhLmhyZWYgPSAnZm9vLmh0
bWwnOwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnInNyYyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImhyZWYi
Jyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwot
ICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RPcmRlcmluZ1dydERPTVN1YnRyZWVNb2RpZmllZCgpIHsKLSAgICB2YXIgZGl2LCBk
aXYyLCBzdWJEaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotICAgIHZhciBsaXN0ZW5lcjsKLQotICAg
IGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyBtdXRhdGlvbiByZWNv
cmRzIGFyZSBlbnF1ZXVlZCBmb3IgYXR0cmlidXRlcyBiZWZvcmUgRE9NU3VidHJlZU1vZGlmaWVk
IGlzIGRpc3BhdGNoZWQuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAg
ZGl2ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSk7Ci0gICAgICAgIGRpdjIgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLQotICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotCi0gICAgICAgIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0
YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgbGlzdGVuZXIgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICBkaXYyLnNldEF0dHJpYnV0ZSgnYmF6JywgJ2JhdCcpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcs
IGxpc3RlbmVyKTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShzdWJEaXYsIHsgYXR0cmlidXRl
czogdHJ1ZSB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYyLCB7IGF0dHJpYnV0ZXM6
IHRydWUgfSk7Ci0KLSAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwot
Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBm
aW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImJheiInKTsKLSAg
ICAgICAgZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIGxpc3Rl
bmVyKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOwotICAgICAgICBv
YnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4
dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0T2xkVmFs
dWUoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBz
dGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgYmFzaWMgb2xkVmFsdWUgZGVsaXZlcnku
Jyk7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdiYXInLCAnYm9v
Jyk7Ci0gICAgICAgIAotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9
IG11dGF0aW9uczsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7
IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOwotICAgICAgICBk
aXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUo
J2ZvbycsICdiYXonKTsKLSAgICAgICAgZGl2LnJlbW92ZUF0dHJpYnV0ZSgnYmFyJyk7Ci0gICAg
ICAgIGRpdi5yZW1vdmVBdHRyaWJ1dGUoJ25vbi1leGlzdGFudCcpOwotICAgICAgICBzZXRUaW1l
b3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLm9sZFZhbHVlJywgJyJiYXIiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
Ml0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sy
XS5hdHRyaWJ1dGVOYW1lJywgJyJiYXIiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
Ml0ub2xkVmFsdWUnLCAnImJvbyInKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwot
ICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAg
c3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9sZFZhbHVlQXNSZXF1ZXN0ZWQoKSB7Ci0gICAg
dmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXJXaXRoT2xkVmFsdWU7Ci0gICAgdmFyIG9ic2VydmVy
OwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQg
b2xkVmFsdWUgaXMgZGVsaXZlcmVkIGFzIHJlcXVlc3RlZCAob3Igbm90KS4nKTsKLSAgICAgICAg
bXV0YXRpb25zV2l0aE9sZFZhbHVlID0gbnVsbDsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
LSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRp
di5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAgICAgb2JzZXJ2ZXJXaXRoT2xkVmFs
dWUgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAg
ICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnNXaXRoT2xkVmFsdWUgPSBtdXRhdGlvbnM7Ci0gICAg
ICAgIH0pOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0
aW9uczsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVyV2l0aE9sZFZhbHVlLm9ic2VydmUo
ZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOwotICAg
ICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAg
ICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmlu
aXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNXaXRoT2xkVmFsdWUubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLmF0dHJpYnV0ZU5hbWUnLCAn
ImZvbyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS5vbGRW
YWx1ZScsICciYmFyIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcx
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28i
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcpOwot
ICAgICAgICBvYnNlcnZlcldpdGhPbGRWYWx1ZS5kaXNjb25uZWN0KCk7Ci0gICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVz
dCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPbGRWYWx1ZVVu
aW9uTXVsdGlwbGVPYnNlcnZhdGlvbnMoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgc3BhbjsK
LSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVi
dWcoJ0FuIG9ic2VydmVyIHdpdGggbXVsdGlwbGUgb2JzZXJ2YXRpb25zIHdpbGwgZ2V0IGF0dHJp
YnV0ZU9sZFZhbHVlIGlmIGFueSBlbnRyaWVzIHJlcXVlc3QgaXQuJyk7Ci0gICAgICAgIG11dGF0
aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotICAgICAgICBzcGFuID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NwYW4nKSk7Ci0gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAg
ICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRp
b25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotICAgICAg
ICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwg
YXR0cmlidXRlT2xkVmFsdWU6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7Ci0gICAgICAgIG9ic2Vy
dmVyLm9ic2VydmUoc3BhbiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAgICBzcGFuLnNl
dEF0dHJpYnV0ZSgnZm9vJywgJ2JheicpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlw
ZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xk
VmFsdWUnLCAnImJhciInKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAg
ICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQo
KTsKLX0KLQotZnVuY3Rpb24gdGVzdElETEF0dHJpYnV0ZSgpIHsKLSAgICB2YXIgZGl2OwotICAg
IHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1Zygn
VGVzdGluZyBzZXR0aW5nIGFuIGF0dHJpYnV0ZSB2aWEgcmVmbGVjdGVkIElETCBhdHRyaWJ1dGUu
Jyk7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0
aW9ucyA9IG11dGF0aW9uczsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUo
ZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOwotICAg
ICAgICBkaXYuaWQgPSAnZm9vJzsKLSAgICAgICAgZGl2LmlkID0gJ2Jhcic7Ci0gICAgICAgIGRp
di5pZCA9IG51bGw7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzMnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAn
ImlkIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJ251bGwn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJmb28iJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5vbGRWYWx1ZScsICciYmFyIicpOwotICAgICAg
ICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVu
TmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0QXR0
cmlidXRlRmlsdGVyKCkgewotICAgIHZhciBkaXYsIHBhdGg7Ci0gICAgdmFyIG9ic2VydmVyOwot
Ci0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgYXR0
cmlidXRlRmlsdGVyIHdvcmtzIGFzIGV4cGVjdGVkIGFuZCBvYnNlcnZlcyBjYXNlIHdpdGggSFRN
TCBlbGVtZW50cy4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAg
ICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBh
dHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnZm9vJywgJ2JhcicsICdib29NJ10g
fSk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdmb28nKTsKLSAgICAgICAgZGl2
LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2JhcicpOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdi
YXonLCAnYmF6Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ0JPT20nLCAnYm9vbScpOwot
Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBm
aW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5vbmx5IGZvbyBhbmQgYmFyIHNob3VsZCBiZSBy
ZWNlaXZlZC4nKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251
bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVz
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImJh
ciInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2Un
LCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVn
KCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQot
Ci1mdW5jdGlvbiB0ZXN0QXR0cmlidXRlRmlsdGVyU3VidHJlZSgpIHsKLSAgICB2YXIgZGl2LCBk
aXYyLCBkaXYzOwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewot
ICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGUgYmVoYXZpb3Igb2YgYXR0cmlidXRlRmlsdGVyIHdo
ZW4gdGhlIHNhbWUgb2JzZXJ2ZXIgb2JzZXJ2ZXMgYXQgbXVsdGlwbGUgbm9kZXMgaW4gYSBzdWJ0
cmVlIHdpdGggZGlmZmVyZW50IGZpbHRlciBvcHRpb25zLicpOwotCi0gICAgICAgIG11dGF0aW9u
cyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRp
djIgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAg
ICAgICBkaXYzID0gZGl2Mi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwg
c3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2ZvbycsICdiYXInXSB9KTsKLSAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYyLCB7IGF0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRy
dWUsIGF0dHJpYnV0ZUZpbHRlcjogWydiYXInLCAnYmF0J10gfSk7Ci0KLSAgICAgICAgZGl2My5z
ZXRBdHRyaWJ1dGUoJ2ZvbycsICdmb28nKTsKLSAgICAgICAgZGl2My5zZXRBdHRyaWJ1dGUoJ2Jh
cicsICdiYXInKTsKLSAgICAgICAgZGl2My5zZXRBdHRyaWJ1dGUoJ2JhdCcsICdiYXQnKTsKLSAg
ICAgICAgZGl2My5zZXRBdHRyaWJ1dGUoJ2JheicsICdiYXonKTsKLQotICAgICAgICBzZXRUaW1l
b3V0KGNoZWNrQW5kT2JzZXJ2ZUFsbCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tB
bmRPYnNlcnZlQWxsKCkgewotICAgICAgICBkZWJ1ZygnLi4ub25seSBmb28sIGJhciAmIGJhdCBz
aG91bGQgYmUgcmVjZWl2ZWQuJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5n
dGgnLCAnMycpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJp
YnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScs
ICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVz
cGFjZScsICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICci
YXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVO
YW1lJywgJyJiYXIiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRl
TmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBl
JywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJp
YnV0ZU5hbWUnLCAnImJhdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRy
aWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2
MiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOwotICAgICAgICBkaXYzLnNl
dEF0dHJpYnV0ZSgnYmFyJywgJ2JhcicpOwotICAgICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmF0
JywgJ2JhdCcpOwotICAgICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmF6JywgJ2JheicpOwotCi0g
ICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5p
c2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5iYXIsIGJhdCAmIGJheiBzaG91bGQgYWxsIGJlIHJl
Y2VpdmVkLicpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImJhciInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVs
bCcpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmF0
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScs
ICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0cmli
dXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywg
JyJiYXoiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZXNw
YWNlJywgJ251bGwnKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAg
IGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgp
OwotfQotCi1mdW5jdGlvbiB0ZXN0QXR0cmlidXRlRmlsdGVyTm9uSFRNTEVsZW1lbnQoKSB7Ci0g
ICAgdmFyIHBhdGg7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7
Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgc2V0dGluZyBhbiBhdHRyaWJ1dGVGaWx0ZXIg
ZmlsdGVycyBvdXQgbmFtZXNwYWNlZCBhdHRyaWJ1dGVzLicpOwotCi0gICAgICAgIG11dGF0aW9u
cyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgcGF0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnLCAncGF0aCcpOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhdGgsIHsg
YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ3BhdGhMZW5ndGgnXSB9KTsKLSAg
ICAgICAgcGF0aC5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAn
cGF0aExlbmd0aCcsICcyMDAnKTsKLQotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBkZWJ1ZygnLi4ucGF0aExl
bmd0aCBzaG91bGQgbm90IGJlIHJlY2VpdmVkLicpOwotCi0gICAgICAgIHNob3VsZEJlTnVsbCgn
bXV0YXRpb25zJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVi
dWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRG9jdW1lbnQoKSB7Ci0gICAg
dmFyIHN2Z0RvYywgZGl2LCBwYXRoOwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9u
IHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciBy
ZXNwZWN0cyBjYXNlIHdpdGggbm9uLUhUTUwgZWxlbWVudHMuJyk7Ci0KLSAgICAgICAgc3ZnRG9j
ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJ2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnJywgJ3N2ZycsICdzdmcnKTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
LSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
KSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBk
aXYgPSBzdmdEb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydJRCcsICdpZCcs
ICdib29NJ10gfSk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ0lEJywgJ0lEJyk7Ci0gICAg
ICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2lkJyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoJ2JheicsICdiYXonKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYm9vTScsICdib29t
Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ0JPT20nLCAnYm9vbScpOwotCi0gICAgICAg
IHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7
Ci0gICAgICAgIGRlYnVnKCcuLi5vbmx5IElELCBpZCwgYm9vTSBzaG91bGQgYmUgcmVjZWl2ZWQu
Jyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOwotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciSUQiJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJib29NIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdu
dWxsJyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1Zygn
Jyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3MoKSB7Ci0gICAgdmFyIGRp
diwgcGF0aDsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAg
ICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUgcHJv
cGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRzLicpOwotCi0gICAgICAgIG11dGF0aW9u
cyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRp
di5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiB5ZWxsb3c7IHdpZHRoOiAxMDBweDsnKTsK
LSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKLSAg
ICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJ3JlZCc7Ci0gICAgICAgIGRpdi5zdHlsZS53aWR0aCA9
ICcyMDBweCc7Ci0gICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdibHVlJzsKLQotICAgICAgICBz
ZXRUaW1lb3V0KGNoZWNrQW5kQ29udGludWUsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNo
ZWNrQW5kQ29udGludWUoKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywg
JzMnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVz
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnInN0
eWxlIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJ251bGwn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxl
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJ251bGwnKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLm9sZFZhbHVlJywgJ251bGwnKTsKLQot
ICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYuZ2V0QXR0cmlidXRlKCdzdHls
ZScpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gZmluaXNoKCkgewotICAgICAgICBkZWJ1ZygnLi4ubXV0YXRpb24gcmVjb3JkIGNyZWF0ZWQu
Jyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7Ci0KLSAgICAgICAg
b2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5l
eHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFN0eWxl
QXR0cmlidXRlUHJvcGVydHlBY2Nlc3NPbGRWYWx1ZSgpIHsKLSAgICB2YXIgZGl2LCBwYXRoOwot
ICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1
ZygnVGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBwcm9wZXJ0eSBkaXNw
YXRjaGVzIE11dGF0aW9uIFJlY29yZHMgd2l0aCBjb3JyZWN0IG9sZFZhbHVlcy4nKTsKLQotICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdzdHlsZScsICdjb2xvcjogeWVsbG93OyB3aWR0
aDogMTAwcHg7Jyk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6
IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOwotICAgICAgICBkaXYuc3R5bGUuY29s
b3IgPSAncmVkJzsKLSAgICAgICAgZGl2LnN0eWxlLndpZHRoID0gJzIwMHB4JzsKLSAgICAgICAg
ZGl2LnN0eWxlLmNvbG9yID0gJ2JsdWUnOwotCi0gICAgICAgIHNldFRpbWVvdXQoY2hlY2tBbmRD
b250aW51ZSwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tBbmRDb250aW51ZSgpIHsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImNvbG9yOiB5ZWxsb3c7IHdpZHRoOiAx
MDBweDsiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmli
dXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywg
JyJzdHlsZSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICci
Y29sb3I6IHJlZDsgd2lkdGg6IDEwMHB4OyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzJdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzJdLm9sZFZhbHVlJywgJyJjb2xvcjogcmVkOyB3aWR0aDogMjAwcHg7IicpOwotCi0gICAg
ICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdi5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7
Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBm
aW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5tdXRhdGlvbiByZWNvcmQgY3JlYXRlZC4nKTsK
LQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsKLQotICAgICAgICBvYnNl
cnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRl
c3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0U3R5bGVBdHRy
aWJ1dGVQcm9wZXJ0eUFjY2Vzc0lnbm9yZU5vb3AoKSB7Ci0gICAgdmFyIGRpdiwgcGF0aDsKLSAg
ICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWco
J1Rlc3RpbmcgdGhhdCBhIG5vLW9wIHN0eWxlIHByb3BlcnR5IG11dGF0aW9uIGRvZXMgbm90IGNy
ZWF0ZSBNdXRhdGlvbiBSZWNvcmRzLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0g
ICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkg
ewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoJ3N0eWxlJywgJ2NvbG9yOiB5ZWxsb3c7IHdpZHRoOiAxMDBweDsnKTsKLSAgICAgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LnN0
eWxlLnJlbW92ZVByb3BlcnR5KCdoZWlnaHQnKTsKLQotICAgICAgICBzZXRUaW1lb3V0KGZpbmlz
aCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zJywgJ251bGwnKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7
Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAg
ICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJOb2RlVmFsdWUo
KSB7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAg
IGRlYnVnKCdUZXN0IHRoYXQgbXV0YXRpbmcgYW4gYXR0cmlidXRlIHRocm91Z2ggYW4gYXR0ciBu
b2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMnKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9u
czsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28nKTsKLSAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRl
T2xkVmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5hdHRyaWJ1dGVzWydkYXRhLXRlc3QnXS52
YWx1ZSA9ICdiYXInOwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVu
Z3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRh
LXRlc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZv
byInKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcn
KTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1m
dW5jdGlvbiB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJOb2RlQ2hpbGQoKSB7Ci0gICAgdmFyIG9ic2Vy
dmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0IHRoYXQg
bXV0YXRpbmcgYW4gYXR0cmlidXRlIGJ5IGF0dGFjaGluZyBhIGNoaWxkIHRvIGFuIGF0dHIgbm9k
ZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRlc3QnLCAnZm9vJyk7Ci0gICAg
ICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9s
ZFZhbHVlOiB0cnVlIH0pOwotICAgICAgICBkaXYuYXR0cmlidXRlc1snZGF0YS10ZXN0J10uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JhcicpKTsKLQotICAgICAgICBzZXRU
aW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2RpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZScsICciZGF0YS10ZXN0IicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0g
ICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNldEFuZFJlbW92ZUF0dHJp
YnV0ZU5vZGUoKSB7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7
Ci0gICAgICAgIGRlYnVnKCdUZXN0IHRoYXQgbXV0YXRpbmcgdmlhIHNldEF0dHJpYnV0ZU5vZGUg
ZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcycpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7
Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwot
ICAgICAgICB9KTsKLQotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKLSAgICAgICAgZGl2LmlkID0gJ215SWQnOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdk
YXRhLXRlc3QnLCAnZm9vJyk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJp
YnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOwotICAgICAgICB2YXIgYXR0
ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS10ZXN0Jyk7Ci0gICAgICAgIGF0dHIu
dmFsdWUgPSAnYmFyJzsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7Ci0gICAg
ICAgIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoJ2RhdGEtb3RoZXInKTsKLSAgICAg
ICAgYXR0ci52YWx1ZSA9ICdiYXonOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlTm9kZShhdHRy
KTsKLSAgICAgICAgZGl2LnJlbW92ZUF0dHJpYnV0ZU5vZGUoZGl2LmF0dHJpYnV0ZXNbJ2lkJ10p
OwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLW90aGVyIicpOwotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJ251bGwnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1syXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1syXS5vbGRWYWx1ZScsICcibXlJZCInKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNj
b25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAg
ICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0TWl4ZWROb2RlQW5kRWxlbWVu
dE9wZXJhdGlvbnMoKSB7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQo
KSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0IHRoYXQgc2V0QXR0cmlidXRlIG9uIGFuIGF0dHJpYnV0
ZSB3aXRoIGFuIGV4aXN0aW5nIEF0dHIgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcycpOwotCi0g
ICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cu
bXV0YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLQotICAgICAgICBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5j
cmVhdGVBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcpOwotICAgICAgICBhdHRyLnZhbHVlID0gJ2Zvbyc7
Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOwotICAgICAgICBvYnNlcnZlci5v
YnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9
KTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2JhcicpOwotCi0gICAg
ICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2go
KSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKLQotICAgICAgICBvYnNl
cnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRl
c3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0TmFtZWROb2Rl
TWFwT3BlcmF0aW9ucygpIHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFy
dCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBzZXROYW1lZEl0ZW0gYW5kIHJlbW92ZU5h
bWVkSXRlbSBkZWxpdmVyIG11dGF0aW9uIHJlY29yZHMnKTsKLQotICAgICAgICBtdXRhdGlvbnMg
PSBudWxsOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0
aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28nKTsK
LSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmli
dXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIHZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRl
QXR0cmlidXRlKCdkYXRhLXRlc3QnKTsKLSAgICAgICAgYXR0ci52YWx1ZSA9ICdiYXInOwotICAg
ICAgICBkaXYuYXR0cmlidXRlcy5zZXROYW1lZEl0ZW0oYXR0cik7Ci0gICAgICAgIGRpdi5hdHRy
aWJ1dGVzLnJlbW92ZU5hbWVkSXRlbSgnZGF0YS10ZXN0Jyk7Ci0KLSAgICAgICAgc2V0VGltZW91
dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzFdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBl
JywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJp
YnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sx
XS5vbGRWYWx1ZScsICciYmFyIicpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsK
LSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAg
IHN0YXJ0KCk7Ci19Ci0KLXZhciB0ZXN0cyA9IFsKLSAgICB0ZXN0QmFzaWMsCi0gICAgdGVzdFdy
b25nVHlwZSwKLSAgICB0ZXN0TXVsdGlwbGVSZWdpc3RyYXRpb24sCi0gICAgdGVzdE11bHRpcGxl
T2JzZXJ2ZXJzLAotICAgIHRlc3ROYW1lc3BhY2VVUkksCi0gICAgdGVzdFByb3BlcnR5QWNjZXNz
LAotICAgIHRlc3RPcmRlcmluZ1dydERPTVN1YnRyZWVNb2RpZmllZCwKLSAgICB0ZXN0T2xkVmFs
dWUsCi0gICAgdGVzdE9sZFZhbHVlQXNSZXF1ZXN0ZWQsCi0gICAgdGVzdE9sZFZhbHVlVW5pb25N
dWx0aXBsZU9ic2VydmF0aW9ucywKLSAgICB0ZXN0SURMQXR0cmlidXRlLAotICAgIHRlc3RBdHRy
aWJ1dGVGaWx0ZXIsCi0gICAgdGVzdEF0dHJpYnV0ZUZpbHRlclN1YnRyZWUsCi0gICAgdGVzdEF0
dHJpYnV0ZUZpbHRlck5vbkhUTUxFbGVtZW50LAotICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25I
VE1MRG9jdW1lbnQsCi0gICAgdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3MsCi0gICAg
dGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NPbGRWYWx1ZSwKLSAgICB0ZXN0U3R5bGVB
dHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc0lnbm9yZU5vb3AsCi0gICAgdGVzdE11dGF0ZVRocm91Z2hB
dHRyTm9kZVZhbHVlLAotICAgIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVDaGlsZCwKLSAgICB0
ZXN0U2V0QW5kUmVtb3ZlQXR0cmlidXRlTm9kZSwKLSAgICB0ZXN0TWl4ZWROb2RlQW5kRWxlbWVu
dE9wZXJhdGlvbnMsCi0gICAgdGVzdE5hbWVkTm9kZU1hcE9wZXJhdGlvbnMKLV07Ci12YXIgdGVz
dEluZGV4ID0gMDsKLQotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7Ci0gICAgaWYgKHRlc3RJbmRl
eCA8IHRlc3RzLmxlbmd0aCkKLSAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7Ci0gICAgZWxz
ZQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3QgV2ViS2l0
TXV0YXRpb25PYnNlcnZlci5vYnNlcnZlIG9uIGF0dHJpYnV0ZXMnKTsKLQotaWYgKCF3aW5kb3cu
V2ViS2l0TXV0YXRpb25PYnNlcnZlcikKLSAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWly
ZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUyknKTsKLWVsc2UKLSAgICBydW5OZXh0VGVzdCgp
OwotCi08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2Jz
ZXJ2ZS1jaGFyYWN0ZXJkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMWRmZjNiNTVkMjc2Y2MxNWE2ODM5YmVkN2Q5N2IzODJjNmY3YWRmYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L211dGF0aW9uL29ic2VydmUtY2hhcmFjdGVyZGF0YS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw2MSArMCwwIEBACi1UZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2
ZSBvbiBDaGFyYWN0ZXJEYXRhIG5vZGVzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
Ci1UZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY2hhcmFjdGVyRGF0YSBvYnNlcnZhdGlvbi4KLS4u
LmNhbiBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsCi1QQVNTIG11dGF0
aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0
YSIKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKLS4uLm9ic2VydmVy
LmRpc2Nvbm5lY3QoKSBzaG91bGQgcHJldmVudCBmdXJ0aGVyIGRlbGl2ZXJ5IG9mIG11dGF0aW9u
cy4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLS4uLnJlLW9ic2VydmluZyBhZnRlciBkaXNjb25u
ZWN0IHdvcmtzIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGgg
aXMgMgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0
YXRpb25zWzBdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUg
aXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgY2hhckRhdGFO
b2RlCi0KLVRlc3RpbmcgdGhhdCBvYnNlcnZpbmcgd2l0aG91dCBzcGVjaWZ5aW5nICJjaGFyYWN0
ZXJEYXRhIiBkb2VzIG5vdCByZXN1bHQgaW4gaGVhcmluZyBhYm91dCBjaGFyYWN0ZXJEYXRhIGNo
YW5nZXMuCi1QQVNTIG11dGF0aW9ucyBpcyBudWxsCi0KLVRlc3RpbmcgdGhhdCBtdWx0aXBsZSBv
YnNlcnZlcnMgY2FuIGJlIHJlZ2lzdGVyZWQgdG8gYSBnaXZlbiBub2RlIGFuZCBib3RoIHJlY2Vp
dmUgbXV0YXRpb25zLgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25z
WzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMg
Y2hhckRhdGFOb2RlCi1QQVNTIG11dGF0aW9uczIubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25z
MlswXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnMyWzBdLnRhcmdldCBp
cyBjaGFyRGF0YU5vZGUKLQotVGVzdGluZyBtdXRhdGlvbiByZWNvcmRzIGFyZSBlbnF1ZXVlZCBm
b3IgY2hhcmFjdGVyRGF0YSBiZWZvcmUgRE9NU3VidHJlZU1vZGlmaWVkIGlzIGRpc3BhdGNoZWQu
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
Y2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi0K
LVRlc3RpbmcgdGhhdCBvbGRWYWx1ZSBpcyByZXR1cm5lZCB3aGVuIHJlcXVlc3RlZC4KLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0
ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGNoYXJEYXRhTm9kZQotUEFTUyBt
dXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMg
ImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgY2hhckRhdGFOb2Rl
Ci1QQVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiYmFyIgotCi1UZXN0aW5nIHRoYXQgb2xk
VmFsdWUgaXMgZGVsaXZlcmVkIGFzIHJlcXVlc3RlZCAob3Igbm90KS4KLVBBU1MgbXV0YXRpb25z
V2l0aE9sZFZhbHVlLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50
eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0ub2xk
VmFsdWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9u
c1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUg
aXMgbnVsbAotCi1BbiBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9ic2VydmF0aW9ucyB3aWxsIGdl
dCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgaWYgYW55IGVudHJpZXMgcmVxdWVzdCBpdC4KLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0
ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKLQotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hhcmFjdGVyZGF0YS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWNhZWEyMWVhNDMwNmI2ZmNmZjJlNDlmZDBlMzk3Mzdh
MTI2NDVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPWRlc2NyaXB0
aW9uPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotdmFyIG11dGF0aW9uczsKLXZhciBtdXRhdGlvbnMyOwotdmFy
IG11dGF0aW9uc1dpdGhPbGRWYWx1ZTsKLXZhciBjYWxsczsKLXZhciBjaGFyRGF0YU5vZGU7Ci0K
LWZ1bmN0aW9uIHRlc3RCYXNpYygpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsK
LQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyBiYXNpYyBh
c3BlY3RzIG9mIGNoYXJhY3RlckRhdGEgb2JzZXJ2YXRpb24uJyk7Ci0KLSAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgICAgIGRpdi50ZXh0Q29udGVudCA9ICdmb28nOwotICAgICAgICBjaGFyRGF0YU5vZGUg
PSBkaXYuZmlyc3RDaGlsZDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAg
ICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3Rl
ckRhdGE6IHRydWV9KTsKLSAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7
Ci0gICAgICAgIHNldFRpbWVvdXQoY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlLCAwKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUoKSB7Ci0gICAgICAgIGRl
YnVnKCcuLi5jYW4gY2hhcmFjdGVyRGF0YSBjaGFuZ2VzIGJlIG9ic2VydmVkIGF0IGFsbCcpOwot
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsKLQotICAgICAg
ICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAg
ICAgIGNoYXJEYXRhTm9kZS50ZXh0Q29udGVudCA9ICdiYXonOwotICAgICAgICBzZXRUaW1lb3V0
KGNoZWNrTm90RGVsaXZlcmVkQW5kTXV0YXRlTXVsdGlwbGUsIDApOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGNoZWNrTm90RGVsaXZlcmVkQW5kTXV0YXRlTXVsdGlwbGUoKSB7Ci0gICAgICAgIGRl
YnVnKCcuLi5vYnNlcnZlci5kaXNjb25uZWN0KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxp
dmVyeSBvZiBtdXRhdGlvbnMuJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdu
dWxsJyk7Ci0gICAgICAgIGNoYXJEYXRhTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoKTsK
LSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHsgY2hhcmFjdGVyRGF0YTog
dHJ1ZSB9KTsKLSAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Zvbyc7Ci0gICAg
ICAgIGNoYXJEYXRhTm9kZS50ZXh0Q29udGVudCA9ICdiYXInOwotICAgICAgICBzZXRUaW1lb3V0
KGZpbmlzaCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBkZWJ1
ZygnLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5lY3Qgd29ya3Mgd2l0aCB0aGUgc2FtZSBv
YnNlcnZlci4nKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hhcmFjdGVyRGF0YSIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnY2hhckRhdGFOb2Rl
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciY2hhcmFjdGVyRGF0
YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50YXJnZXQnLCAnY2hhckRhdGFO
b2RlJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycp
OwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RXcm9uZ1R5cGUoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7
Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBv
YnNlcnZpbmcgd2l0aG91dCBzcGVjaWZ5aW5nICJjaGFyYWN0ZXJEYXRhIiBkb2VzIG5vdCByZXN1
bHQgaW4gaGVhcmluZyBhYm91dCBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMuJyk7Ci0KLSAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgIGRpdi50ZXh0Q29udGVudCA9ICdoZWxsbyc7Ci0gICAgICAgIGNoYXJE
YXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7
Y2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVzOiB0cnVlfSk7Ci0gICAgICAgIGNoYXJEYXRhTm9k
ZSA9ICdnb29kYnllJzsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdu
dWxsJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycp
OwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RNdWx0aXBsZU9ic2VydmVycygpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBv
YnNlcnZlcjsKLSAgICB2YXIgb2JzZXJ2ZXIyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0g
ICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgbXVsdGlwbGUgb2JzZXJ2ZXJzIGNhbiBiZSByZWdp
c3RlcmVkIHRvIGEgZ2l2ZW4gbm9kZSBhbmQgYm90aCByZWNlaXZlIG11dGF0aW9ucy4nKTsKLSAg
ICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi50ZXh0Q29udGVudCA9ICdmb28nOwotICAgICAgICBj
aGFyRGF0YU5vZGUgPSBkaXYuZmlyc3RDaGlsZDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMg
PSBtOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zMiA9IG07Ci0gICAg
ICAgIH0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3Rl
ckRhdGE6IHRydWV9KTsKLSAgICAgICAgb2JzZXJ2ZXIyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7
Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOwotICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQg
PSAnYmFyJzsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAn
MScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoYXJhY3RlckRh
dGEiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2NoYXJEYXRh
Tm9kZScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMi5sZW5ndGgnLCAnMScpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS50YXJnZXQnLCAnY2hhckRhdGFOb2RlJyk7
Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgb2JzZXJ2ZXIyLmRpc2Nv
bm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAg
IH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPcmRlcmluZ1dydERPTVN1YnRy
ZWVNb2RpZmllZCgpIHsKLSAgICB2YXIgZGl2LCBkaXYyLCBzdWJEaXY7Ci0gICAgdmFyIG9ic2Vy
dmVyOwotICAgIHZhciBsaXN0ZW5lcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAg
ICBkZWJ1ZygnVGVzdGluZyBtdXRhdGlvbiByZWNvcmRzIGFyZSBlbnF1ZXVlZCBmb3IgY2hhcmFj
dGVyRGF0YSBiZWZvcmUgRE9NU3VidHJlZU1vZGlmaWVkIGlzIGRpc3BhdGNoZWQuJyk7Ci0KLSAg
ICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIGRpdjIgPSBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsK
LQotICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2JykpOwotICAgICAgICBzdWJEaXYudGV4dENvbnRlbnQgPSAnZm9vJzsKLSAgICAgICAg
Y2hhckRhdGFOb2RlID0gc3ViRGl2LmZpcnN0Q2hpbGQ7Ci0KLSAgICAgICAgb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRh
dGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBsaXN0ZW5lciA9IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIGRpdjIuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF0Jyk7Ci0gICAgICAg
IH0KLQotICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywg
bGlzdGVuZXIpOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJh
Y3RlckRhdGE6IHRydWV9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYyLCB7YXR0cmli
dXRlczogdHJ1ZX0pOwotCi0gICAgICAgIGNoYXJEYXRhTm9kZS50ZXh0Q29udGVudCA9ICdiYXIn
OwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
Ci0gICAgICAgIGRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCBs
aXN0ZW5lcik7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKLSAgICAg
ICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1
bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9s
ZFZhbHVlKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rp
b24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgb2xkVmFsdWUgaXMgcmV0
dXJuZWQgd2hlbiByZXF1ZXN0ZWQuJyk7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAg
ICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkaXYudGV4
dENvbnRlbnQgPSAnZm9vJzsKLSAgICAgICAgY2hhckRhdGFOb2RlID0gZGl2LmZpcnN0Q2hpbGQ7
Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwot
ICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtjaGFy
YWN0ZXJEYXRhOiB0cnVlLCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6IHRydWV9KTsKLSAgICAgICAg
Y2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7Ci0gICAgICAgIGNoYXJEYXRhTm9kZS50
ZXh0Q29udGVudCA9ICdiYXonOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICci
Y2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQn
LCAnY2hhckRhdGFOb2RlJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFs
dWUnLCAnImZvbyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJj
aGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcs
ICdjaGFyRGF0YU5vZGUnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1
ZScsICciYmFyIicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRl
YnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwot
fQotCi1mdW5jdGlvbiB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCgpIHsKLSAgICB2YXIgZGl2Owot
ICAgIHZhciBvYnNlcnZlcldpdGhPbGRWYWx1ZTsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBm
dW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBvbGRWYWx1ZSBp
cyBkZWxpdmVyZWQgYXMgcmVxdWVzdGVkIChvciBub3QpLicpOwotICAgICAgICBtdXRhdGlvbnMg
PSBudWxsOwotICAgICAgICBtdXRhdGlvbnNXaXRoT2xkVmFsdWUgPSBudWxsOwotICAgICAgICBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LnRleHRDb250
ZW50ID0gJ2Zvbyc7Ci0gICAgICAgIGNoYXJEYXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOwotICAg
ICAgICBvYnNlcnZlcldpdGhPbGRWYWx1ZSA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9uc1dpdGhPbGRW
YWx1ZSA9IG11dGF0aW9uczsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3
aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2
ZXJXaXRoT2xkVmFsdWUub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVl
LCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6IHRydWV9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShjaGFyRGF0YU5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7Ci0gICAgICAgIGNoYXJEYXRh
Tm9kZS50ZXh0Q29udGVudCA9ICdiYXInOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zV2l0aE9sZFZhbHVlLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNXaXRoT2xkVmFsdWVbMF0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS5vbGRWYWx1ZScsICciZm9vIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVy
V2l0aE9sZFZhbHVlLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgp
OwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0g
ICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9sZFZhbHVlVW5pb25NdWx0aXBsZU9ic2Vy
dmF0aW9ucygpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0
aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnQW4gb2JzZXJ2ZXIgd2l0aCBtdWx0aXBsZSBv
YnNlcnZhdGlvbnMgd2lsbCBnZXQgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIGlmIGFueSBlbnRyaWVz
IHJlcXVlc3QgaXQuJyk7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkaXYudGV4dENvbnRlbnQg
PSAnZm9vJzsKLSAgICAgICAgY2hhckRhdGFOb2RlID0gZGl2LmZpcnN0Q2hpbGQ7Ci0gICAgICAg
IG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25z
KSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICB9
KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlLCBj
aGFyYWN0ZXJEYXRhT2xkVmFsdWU6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7Ci0gICAg
ICAgIGNoYXJEYXRhTm9kZS50ZXh0Q29udGVudCA9ICdiYXInOwotICAgICAgICBzZXRUaW1lb3V0
KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25u
ZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9
Ci0KLSAgICBzdGFydCgpOwotfQotCi12YXIgdGVzdHMgPSBbCi0gICAgdGVzdEJhc2ljLAotICAg
IHRlc3RXcm9uZ1R5cGUsCi0gICAgdGVzdE11bHRpcGxlT2JzZXJ2ZXJzLAotICAgIHRlc3RPcmRl
cmluZ1dydERPTVN1YnRyZWVNb2RpZmllZCwKLSAgICB0ZXN0T2xkVmFsdWUsCi0gICAgdGVzdE9s
ZFZhbHVlQXNSZXF1ZXN0ZWQsCi0gICAgdGVzdE9sZFZhbHVlVW5pb25NdWx0aXBsZU9ic2VydmF0
aW9ucwotXTsKLXZhciB0ZXN0SW5kZXggPSAwOwotCi1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsK
LSAgICBpZiAodGVzdEluZGV4IDwgdGVzdHMubGVuZ3RoKQotICAgICAgICB0ZXN0c1t0ZXN0SW5k
ZXgrK10oKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1kZXNjcmlw
dGlvbignVGVzdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9ic2VydmUgb24gQ2hhcmFjdGVyRGF0
YSBub2RlcycpOwotCi1pZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyKQotICAgIHRl
c3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScp
OwotZWxzZQotICAgIHJ1bk5leHRUZXN0KCk7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWNoaWxkTGlz
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hpbGRM
aXN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiYjI3NjQy
ZjFkNDZiZWZiYzJkMDBmYjFhZTU5ZDhlMDc3ZDIwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUt
Y2hpbGRMaXN0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLVRl
c3QgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5vYnNlcnZlIG9uIGF0dHJpYnV0ZXMuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY2hpbGRM
aXN0IG9ic2VydmF0aW9uLgotLi4uY2FuIGNoaWxkTGlzdCBjaGFuZ2VzIGJlIG9ic2VydmVkIGF0
IGFsbAotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUg
aXMgImNoaWxkTGlzdCIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEK
LVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0gaXMgcmVtb3ZlZERpdjEKLS4uLm9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKSBzaG91bGQgcHJldmVudCBmdXJ0aGVyIGRlbGl2ZXJ5IG9mIG11dGF0
aW9ucy4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLS4uLnJlLW9ic2VydmluZyBhZnRlciBkaXNj
b25uZWN0IHdvcmtzIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIuCi1QQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgotUEFTUyBtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS5yZW1v
dmVkTm9kZXNbMF0gaXMgcmVtb3ZlZERpdjEKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNo
aWxkTGlzdCIKLVBBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQotUEFT
UyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWREaXYyCi0KLVRlc3Rpbmcg
dGhhdCBvYnNlcnZpbmcgd2l0aG91dCBzcGVjaWZ5aW5nICJjaGlsZExpc3QiIGRvZXMgbm90IHJl
c3VsdCBpbiBoZWFyaW5nIGFib3V0IGNoaWxkTGlzdCBjaGFuZ2VzLgotUEFTUyBtdXRhdGlvbnMg
aXMgbnVsbAotCi1UZXN0aW5nIHRoYXQgcmUtb2JzZXJ2aW5nIHRoZSBzYW1lIG5vZGUgd2l0aCB0
aGUgc2FtZSBvYnNlcnZlciBoYXMgdGhlIGVmZmVjdCBvZiByZXNldHRpbmcgdGhlIG9wdGlvbnMu
Ci1QQVNTIGNhbGxzIGlzIDEKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0
aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCi1QQVNTIG11dGF0aW9ucyBpcyBudWxsCi0KLVRl
c3RpbmcgdGhhdCBtdWx0aXBsZSBvYnNlcnZlcnMgY2FuIGJlIHJlZ2lzdGVyZWQgdG8gYSBnaXZl
biBub2RlIGFuZCBib3RoIHJlY2VpdmUgbXV0YXRpb25zLgotUEFTUyBtdXRhdGlvbnMubGVuZ3Ro
IGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxkTGlzdCIKLVBBU1MgbXV0YXRp
b25zMi5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnMyWzBdLnR5cGUgaXMgImNoaWxkTGlzdCIK
LQotVGVzdGluZyB0aGF0IGlubmVyVGV4dCBhbmQgaW5uZXJIVE1MIGFsd2F5cyByZXN1bHQgaW4g
YSBzaW5nbGUgY2hpbGRMaXN0IG11dGF0aW9uLgotLi4uaW5uZXJIVE1MCi1QQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgotUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMwotUEFTUyBtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlc1swXSBpcyBhZGRlZERpdjEKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNb
MV0gaXMgYWRkZWREaXYyCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzJdIGlzIGFkZGVk
RGl2MwotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCi1QQVNTIG11
dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0gaXMgcmVtb3ZlZERpdjEKLVBBU1MgbXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlc1sxXSBpcyByZW1vdmVkRGl2MgotLi4uaW5uZXJUZXh0Ci1QQVNTIG11
dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0
IgotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAzCi0KLVRlc3RpbmcgdGhhdCByZXBsYWNlQ2hp
bGQgcmVzdWx0cyBpbiBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMuCi0uLi5zaW1wbGUgcmVw
bGFjZSBjaGlsZAotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBd
LnR5cGUgaXMgImNoaWxkTGlzdCIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3Ro
IGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0gaXMgYWRkZWREaXYxCi1QQVNT
IG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBd
LnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MQotLi4ucmVwbGFjZSB3aXRoIERvY3VtZW50
RnJhZ21lbnQKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50
eXBlIGlzICJjaGlsZExpc3QiCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBp
cyAyCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdIGlzIGFkZGVkRGl2MQotUEFTUyBt
dXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXSBpcyBhZGRlZERpdjIKLVBBU1MgbXV0YXRpb25zWzBd
LnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVz
WzBdIGlzIHJlbW92ZWREaXYxCi0KLVRlc3RpbmcgdGhhdCBpbnNlcnRCZWZvcmUgcmVzdWx0cyBp
biBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMg
MQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgotUEFTUyBtdXRhdGlvbnNb
MF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sw
XSBpcyBhZGRlZERpdjEKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMV0gaXMgYWRkZWRE
aXYyCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKLQotVGVzdGlu
ZyB0aGF0IGFwcGVuZENoaWxkIHJlc3VsdHMgaW4gbWluaW1hbCBjaGlsZExpc3QgbXV0YXRpb25z
LgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMg
ImNoaWxkTGlzdCIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIKLVBB
U1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0gaXMgYWRkZWREaXYxCi1QQVNTIG11dGF0aW9u
c1swXS5hZGRlZE5vZGVzWzFdIGlzIGFkZGVkRGl2MgotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCBpcyAwCi0KLVNldHRpbmcgYW4gZW1wdHkgY2hpbGRsaXN0IHRvIHRoZSBl
bXB0eSBzdHJpbmcgd2l0aCBpbm5lckhUTUwgc2hvdWxkIG5vdCBhc3NlcnQuCi1QQVNTIG11dGF0
aW9ucyBpcyBudWxsCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUt
Y2hpbGRMaXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hpbGRM
aXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYTg0ZDQ0Mzg4NjRhZTcy
YjI5YzY4OThjNDQwZTA5OGQyOGQ5MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWNoaWxkTGlz
dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDI3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHRpdGxlPjwvdGl0bGU+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPWRlc2NyaXB0aW9uPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgotPHNjcmlwdD4KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotdmFyIG11
dGF0aW9ucywgbXV0YXRpb25zMjsKLXZhciBjYWxsczsKLXZhciBkaXYsIHJlbW92ZWREaXYxLCBy
ZW1vdmVkRGl2MiwgYWRkZWREaXYxLCBhZGRlZERpdjIsIGFkZGVkRGl2MzsKLQotZnVuY3Rpb24g
dGVzdEJhc2ljKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVu
Y3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2Yg
Y2hpbGRMaXN0IG9ic2VydmF0aW9uLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0g
ICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAg
ICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKLSAgICAgICAgcmVtb3ZlZERpdjEgPSBkaXYu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBzZXRU
aW1lb3V0KGNoZWNrRGlzY29ubmVjdEFuZE11dGF0ZSwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlKCkgewotICAgICAgICBkZWJ1ZygnLi4uY2FuIGNo
aWxkTGlzdCBjaGFuZ2VzIGJlIG9ic2VydmVkIGF0IGFsbCcpOwotCi0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlcy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LmFkZGVkTm9kZXNbMF0nLCAncmVtb3ZlZERpdjEnKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIHJlbW92ZWREaXYx
ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAg
ICAgc2V0VGltZW91dChjaGVja05vdERlbGl2ZXJlZEFuZE11dGF0ZU11bHRpcGxlLCAwKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja05vdERlbGl2ZXJlZEFuZE11dGF0ZU11bHRpcGxlKCkg
ewotICAgICAgICBkZWJ1ZygnLi4ub2JzZXJ2ZXIuZGlzY29ubmVjdCgpIHNob3VsZCBwcmV2ZW50
IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRpb25zLicpOwotCi0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGls
ZExpc3Q6IHRydWUgfSk7Ci0gICAgICAgIHJlbW92ZWREaXYxID0gZGl2LnJlbW92ZUNoaWxkKGRp
di5maXJzdENoaWxkKTsKLSAgICAgICAgcmVtb3ZlZERpdjIgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2
LmZpcnN0Q2hpbGQpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBkZWJ1ZygnLi4ucmUtb2JzZXJ2aW5nIGFmdGVy
IGRpc2Nvbm5lY3Qgd29ya3Mgd2l0aCB0aGUgc2FtZSBvYnNlcnZlci4nKTsKLQotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0udHlwZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXScsICdyZW1vdmVkRGl2MScpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0nLCAncmVtb3ZlZERpdjInKTsKLSAg
ICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAg
IHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVz
dFdyb25nVHlwZSgpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1
bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9ic2VydmluZyB3
aXRob3V0IHNwZWNpZnlpbmcgImNoaWxkTGlzdCIgZG9lcyBub3QgcmVzdWx0IGluIGhlYXJpbmcg
YWJvdXQgY2hpbGRMaXN0IGNoYW5nZXMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
LSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAg
ICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2Jz
ZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLSAg
ICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAg
ICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlz
aCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7Ci0gICAgICAgIG9i
c2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0
VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RNdWx0aXBs
ZVJlZ2lzdHJhdGlvbigpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAg
IGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHJlLW9ic2Vy
dmluZyB0aGUgc2FtZSBub2RlIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIgaGFzIHRoZSBlZmZlY3Qg
b2YgcmVzZXR0aW5nIHRoZSBvcHRpb25zLicpOwotCi0gICAgICAgIGNhbGxzID0gMDsKLSAgICAg
ICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgICAgIGNh
bGxzKys7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNo
aWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLSAgICAgICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAgICBkaXYuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBzZXRUaW1lb3V0KGNo
ZWNrRGlzY29ubmVjdEFuZE11dGF0ZSwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tE
aXNjb25uZWN0QW5kTXV0YXRlKCkgewotICAgICAgICBzaG91bGRCZSgnY2FsbHMnLCAnMScpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBtdXRhdGlv
bnMgPSBudWxsOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRy
dWUsIGNoYXJhY3RlckRhdGE6IHRydWUgfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2
LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAg
IGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgp
OwotfQotCi1mdW5jdGlvbiB0ZXN0TXVsdGlwbGVPYnNlcnZlcnMoKSB7Ci0gICAgdmFyIGRpdjsK
LSAgICB2YXIgb2JzZXJ2ZXI7Ci0gICAgdmFyIG9ic2VydmVyMjsKLQotICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBj
YW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlv
bnMuJyk7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0g
ICAgICAgIH0pOwotICAgICAgICBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMyID0gbTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKLSAg
ICAgICAgb2JzZXJ2ZXIyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKLSAgICAg
ICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uczIubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uczJbMF0udHlwZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25u
ZWN0KCk7Ci0gICAgICAgIG9ic2VydmVyMi5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcn
KTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1m
dW5jdGlvbiB0ZXN0SW5uZXJIVE1MQW5kSW5uZXJUZXh0KCkgewotICAgIHZhciBkaXY7Ci0gICAg
dmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdU
ZXN0aW5nIHRoYXQgaW5uZXJUZXh0IGFuZCBpbm5lckhUTUwgYWx3YXlzIHJlc3VsdCBpbiBhIHNp
bmdsZSBjaGlsZExpc3QgbXV0YXRpb24uJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
LSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRp
di5pbm5lckhUTUwgPSAnPHNwYW4+Rm9vPC9zcGFuPjxkaXY+QmFyPC9kaXY+JzsKLSAgICAgICAg
cmVtb3ZlZERpdjEgPSBkaXYuZmlyc3RDaGlsZDsKLSAgICAgICAgcmVtb3ZlZERpdjIgPSByZW1v
dmVkRGl2MS5uZXh0U2libGluZzsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAg
ICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRy
dWUgfSk7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSAnZm9vPGltZyBzcmM9ImJhci5wbmciPjxw
PkJhejwvcD4nOwotICAgICAgICBhZGRlZERpdjEgPSBkaXYuY2hpbGROb2Rlc1swXTsKLSAgICAg
ICAgYWRkZWREaXYyID0gZGl2LmNoaWxkTm9kZXNbMV07Ci0gICAgICAgIGFkZGVkRGl2MyA9IGRp
di5jaGlsZE5vZGVzWzJdOwotICAgICAgICBzZXRUaW1lb3V0KGNoZWNrSW5uZXJIVE1MLCAwKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja0lubmVySFRNTCgpIHsKLSAgICAgICAgZGVidWco
Jy4uLmlubmVySFRNTCcpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywg
JzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3Qi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAn
MycpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0nLCAnYWRk
ZWREaXYxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXScs
ICdhZGRlZERpdjInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVz
WzJdJywgJ2FkZGVkRGl2MycpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92
ZWROb2Rlcy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJl
bW92ZWROb2Rlc1swXScsICdyZW1vdmVkRGl2MScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnJlbW92ZWROb2Rlc1sxXScsICdyZW1vdmVkRGl2MicpOwotCi0gICAgICAgIG11dGF0
aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdi5pbm5lclRleHQgPSAnZm9vJzsKLSAgICAgICAgc2V0
VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAg
ICAgICAgZGVidWcoJy4uLmlubmVyVGV4dCcpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
cy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlcy5sZW5ndGgnLCAnMycpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAg
ICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFy
dCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0UmVwbGFjZUNoaWxkKCkgewotICAgIHZhciBkaXY7Ci0g
ICAgdmFyIG9ic2VydmVyOwotICAgIHZhciBmcmFnbWVudDsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0
KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHJlcGxhY2VDaGlsZCByZXN1bHRzIGlu
IG1pbmltYWwgY2hpbGRMaXN0IG11dGF0aW9ucy4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAg
ICAgZGl2LmlubmVySFRNTCA9ICc8c3Bhbj5Gb288L3NwYW4+PGRpdj5CYXI8L2Rpdj4nOwotICAg
ICAgICByZW1vdmVkRGl2MSA9IGRpdi5maXJzdENoaWxkOwotCi0gICAgICAgIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0
YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYs
IHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAgICBhZGRlZERpdjEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LnJlcGxhY2VDaGlsZChhZGRlZERpdjEsIGRp
di5maXJzdENoaWxkKTsKLSAgICAgICAgc2V0VGltZW91dChjaGVja1JlcGxhY2VXaXRoTm9kZSwg
MCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tSZXBsYWNlV2l0aE5vZGUoKSB7Ci0gICAg
ICAgIGRlYnVnKCcuLi5zaW1wbGUgcmVwbGFjZSBjaGlsZCcpOwotCi0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlcy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LmFkZGVkTm9kZXNbMF0nLCAnYWRkZWREaXYxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdJywgJ3JlbW92ZWREaXYxJyk7Ci0KLSAgICAgICAgbXV0
YXRpb25zID0gbnVsbDsKLSAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7Ci0gICAgICAgIGFkZGVkRGl2MSA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgYWRkZWREaXYyID0gZnJhZ21l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBy
ZW1vdmVkRGl2MSA9IGRpdi5maXJzdENoaWxkOwotCi0gICAgICAgIGRpdi5yZXBsYWNlQ2hpbGQo
ZnJhZ21lbnQsIHJlbW92ZWREaXYxKTsKLQotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBkZWJ1ZygnLi4ucmVw
bGFjZSB3aXRoIERvY3VtZW50RnJhZ21lbnQnKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScs
ICciY2hpbGRMaXN0IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXMubGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5v
ZGVzWzBdJywgJ2FkZGVkRGl2MScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXNbMV0nLCAnYWRkZWREaXYyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzWzBdJywgJ3JlbW92ZWREaXYxJyk7Ci0KLSAgICAgICAgb2JzZXJ2
ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0
KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdEluc2VydEJlZm9y
ZSgpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLSAgICB2YXIgZnJhZ21lbnQ7
Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBp
bnNlcnRCZWZvcmUgcmVzdWx0cyBpbiBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMuJyk7Ci0K
LSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPHNwYW4+Rm9vPC9zcGFu
Pic7Ci0gICAgICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
OwotICAgICAgICBhZGRlZERpdjEgPSBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIGFkZGVkRGl2MiA9IGZyYWdtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLQotICAgICAgICBvYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11
dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2
LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKLSAgICAgICAgZGl2Lmluc2VydEJlZm9yZShmcmFnbWVu
dCwgZGl2LmZpcnN0Q2hpbGQpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAg
fQotCi0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
cy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXNbMF0nLCAnYWRkZWREaXYxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRk
ZWROb2Rlc1sxXScsICdhZGRlZERpdjInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNjb25u
ZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9
Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0QXBwZW5kQ2hpbGQoKSB7Ci0gICAg
dmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0gICAgdmFyIGZyYWdtZW50OwotCi0gICAgZnVu
Y3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgYXBwZW5kQ2hpbGQg
cmVzdWx0cyBpbiBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMuJyk7Ci0KLSAgICAgICAgbXV0
YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPHNwYW4+Rm9vPC9zcGFuPic7Ci0gICAgICAg
IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICBh
ZGRlZERpdjEgPSBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSk7Ci0gICAgICAgIGFkZGVkRGl2MiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLQotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlz
dDogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LmFwcGVuZENoaWxkKGZyYWdtZW50KTsKLSAgICAgICAg
c2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXScsICdhZGRlZERpdjEnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzFdJywgJ2FkZGVkRGl2MicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwot
Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAg
ICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RJbm5lckhUTUxFbXB0eSgpIHsKLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAg
ZGVidWcoJ1NldHRpbmcgYW4gZW1wdHkgY2hpbGRsaXN0IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2l0
aCBpbm5lckhUTUwgc2hvdWxkIG5vdCBhc3NlcnQuJyk7Ci0KLSAgICAgICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwot
ICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11
dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVl
fSk7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSAnJzsKLSAgICAgICAgc2V0VGltZW91dChmaW5p
c2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxk
QmVOdWxsKCdtdXRhdGlvbnMnKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0
VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLXZhciB0ZXN0cyA9IFt0ZXN0QmFz
aWMsIHRlc3RXcm9uZ1R5cGUsIHRlc3RNdWx0aXBsZVJlZ2lzdHJhdGlvbiwgdGVzdE11bHRpcGxl
T2JzZXJ2ZXJzLCB0ZXN0SW5uZXJIVE1MQW5kSW5uZXJUZXh0LCB0ZXN0UmVwbGFjZUNoaWxkLCB0
ZXN0SW5zZXJ0QmVmb3JlLCB0ZXN0QXBwZW5kQ2hpbGQsIHRlc3RJbm5lckhUTUxFbXB0eV07Ci12
YXIgdGVzdEluZGV4ID0gMDsKLSAKLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgewotICAgIGlmICh0
ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpCi0gICAgICAgIHRlc3RzW3Rlc3RJbmRleCsrXSgpOwot
ICAgIGVsc2UKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWRlc2NyaXB0aW9uKCdUZXN0
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBhdHRyaWJ1dGVzLicpOwotCi1pZiAo
IXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyKQotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVz
dCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOwotZWxzZQotICAgIHJ1bk5l
eHRUZXN0KCk7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTY4M2FkOGI2M2RhYmVkNGI2MzNiMDk1
MjdiOTVkNWQxMmNhODg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRlc3QgdGhhdCBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyLm9ic2VydmUgdGhyb3dzIGV4Y2VwdGlvbnMgYXBwcm9wcmlhdGVseQot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBvYnNlcnZlci5vYnNlcnZlKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG9i
c2VydmVyLm9ic2VydmUobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCi1QQVNTIG9ic2VydmVyLm9ic2VydmUodW5kZWZpbmVkKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgb2JzZXJ2ZXIub2Jz
ZXJ2ZShkb2N1bWVudC5ib2R5KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KLVBBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCBudWxsKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFT
UyBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1Mgb2JzZXJ2ZXIu
b2JzZXJ2ZShudWxsLCB7YXR0cmlidXRlczogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
Tm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4LgotUEFTUyBvYnNlcnZlci5vYnNlcnZlKHVu
ZGVmaW5lZCwge2F0dHJpYnV0ZXM6IHRydWV9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdEZv
dW5kRXJyb3I6IERPTSBFeGNlcHRpb24gOC4KLVBBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVu
dC5ib2R5LCB7c3VidHJlZTogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJy
b3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9k
eSwge2NoaWxkTGlzdDogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWV9KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBvYnNlcnZl
ci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRh
T2xkVmFsdWU6IHRydWV9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00g
RXhjZXB0aW9uIDEyLgotUEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGFy
YWN0ZXJEYXRhOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsiaWQiXX0pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZS1leGNlcHRpb25zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ0NjU3YjZkZDdjMmUzMzEyODNlMjg5MjVjZGY5MGM1ZGY0NjIwNTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM5
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPHRpdGxlPjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPWRlc2NyaXB0
aW9uPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZnVuY3Rpb24g
cnVuVGVzdCgpIHsKLSAgICB3aW5kb3cub2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNl
cnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsgfSk7Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVy
Lm9ic2VydmUoKScpOwotICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKG51bGwpJyk7
Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUodW5kZWZpbmVkKScpOwotICAgIHNo
b3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHkpJyk7Ci0gICAgc2hvdWxk
VGhyb3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgbnVsbCknKTsKLSAgICBzaG91
bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB1bmRlZmluZWQpJyk7Ci0g
ICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUobnVsbCwge2F0dHJpYnV0ZXM6IHRydWV9
KScpOwotICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKHVuZGVmaW5lZCwge2F0dHJp
YnV0ZXM6IHRydWV9KScpOwotICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKGRvY3Vt
ZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlfSknKTsKLSAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIu
b2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1
ZTogdHJ1ZX0pJyk7Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQu
Ym9keSwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0pJyk7
Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2NoYXJh
Y3RlckRhdGE6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWyJpZCJdfSknKTsKLX0KLQotZGVzY3Jp
cHRpb24oJ1Rlc3QgdGhhdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9ic2VydmUgdGhyb3dzIGV4
Y2VwdGlvbnMgYXBwcm9wcmlhdGVseScpOwotCi1pZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9i
c2VydmVyKQotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKScpOwotZWxzZQotICAgIHJ1blRlc3QoKTsKLQotPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2Vy
dmUtc3VidHJlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2Vy
dmUtc3VidHJlZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4
OTRkY2RhMWIzZjZkMmQzNDliZDdjNGE5YTRjZDA2OWE0ZTY5ZWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9v
YnNlcnZlLXN1YnRyZWUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBA
QAotVGVzdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9ic2VydmUgb24gYSBzdWJ0cmVlCi0KLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2Ygc3Vi
dHJlZSBvYnNlcnZhdGlvbi4KLS4uLmF0dHJpYnV0ZSBhbmQgY2hhcmFjdGVyRGF0YSBjaGFuZ2Vz
IGluIHN1YnRyZWUKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1sw
XS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRp
dgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUg
aXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgc3ViRGl2LmZp
cnN0Q2hpbGQKLQotVGVzdGluZyB0d28gb2JzZXJ2ZXJzIGF0IGRpZmZlcmVudCBkZXB0aHMuCi1Q
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0
cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBzdWJEaXYKLVBBU1MgbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNTIG11dGF0aW9uczIubGVuZ3RoIGlzIDEKLVBBU1MgbXV0
YXRpb25zMlswXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnMyWzBdLnRhcmdl
dCBpcyBzdWJEaXYKLVBBU1MgbXV0YXRpb25zMlswXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1Q
QVNTIG11dGF0aW9uczJbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLQotVGVzdGluZyBv
bmUgb2JzZXJ2ZXIgYXQgdHdvIGRpZmZlcmVudCBkZXB0aHMuCi1QQVNTIGNhbGxzIGlzIDEKLVBB
U1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRy
aWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZXNwYWNlIGlzIG51bGwKLQotVGVzdGluZyB0aGF0IHRyYW5zaWVudGx5IGRldGFjaGVkIG5v
ZGVzIGFyZSBzdGlsbCBvYnNlcnZlZCB2aWEgc3VidHJlZS4KLS4uLmJvdGggY2hhbmdlcyBzaG91
bGQgYmUgcmVjZWl2ZWQuIENoYW5nZSBkZXRhY2hlZCBzdWJEaXYgYWdhaW4uCi1QQVNTIG11dGF0
aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIK
LVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBzdWJEaXYKLVBBU1MgbXV0YXRpb25zWzBdLmF0
dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgc3ViRGl2Ci1QQVNTIG11dGF0aW9uc1sx
XS5hdHRyaWJ1dGVOYW1lIGlzICJ0ZXN0IgotLi4udHJhbnNpZW50IHN1YnRyZWUgb2JzZXJ2YXRp
b24gd2FzIHN0b3BwZWQgYWZ0ZXIgZGVsaXZlcnksIHNvIHN1YkRpdiBjaGFuZ2Ugc2hvdWxkIG5v
dCBiZSByZWNlaXZlZC4gUmVhdHRhY2ggYW5kIGNoYW5nZSBhZ2Fpbi4KLVBBU1MgbXV0YXRpb25z
IGlzIG51bGwKLS4uLnJlYXR0YWNoZWQgc3VidHJlZSBzaG91bGQgbm93IGJlIG9ic2VydmFibGUu
IFRyeSBkZXRhY2hpbmcgYW5kIHJlLW9ic2VydmluZy4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBp
cyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlv
bnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBp
cyAiZm9vIgotLi4uVGhlIGNoYW5nZSBtYWRlIGJlZm9yZSByZS1vYnNlcnZpbmcgc2hvdWxkIGJl
IHJlY2VpdmVkLCBidXQgbm90IHRoZSBvbmUgYWZ0ZXIuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGgg
aXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0
YXRpb25zWzBdLnRhcmdldCBpcyBzdWJEaXYuZmlyc3RDaGlsZAotCi1UZXN0aW5nIGNvcnJlY3Qg
YmVoYXZpb3Igb2YgdHJhbnNpZW50IG9ic2VydmF0aW9uIHdpdGggY29tcGxleCBtb3ZlbWVudCAu
Ci0uLi5BbGwgY2hhbmdlcyBzaG91bGQgYmUgcmVjZWl2ZWQgZXhjZXB0IGZvciBzZXR0aW5nIHRo
ZSAiZCIgYXR0cmlidXRlIG9uIHN1YkRpdjMgYmVmb3JlIGl0IHdhcyByZWFjaGFibGUgZnJvbSBk
aXYuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgNgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBp
cyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBzdWJEaXYKLVBBU1Mg
bXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImEiCi1QQVNTIG11dGF0aW9uc1sxXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0udGFyZ2V0IGlzIHN1YkRpdjIKLVBB
U1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImIiCi1QQVNTIG11dGF0aW9uc1syXS50
eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNbMl0udGFyZ2V0IGlzIHRleHQK
LVBBU1MgbXV0YXRpb25zWzNdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sz
XS50YXJnZXQgaXMgc3ViRGl2MgotUEFTUyBtdXRhdGlvbnNbM10uYXR0cmlidXRlTmFtZSBpcyAi
ZSIKLVBBU1MgbXV0YXRpb25zWzRdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9u
c1s0XS50YXJnZXQgaXMgc3ViRGl2MwotUEFTUyBtdXRhdGlvbnNbNF0uYXR0cmlidXRlTmFtZSBp
cyAiZiIKLVBBU1MgbXV0YXRpb25zWzVdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0
aW9uc1s1XS50YXJnZXQgaXMgc3ViRGl2MgotUEFTUyBtdXRhdGlvbnNbNV0uYXR0cmlidXRlTmFt
ZSBpcyAiZyIKLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1zdWJ0
cmVlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtc3VidHJlZS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2U0MDI4NWUyYjhiNzFkMjIyNmZkMzYx
ODFkYTRiODUzYTIwNTcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1zdWJ0cmVlLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08dGl0bGU+PC90aXRsZT4KLTwvaGVhZD4KLTxi
b2R5PgotPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
c2NyaXB0PgotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci12YXIgbXV0YXRpb25zOwot
dmFyIG11dGF0aW9uczI7Ci12YXIgZGl2OwotdmFyIHN1YkRpdiwgc3ViRGl2Miwgc3ViRGl2Mywg
dGV4dDsKLXZhciBjYWxsczsKLQotZnVuY3Rpb24gdGVzdEJhc2ljKCkgewotICAgIHZhciBvYnNl
cnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyBi
YXNpYyBhc3BlY3RzIG9mIHN1YnRyZWUgb2JzZXJ2YXRpb24uJyk7Ci0KLSAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKSk7Ci0gICAgICAgIHN1YkRpdi5pbm5lckhUTUwgPSAnaGVsbG8sIHdvcmxkJzsKLSAg
ICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRh
dGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1
ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwotICAgICAgICBzdWJEaXYu
c2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIHN1YkRpdi5maXJzdENoaWxkLnRl
eHRDb250ZW50ID0gJ2dvb2RieWUhJzsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgZGVidWcoJy4uLmF0dHJp
YnV0ZSBhbmQgY2hhcmFjdGVyRGF0YSBjaGFuZ2VzIGluIHN1YnRyZWUnKTsKLQotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS50YXJnZXQnLCAnc3ViRGl2LmZpcnN0Q2hpbGQnKTsKLSAgICAgICAgb2JzZXJ2
ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0
KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE11bHRpcGxlT2Jz
ZXJ2ZXJzKCkgewotICAgIHZhciBvYnNlcnZlcjsKLSAgICB2YXIgb2JzZXJ2ZXIyOwotCi0gICAg
ZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHR3byBvYnNlcnZlcnMg
YXQgZGlmZmVyZW50IGRlcHRocy4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAg
ICAgICBtdXRhdGlvbnMyID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0
YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIyID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAg
ICB3aW5kb3cubXV0YXRpb25zMiA9IG11dGF0aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg
b2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7
Ci0gICAgICAgIG9ic2VydmVyMi5vYnNlcnZlKHN1YkRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsK
LSAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBzZXRU
aW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMyLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMy
WzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMy
WzBdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0u
YXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlsw
XS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25u
ZWN0KCk7Ci0gICAgICAgIG9ic2VydmVyMi5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcn
KTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1m
dW5jdGlvbiB0ZXN0TXVsdGlwbGVPYnNlcnZhdGlvbnMoKSB7Ci0gICAgdmFyIG9ic2VydmVyOwot
Ci0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIG9uZSBvYnNl
cnZlciBhdCB0d28gZGlmZmVyZW50IGRlcHRocy4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOwotICAgICAgICBjYWxscyA9IDA7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwotICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11
dGF0aW9ucyA9IG11dGF0aW9uczsKLSAgICAgICAgICAgICsrY2FsbHM7Ci0gICAgICAgIH0pOwot
Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZSwgc3VidHJl
ZTogdHJ1ZX0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHN1YkRpdiwge2F0dHJpYnV0ZXM6
IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9v
JywgJ2JhcicpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnY2FsbHMnLCAnMScpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgp
OwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RUcmFuc2llbnREZXRh
Y2hlZEJhc2ljKCkgewotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
ewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHRyYW5zaWVudGx5IGRldGFjaGVkIG5vZGVz
IGFyZSBzdGlsbCBvYnNlcnZlZCB2aWEgc3VidHJlZS4nKTsKLQotICAgICAgICBtdXRhdGlvbnMg
PSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAg
ICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKLSAgICAgICAgc3ViRGl2LmlubmVySFRNTCA9ICdoZWxsbywgd29ybGQnOwotICAgICAg
ICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9u
cykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBj
aGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci0gICAgICAgIHN1YkRpdi5zZXRB
dHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAgICAgZGl2LnJlbW92ZUNoaWxkKHN1YkRpdik7
Ci0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCAndGVzdCcpOwotICAgICAgICBz
ZXRUaW1lb3V0KGNoZWNrRGVsaXZlcmVkQW5kQ2hhbmdlQWdhaW4sIDApOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGNoZWNrRGVsaXZlcmVkQW5kQ2hhbmdlQWdhaW4oKSB7Ci0gICAgICAgIGRlYnVn
KCcuLi5ib3RoIGNoYW5nZXMgc2hvdWxkIGJlIHJlY2VpdmVkLiBDaGFuZ2UgZGV0YWNoZWQgc3Vi
RGl2IGFnYWluLicpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICcidGVzdCInKTsKLQotICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28n
LCAnYmF6Jyk7Ci0KLSAgICAgICAgc2V0VGltZW91dChjaGVja05vdERlbGl2ZXJlZEFuZFJlYXR0
YWNoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja05vdERlbGl2ZXJlZEFuZFJlYXR0YWNo
KCkgewotICAgICAgICBkZWJ1ZygnLi4udHJhbnNpZW50IHN1YnRyZWUgb2JzZXJ2YXRpb24gd2Fz
IHN0b3BwZWQgYWZ0ZXIgZGVsaXZlcnksIHNvIHN1YkRpdiBjaGFuZ2Ugc2hvdWxkIG5vdCBiZSBy
ZWNlaXZlZC4gUmVhdHRhY2ggYW5kIGNoYW5nZSBhZ2Fpbi4nKTsKLQotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zJywgJ251bGwnKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsCi0gICAg
ICAgIGRpdi5hcHBlbmRDaGlsZChzdWJEaXYpOwotICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRl
KCdmb28nLCAnYmF0Jyk7Ci0KLSAgICAgICAgc2V0VGltZW91dChjaGVja0RlbGl2ZXJlZEFuZFJl
b2JzZXJ2ZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tEZWxpdmVyZWRBbmRSZW9ic2Vy
dmUoKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5yZWF0dGFjaGVkIHN1YnRyZWUgc2hvdWxkIG5vdyBi
ZSBvYnNlcnZhYmxlLiBUcnkgZGV0YWNoaW5nIGFuZCByZS1vYnNlcnZpbmcuJyk7Ci0KLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOwotICAgICAgICBkaXYucmVtb3ZlQ2hpbGQoc3ViRGl2KTsKLSAgICAgICAgc3ViRGl2LmZp
cnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnYmFkYnllJzsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0
cnVlfSk7Ci0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdib28nKTsKLQotICAg
ICAgICBzZXRUaW1lb3V0KGZpbmlzaCk7Ci0gICAgfQotCi0KLSAgICBmdW5jdGlvbiBmaW5pc2go
KSB7Ci0gICAgICAgIGRlYnVnKCcuLi5UaGUgY2hhbmdlIG1hZGUgYmVmb3JlIHJlLW9ic2Vydmlu
ZyBzaG91bGQgYmUgcmVjZWl2ZWQsIGJ1dCBub3QgdGhlIG9uZSBhZnRlci4nKTsKLQotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2LmZpcnN0Q2hpbGQnKTsKLQotICAgICAgICBv
YnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4
dFRlc3QoKTsKLSAgICB9Ci0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFRyYW5zaWVu
dERldGFjaGVkRGV0YWlsZWQoKSB7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24g
c3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIGNvcnJlY3QgYmVoYXZpb3Igb2YgdHJh
bnNpZW50IG9ic2VydmF0aW9uIHdpdGggY29tcGxleCBtb3ZlbWVudCAuJyk7Ci0KLSAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHN1YkRpdjIgPSBzdWJEaXYuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBzdWJEaXYyLmlubmVySFRNTCA9
ICdoZWxsbywgd29ybGQnOwotICAgICAgICBzdWJEaXYzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBt
dXRhdGlvbnM7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7
YXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwot
ICAgICAgICBkaXYucmVtb3ZlQ2hpbGQoc3ViRGl2KTsKLSAgICAgICAgc3ViRGl2LnJlbW92ZUNo
aWxkKHN1YkRpdjIpOwotICAgICAgICB0ZXh0ID0gc3ViRGl2Mi5yZW1vdmVDaGlsZChzdWJEaXYy
LmZpcnN0Q2hpbGQpOwotCi0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2EnLCAnYScpOwot
ICAgICAgICBzdWJEaXYyLnNldEF0dHJpYnV0ZSgnYicsICdiJyk7Ci0gICAgICAgIHRleHQudGV4
dENvbnRlbnQgPSAnYyc7Ci0gICAgICAgIHN1YkRpdjMuYXBwZW5kQ2hpbGQoc3ViRGl2Mik7Ci0g
ICAgICAgIHN1YkRpdjMuc2V0QXR0cmlidXRlKCdkJywgJ2QnKTsKLSAgICAgICAgc3ViRGl2Mi5z
ZXRBdHRyaWJ1dGUoJ2UnLCAnZScpOwotICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoc3ViRGl2Myk7
Ci0gICAgICAgIHN1YkRpdjMuc2V0QXR0cmlidXRlKCdmJywgJ2YnKTsKLSAgICAgICAgc3ViRGl2
Mi5zZXRBdHRyaWJ1dGUoJ2cnLCAnZycpOwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAw
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5B
bGwgY2hhbmdlcyBzaG91bGQgYmUgcmVjZWl2ZWQgZXhjZXB0IGZvciBzZXR0aW5nIHRoZSAiZCIg
YXR0cmlidXRlIG9uIHN1YkRpdjMgYmVmb3JlIGl0IHdhcyByZWFjaGFibGUgZnJvbSBkaXYuJyk7
Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnNicpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImEiJyk7Ci0KLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYiInKTsKLQotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzJdLnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMl0udGFyZ2V0JywgJ3RleHQnKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzNdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbM10udGFyZ2V0JywgJ3N1YkRpdjInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1szXS5hdHRyaWJ1dGVOYW1lJywgJyJlIicpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbNF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1s0XS50YXJnZXQnLCAnc3ViRGl2MycpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzRd
LmF0dHJpYnV0ZU5hbWUnLCAnImYiJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1s1
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzVd
LnRhcmdldCcsICdzdWJEaXYyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbNV0uYXR0
cmlidXRlTmFtZScsICciZyInKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0g
ICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0gICAgc3Rh
cnQoKTsKLX0KLQotdmFyIHRlc3RzID0gW3Rlc3RCYXNpYywgdGVzdE11bHRpcGxlT2JzZXJ2ZXJz
LCB0ZXN0TXVsdGlwbGVPYnNlcnZhdGlvbnMsIHRlc3RUcmFuc2llbnREZXRhY2hlZEJhc2ljLCB0
ZXN0VHJhbnNpZW50RGV0YWNoZWREZXRhaWxlZF07Ci12YXIgdGVzdEluZGV4ID0gMDsKLQotZnVu
Y3Rpb24gcnVuTmV4dFRlc3QoKSB7Ci0gICAgaWYgKHRlc3RJbmRleCA8IHRlc3RzLmxlbmd0aCkK
LSAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7Ci0gICAgZWxzZQotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3QgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5v
YnNlcnZlIG9uIGEgc3VidHJlZScpOwotCi1pZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKQotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKScpOwotZWxzZQotICAgIHJ1bk5leHRUZXN0KCk7Ci0KLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNl
cnZlci13cmFwcGVyLWRyb3BvZmYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjOGMwZjJlOWRjYzY0MTY1ZGQ4MmE3ZDEyNGM1ZjMyOWVjM2JlOTNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLU11dGF0aW9uT2JzZXJ2ZXIgd3JhcHBlcnMg
c2hvdWxkIHN1cnZpdmUgR0MgZm9yIHBhc3NpbmcgaW50byB0aGUgY2FsbGJhY2sgZXZlbiBpZiBK
UyBoYXMgbG9zdCByZWZlcmVuY2VzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
UEFTUyBvYnNlcnZlci50ZXN0UHJvcGVydHkgaXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5zaWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10
cmFuc2llbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjNh
NTUzZWMyMjM2Y2MxZmVkZDMxZThlZGYxMWE0NDFjM2I2YmIwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2Jz
ZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5zaWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxMCArMCwwIEBACi1NdXRhdGlvbk9ic2VydmVyIHdyYXBwZXJzIHNob3VsZCBzdXJ2
aXZlIEdDIGZvciBwYXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2ZW4gaWYgSlMgaGFzIGxvc3Qg
cmVmZXJlbmNlcyBhbmQgdGhlIG9ubHkgcmVtYWluaW5nIG9ic2VydmF0aW9ucyBhcmUgdHJhbnNp
ZW50LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBvYnNlcnZlci50ZXN0
UHJvcGVydHkgaXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2
ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5zaWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNkYzg0MjU4YzBlN2E4NzkwOWFmMjIxMDZiNmMxNTI4Yjg4NWQ0
NjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLQotPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQ+Ci1kZXNjcmlwdGlvbignTXV0YXRpb25PYnNlcnZlciB3cmFwcGVycyBzaG91bGQgc3Vy
dml2ZSBHQyBmb3IgcGFzc2luZyBpbnRvIHRoZSBjYWxsYmFjayBldmVuIGlmIEpTIGhhcyBsb3N0
IHJlZmVyZW5jZXMgYW5kIHRoZSBvbmx5IHJlbWFpbmluZyBvYnNlcnZhdGlvbnMgYXJlIHRyYW5z
aWVudC4nKTsKLQotanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWZ1bmN0aW9uIGFkZE9ic2VydmVy
KG5vZGUsIGZuKSB7Ci0gICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIoZm4pOwotICAgIG9ic2VydmVyLnRlc3RQcm9wZXJ0eSA9IHRydWU7Ci0gICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShub2RlLCB7YXR0cmlidXRlczp0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci19Ci0KLW9u
bG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgdmFyIGNoaWxkID0gcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzcGFuJykpOwotICAgIGFkZE9ic2VydmVyKHJvb3QsIGZ1bmN0aW9uKHJlY29y
ZHMsIG9ic2VydmVyKSB7Ci0gICAgICAgIHdpbmRvdy5vYnNlcnZlciA9IG9ic2VydmVyOwotICAg
ICAgICBzaG91bGRCZSgnb2JzZXJ2ZXIudGVzdFByb3BlcnR5JywgJ3RydWUnKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci0KLSAgICByb290LnJlbW92ZUNoaWxkKGNoaWxkKTsK
LSAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICByb290ID0gbnVsbDsK
LQotICAgIGdjKCk7Ci19OwotPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L211dGF0aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjNWRiY2JiZjA5NWVkZjQ0NTBmNDU2Y2UxM2E2MzYzNjczY2UxNGI4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLQotPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci1kZXNj
cmlwdGlvbignTXV0YXRpb25PYnNlcnZlciB3cmFwcGVycyBzaG91bGQgc3Vydml2ZSBHQyBmb3Ig
cGFzc2luZyBpbnRvIHRoZSBjYWxsYmFjayBldmVuIGlmIEpTIGhhcyBsb3N0IHJlZmVyZW5jZXMu
Jyk7Ci0KLWpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi1mdW5jdGlvbiBhZGRPYnNlcnZlcihub2Rl
LCBmbikgewotICAgIHZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZu
KTsKLSAgICBvYnNlcnZlci50ZXN0UHJvcGVydHkgPSB0cnVlOwotICAgIG9ic2VydmVyLm9ic2Vy
dmUobm9kZSwge2F0dHJpYnV0ZXM6dHJ1ZX0pOwotfQotCi1vbmxvYWQgPSBmdW5jdGlvbigpIHsK
LSAgICBhZGRPYnNlcnZlcihkb2N1bWVudC5ib2R5LCBmdW5jdGlvbihyZWNvcmRzLCBvYnNlcnZl
cikgewotICAgICAgICB3aW5kb3cub2JzZXJ2ZXIgPSBvYnNlcnZlcjsKLSAgICAgICAgc2hvdWxk
QmUoJ29ic2VydmVyLnRlc3RQcm9wZXJ0eScsICd0cnVlJyk7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0pOwotCi0gICAgZ2MoKTsKLQotICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmli
dXRlKCd0b3VjaCcsICd0aGUgbm9kZScpOwotfTsKLTwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3JlbW92ZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQtb2Ytb3JkZXItZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWRmYzAxMjZhZDhmNDExOTJj
N2EwZGRhODI4ZjRlYmVkZmMyYWFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQtb2Ytb3Jk
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGVzdCBNdXRh
dGlvbkV2ZW50cyBpbnRlcmZlcmluZyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzOiByZW1vdmluZyBu
b2RlcyAnb3V0IG9mIG9yZGVyJwotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFT
UyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVu
Z3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAotUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICdCJwotUEFTUyBtdXRhdGlv
bnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5v
ZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFt
ZSBpcyAnQicKLVBBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAnSScK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3JlbW92ZWQtb3V0LW9mLW9yZGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3JlbW92ZWQtb3V0LW9mLW9yZGVyLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyM2RlNzhhNmJlOGJiMTM3MzdkZWVhZGU3
OGViOTQxMmE5NGYwMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZW1vdmVkLW91dC1vZi1vcmRlci5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08ZGl2IGlk
PSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0
aW9uKCJUZXN0IE11dGF0aW9uRXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZl
cnM6IHJlbW92aW5nIG5vZGVzICdvdXQgb2Ygb3JkZXInIik7Ci12YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7Ci12YXIgcmVtb3ZlZCA9IGZhbHNlOwotc2Fu
ZGJveC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlSW5zZXJ0ZWQnLCBmdW5jdGlvbigpIHsKLSAg
ICBpZiAoIXJlbW92ZWQpIHsKLSAgICAgICAgc2FuZGJveC5yZW1vdmVDaGlsZChzYW5kYm94LmZp
cnN0Q2hpbGQpOwotICAgICAgICByZW1vdmVkID0gdHJ1ZTsKLSAgICB9Ci19KTsKLXZhciBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7fSk7Ci1vYnNlcnZl
ci5vYnNlcnZlKHNhbmRib3gsIHtjaGlsZExpc3Q6IHRydWV9KTsKLXNhbmRib3guaW5uZXJIVE1M
ID0gJzxiPjwvYj48aT48L2k+JzsKLQotdmFyIG11dGF0aW9ucyA9IG9ic2VydmVyLnRha2VSZWNv
cmRzKCk7Ci1zaG91bGRCZSgibXV0YXRpb25zLmxlbmd0aCIsICIyIik7Ci1zaG91bGRCZSgibXV0
YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIiwgIjEiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNb
MF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCIsICIwIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXNbMF0udGFnTmFtZSIsICInQiciKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRk
ZWROb2Rlcy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9k
ZXMubGVuZ3RoIiwgIjEiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzBd
LnRhZ05hbWUiLCAiJ0InIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0u
dGFnTmFtZSIsICInSSciKTsKLTwvc2NyaXB0PgotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL3NoYWRvdy1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9zaGFkb3ctZG9tLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjdhMWM1NTE4YjczNjM4NTM3ZDg0YTVlOGVmZmM5MGRmYTIyNTdkZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL3NoYWRvdy1kb20tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMTggKzAsMCBAQAotVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG9wZXJhdGUgaW4gU2hh
ZG93IERPTQotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotTXV0YXRpb25zIGluIHNo
YWRvdyBET00gc2hvdWxkIGhhdmUgYmVlbiBvYnNlcnZlZDoKLVBBU1MgbXV0YXRpb25zLmxlbmd0
aCBpcyA0Ci1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRh
dGlvbnNbMV0udHlwZSBpcyAiY2hpbGRMaXN0IgotUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAi
Y2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0YXRpb25zWzNdLnR5cGUgaXMgImNoaWxkTGlzdCIKLQot
T2JzZXJ2aW5nIGZyb20gb3V0c2lkZSBzaGFkb3cgRE9NIHNob3VsZCBub3Qgc2VlIG11dGF0aW9u
cyBpbiB0aGUgc2hhZG93OgotUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vc2hhZG93LWRvbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9zaGFkb3ctZG9tLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2Yzc5
ZWFjMDBmOTU5NjBhMDQzMWNlMmIyOTUyMmNhMDc1NmJmYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9zaGFk
b3ctZG9tLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxib2R5PgotPGlucHV0IHR5cGU9InJhbmdlIj4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCdU
ZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgb3BlcmF0ZSBpbiBTaGFkb3cgRE9NJyk7Ci0KLWZ1
bmN0aW9uIGRvVGVzdCgpIHsKLSAgICBmdW5jdGlvbiBtdXRhdGUoZWx0KSB7Ci0gICAgICAgIGVs
dC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9vJywgJ2JhcicpOwotICAgICAgICBlbHQuaW5zZXJ0QmVm
b3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdoZWxsbycpLCBlbHQuZmlyc3RDaGlsZCk7Ci0g
ICAgICAgIGVsdC5maXJzdENoaWxkLnRleHRDb250ZW50ID0gJ2dvb2RieWUnOwotICAgICAgICBl
bHQucmVtb3ZlQ2hpbGQoZWx0LmZpcnN0Q2hpbGQpOwotICAgIH0KLQotICAgIHZhciBzaGFkb3dS
b290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQn
KSk7Ci0gICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rp
b24obXV0YXRpb25zKSB7Ci0gICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0g
ICAgfSk7Ci0KLSAgICBvYnNlcnZlci5vYnNlcnZlKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCwge2F0
dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSwgc3Vi
dHJlZTogdHJ1ZX0pOwotICAgIG11dGF0ZShzaGFkb3dSb290LmZpcnN0Q2hpbGQpOwotCi0gICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgZGVidWcoJ011dGF0aW9ucyBpbiBzaGFk
b3cgRE9NIHNob3VsZCBoYXZlIGJlZW4gb2JzZXJ2ZWQ6Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMubGVuZ3RoJywgJzQnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50
eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5
cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBl
JywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzNdLnR5
cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotCi0g
ICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZl
KGRvY3VtZW50LCB7YXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJE
YXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci0gICAgICAgIG11dGF0ZShzaGFkb3dSb290LmZp
cnN0Q2hpbGQpOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ZGVidWcoJ1xuT2JzZXJ2aW5nIGZyb20gb3V0c2lkZSBzaGFkb3cgRE9NIHNob3VsZCBub3Qgc2Vl
IG11dGF0aW9ucyBpbiB0aGUgc2hhZG93OicpOwotICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCdt
dXRhdGlvbnMnKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9LCAwKTsK
LSAgICB9LCAwKTsKLX0KLQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICBkb1Rlc3QoKTsK
LSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci19IGVsc2UKLSAgICB0ZXN0RmFpbGVk
KCdUaGlzIHRlc3Qgb25seSBydW5zIGluIERSVCcpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3Rha2VSZWNvcmRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdGFrZVJlY29yZHMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzY0NDI2YWIxM2FlMmUxYzkwMzhkZmI2M2I3
OTEyZDNhMDY1ZWY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdGFrZVJlY29yZHMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGVzdGluZyBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyLnRha2VSZWNvcmRzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0aW5n
IHRha2VSZWNvcmRzLgotLi4ucmVjb3JkcyBhcmUgdGFrZW4gc3luY2hyb25vdXNseS4KLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEi
Ci1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgc3ViRGl2LmZpcnN0Q2hpbGQKLS4uLnRha2VS
ZWNvcmQgdG9vayByZWNvcmRzLCBidXQgZGlkIG5vdCBjbGVhciB0cmFuc2llbnQgb2JzZXJ2ZXJz
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
YXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBzdWJEaXYKLVBBU1MgbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vdGFrZVJlY29yZHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
dGFrZVJlY29yZHMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM5YTMyZmJk
OTExODBiYThkNjZjMTdkYjg1NzJjM2U0NTQ0Y2JjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3Rha2VSZWNv
cmRzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTx0aXRsZT48L3RpdGxlPgot
PC9oZWFkPgotPGJvZHk+Ci08cCBpZD1kZXNjcmlwdGlvbj48L3A+Ci08ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KLTxzY3JpcHQ+Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXZhciBt
dXRhdGlvbnM7Ci0KLWZ1bmN0aW9uIHRlc3RCYXNpYygpIHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0K
LSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGFrZVJlY29y
ZHMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHN1YkRpdi5pbm5lckhU
TUwgPSAnaGVsbG8sIHdvcmxkJzsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRh
dGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSwgc3VidHJlZTog
dHJ1ZX0pOwotICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAg
ICAgIHN1YkRpdi5maXJzdENoaWxkLnRleHRDb250ZW50ID0gJ2dvb2RieWUhJzsKLSAgICAgICAg
ZGl2LnJlbW92ZUNoaWxkKHN1YkRpdik7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gb2JzZXJ2ZXIu
dGFrZVJlY29yZHMoKTsKLQotICAgICAgICBkZWJ1ZygnLi4ucmVjb3JkcyBhcmUgdGFrZW4gc3lu
Y2hyb25vdXNseS4nKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcy
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxs
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciY2hhcmFjdGVyRGF0
YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50YXJnZXQnLCAnc3ViRGl2LmZp
cnN0Q2hpbGQnKTsKLQotICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7
Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBm
aW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi50YWtlUmVjb3JkIHRvb2sgcmVjb3JkcywgYnV0
IGRpZCBub3QgY2xlYXIgdHJhbnNpZW50IG9ic2VydmVycycpOwotCi0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnRhcmdldCcsICdzdWJEaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAg
ICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0
YXJ0KCk7Ci19Ci0KLXZhciB0ZXN0cyA9IFt0ZXN0QmFzaWNdOwotdmFyIHRlc3RJbmRleCA9IDA7
Ci0KLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgewotICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5s
ZW5ndGgpCi0gICAgICAgIHRlc3RzW3Rlc3RJbmRleCsrXSgpOwotICAgIGVsc2UKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWRlc2NyaXB0aW9uKCdUZXN0aW5nIFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIudGFrZVJlY29yZHMnKTsKLQotaWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNl
cnZlcikKLSAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUyknKTsKLWVsc2UKLSAgICBydW5OZXh0VGVzdCgpOwotCi08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdHJh
bnNpZW50LWdjLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
dHJhbnNpZW50LWdjLWNyYXNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTEwYzAxZmE5ZDVhMDE2YjNlZGVjZmZlOGNiYjhlNzc4MGY4ZmUzMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL3RyYW5zaWVudC1nYy1jcmFzaC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi1DbGVhcmluZyB0cmFuc2llbnQgb2JzZXJ2ZXJzIGFmdGVyIG9ic2VydmF0
aW9uIG5vZGUgaXMgR0NlZCBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2guCi0KLU9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdHJhbnNpZW50LWdjLWNyYXNoLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL3RyYW5zaWVudC1nYy1jcmFzaC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YzEzNjQyZDc2OGExMTgyOWJiZjhhYjU5YTFlZmMxMjA5ZWFmNTEz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vdHJhbnNpZW50LWdjLWNyYXNoLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwyMyArMCwwIEBACi08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1k
ZXNjcmlwdGlvbignQ2xlYXJpbmcgdHJhbnNpZW50IG9ic2VydmVycyBhZnRlciBvYnNlcnZhdGlv
biBub2RlIGlzIEdDZWQgc2hvdWxkIG5vdCBjYXVzZSBhIGNyYXNoLicpOwotCi1mdW5jdGlvbiBj
YWxsYmFjayhtdXRhdGlvbnMpIHsKLSAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwot
fQotdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spOwot
Ci12YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci12YXIgc3BhbiA9IGRp
di5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOwotb2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci1kaXYucmVt
b3ZlQ2hpbGQoc3Bhbik7Ci1kaXYgPSBudWxsOwotZ2MoKTsKLXNwYW4uc2V0QXR0cmlidXRlKCdm
b28nLCAnYmFyJyk7Ci1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0sIDApOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMjA5ZjY3NDE3ZDVjOWUyOTRlYzVmM2Q3ZWI4ZWYyOTI0MjllODZkYi4uOGU4NGJiMjFlMzA0
YzVjNjkwNTE4YWY3ZGU1YjcwODEyNWQ2ZDY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzA0LDcgKzMwNCw3IEBAIEJ1ZyhFRkwpIGVk
aXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1lZGl0LXdvcmQuaHRtbCBbIEZhaWx1cmUgXQogQnVnKEVG
TCkgZWRpdGluZy9zcGVsbGluZy9tYXJrZXJzLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBXZWJLaXRU
ZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBldmVudFNlbmRlci5zY2hlZHVs
ZUFzeW5jaHJvbm91c0tleURvd24KLXdlYmtpdC5vcmcvYi85Mzk3OSBmYXN0L211dGF0aW9uL2Vu
ZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85Mzk3OSBm
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwgWyBGYWls
dXJlIF0KIAogIyB0ZXN0UnVubmVyLnNldFVzZURlZmVycmVkRnJhbWVMb2FkaW5nKCkgaXMgbm90
IGltcGxlbWVudGVkIGluIFdLMi4gU2tpcHBlZCBzbyBpdCBkb2VzIG5vdCBnZW5lcmF0ZSBQTkcg
cmVzdWx0cy4KIHdlYmtpdC5vcmcvYi85Mzk4MCBodHRwL3Rlc3RzL2FwcGNhY2hlL2xvYWQtZnJv
bS1hcHBjYWNoZS1kZWZlci1yZXN1bWUtY3Jhc2guaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNzk3ODZiYTM5MGVmOGMzNTExY2Y3
YWU0ZWZjOTBjMThkODVlOTA1Li5lODg1YzcwYzAzYzE4YTkzM2VlYTEyMGE5Y2VkNTFlNDQyMjdl
YTVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI1
NSw3ICsxMjU1LDcgQEAgd2Via2l0Lm9yZy9iLzg4MTkxIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQt
bGVnYWN5LXhodG1sbXAtcmVtb3ZlLWFuZC1hZGQuaHRtbCBbIEYKIAogIyBUaGUgRUZMIHBvcnQg
aGFzIG5vIHN1cHBvcnQgZm9yIHRoZSBGaWxlU3lzdGVtIEFQSQogd2Via2l0Lm9yZy9iLzY4NTkx
IGZhc3QvZmlsZXN5c3RlbQotd2Via2l0Lm9yZy9iLzY4NTkxIGZhc3QvbXV0YXRpb24vZmlsZXN5
c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCit3ZWJraXQub3JnL2IvNjg1OTEgZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKIHdlYmtp
dC5vcmcvYi82ODU5MSBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0KIHdlYmtpdC5vcmcvYi82ODU5MSBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKIHdl
YmtpdC5vcmcvYi82ODU5MSBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lz
dGVtLXVybC1pbi1pZnJhbWUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDdlN2FkODQ3NzNlMmQwZjlmNWE3ZjUwZGYxOThjYzU4YTkx
NzAwNjIuLmZhZWQ1YzZkNzlmMjQ1ODQwYjU4YWZhMWVkM2E4MDAzZDgzOGM5ZDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MSw3ICsx
ODEsNyBAQCB3ZWJraXQub3JnL2IvOTM5NzcgZmFzdC9kb20vR2VvbG9jYXRpb24vcGFnZS1yZWxv
YWQtY2FuY2VsLXBlcm1pc3Npb24tcmVxdWVzdHMuaAogCiAjIEltcGxlbWVudCBldmVudFNlbmRl
ci5zY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24KICMgaHR0cDovL3dlYmtpdC5vcmcvYi85Mzk3
OQotQnVnKEdUSykgZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sIFsgRmFp
bHVyZSBUaW1lb3V0IF0KK0J1ZyhHVEspIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5kLW9m
LXRhc2stZGVsaXZlcnkuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCiAKICMgSW1wbGVtZW50IHRl
c3RSdW5uZXIuc2V0VXNlRGVmZXJyZWRGcmFtZUxvYWRpbmcKICMgaHR0cDovL3dlYmtpdC5vcmcv
Yi85Mzk4MApAQCAtMjUxLDYgKzI1MSw3IEBAIHdlYmtpdC5vcmcvYi83MjY5OCBtZWRpYS9hdWRp
by1nYXJiYWdlLWNvbGxlY3QuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBCdWcoR1RLKSBlZGl0aW5n
L3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDA0Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogQnVnKEdU
SykgZWRpdGluZy9zZWxlY3Rpb24vNTA1NzUwNi5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIEJ1ZyhH
VEspIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRp
di5odG1sIFsgRmFpbHVyZSBQYXNzIF0KK0J1ZyhHVEspIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnkuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBCdWco
R1RLKSBmYXN0L2V2ZW50cy9kaXNwYXRjaC1tZXNzYWdlLXN0cmluZy1kYXRhLmh0bWwgWyBGYWls
dXJlIFBhc3MgXQogQnVnKEdUSykgZmFzdC9ldmVudHMvZG9tYWN0aXZhdGUtc2V0cy11bmRlcmx5
aW5nLWNsaWNrLWV2ZW50LWFzLWhhbmRsZWQuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBCdWcoR1RL
KSBmYXN0L2V2ZW50cy9tb3VzZWNsaWNrLXRhcmdldC1hbmQtcG9zaXRpb25pbmcuaHRtbCBbIEZh
aWx1cmUgUGFzcyBdCkBAIC0yNzksNyArMjgwLDYgQEAgQnVnKEdUSykgZmFzdC9mb3Jtcy9zZWxl
Y3Qvb3B0Z3JvdXAtZGlzYWJsZWQuaHRtbCBbIFBhc3MgVGltZW91dCBdCiBCdWcoR1RLKSBmYXN0
L2Zvcm1zL3NlbGVjdC1zZWxlY3RlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIEJ1ZyhHVEspIGZh
c3QvanMvZXhjZXB0aW9ucy10aHJvd24taW4tY2FsbGJhY2tzLmh0bWwgWyBGYWlsdXJlIFBhc3Mg
XQogQnVnKEdUSykgZmFzdC9sb2FkZXIvZnJhZ21lbnQtYWZ0ZXItcmVkaXJlY3QtZ2V0cy1iYWNr
LWVudHJ5Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQotQnVnKEdUSykgZmFzdC9tdXRhdGlvbi9kYXRh
YmFzZS1jYWxsYmFjay1kZWxpdmVyeS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIEJ1ZyhHVEspIGZh
c3Qvd3JpdGluZy1tb2RlL2phcGFuZXNlLXJ1YnktaG9yaXpvbnRhbC1idC5odG1sIFsgRmFpbHVy
ZSBQYXNzIF0KIEJ1ZyhHVEspIGZhc3Qvd3JpdGluZy1tb2RlL2phcGFuZXNlLXJ1YnktdmVydGlj
YWwtbHIuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBCdWcoR1RLKSBmYXN0L3dyaXRpbmctbW9kZS9q
YXBhbmVzZS1ydWJ5LXZlcnRpY2FsLXJsLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMmM3YjJlNjU1Nzc2ZGE0NmEw
Zjc0ZDc5M2ZjOTMxNzdiMzE0MzFkLi4zYjRkNzEyYTVkY2UyMWY1YWQ1ZTg2ZmI3ZGVjMzkyY2U3
YmNiNjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjI2LDcgKzIyNiw3IEBAIHdlYmtpdC5vcmcvYi81ODQ0MyBodHRwL3Rlc3RzL3NlY3VyaXR5L21p
eGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtCiB3ZWJraXQub3JnL2IvNTg0
NDMgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sIFsg
U2tpcCBdCiB3ZWJraXQub3JnL2IvNTg0NDMgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi81ODQ0MyBo
dHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvNTg0NDMgZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxi
YWNrLWRlbGl2ZXJ5Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi81ODQ0MyBmYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzU4NDQzIGZhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWVudHJpZXMu
aHRtbCBbIFNraXAgXQogCiAjIFJlcXVpcmVzIFdlYlAgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmMyMjQ5MmJkZWZhMzg0NDUzOTE4MGQ5
YTY5YmU0ZjU3YmJjNWVkOC4uNWFkOTk1NTAyOTBmYjllZDQ4MzI0YWRhMzQ4Nzk3NWQ3MGY5ZmIx
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMwNyw3
ICszMDcsNyBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVt
b3RlLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ZpbGVzeXN0ZW0tdXJs
LWluLWlmcmFtZS5odG1sCiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmls
ZS1ibG9iLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJs
b2ItZmFpbC5odG1sCi1mYXN0L211dGF0aW9uL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnku
aHRtbAorZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2
ZXJ5Lmh0bWwKIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYy
MjMKICMgVGhlIFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBp
ZnJhbWUgc2hpbXMuCkBAIC01ODcsNyArNTg3LDcgQEAgbWVkaWEvVzNDL3ZpZGVvL2NhblBsYXlU
eXBlL2NhblBsYXlUeXBlX3R3b19pbXBsaWVzX29uZV82Lmh0bWwKIAogIyBGYWlscyBiZWNhdXNl
IE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZpZWQgYXQgZW5kLW9mLXRhc2sKICMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MjkwCi1mYXN0L211dGF0aW9u
L2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKK2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5k
LW9mLXRhc2stZGVsaXZlcnkuaHRtbAogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjAxMAogIyBOZWVkcyBQYWdlQ2xpZW50czo6dmlicmF0aW9uQ2xpZW50KCkg
aW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA5YzI0ZjI3NjM0NzU4MjI3M2RkNWZhYWE0YTk1MWQ3ZDgyMWVmNGEwLi4yZDgyMzM1NTAw
MmM2MDI4MjRiYjhkZWQ2YjVjMzA1NGI5MjFhY2FlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEyNSw3ICsxMjUsNyBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5
L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkv
bWl4ZWRDb250ZW50L2ZpbGVzeXN0ZW0tdXJsLWluLWlmcmFtZS5odG1sCiBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCi1mYXN0L211dGF0aW9uL2Zp
bGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAorZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKIAogIyBFTkFCTEUoUVVPVEEpIGlz
IGRpc2FibGVkLgogc3RvcmFnZS9zdG9yYWdlaW5mby1taXNzaW5nLWFyZ3VtZW50cy5odG1sCkBA
IC00NTgsNyArNDU4LDcgQEAgd2Via2l0Lm9yZy9iLzg0ODkzIGh0dHAvdGVzdHMvdzNjL3dlYnBl
cmYvc3VibWlzc2lvbi9JbnRlbC91c2VyLXRpbWluZwogd2Via2l0Lm9yZy9iLzYxMTM4IGh0dHAv
dGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcKIAogIyBN
aXNzaW5nIGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bigpIGltcGxlbWVu
dGF0aW9uCi1mYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0ZW5lci5odG1sCitmYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5lci5odG1sCiAKICMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICMKICMgICAgICAgRHJhZyBhbmQgRHJvcCBTdXBwb3J0IGluIERSVC4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKQEAgLTIwNzksNyArMjA3OSw3
IEBAIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQu
aHRtbAogCiAjIEZhaWxzIGJlY2F1c2UgTXV0YXRpb25PYnNlcnZlcnMgYXJlIG5vdCBub3RpZmll
ZCBhdCBlbmQtb2YtdGFzawogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzgyOTAKLWZhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAorZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCiAKICMgRmFpbHMg
b24gbW9zdCBwbGF0Zm9ybXMsIHByb2JhYmx5IGZhaWxpbmcgZHVlIHRvIGFuIGVhcmxpZXIgdGVz
dC4KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3QtZWxlbWVudC5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGY1MTA4ZjFiODk4MjlmY2ZlMmE5
NjhiYjc2MGNlYmE2YjJhNDQ3YzcuLjBiNjg4YmMyY2M5MDhlMWNmODU4M2ExYmMzODdjN2FmMDYy
ZTA3MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MzI4LDcgKzEzMjgsNyBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Zp
bGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKLWZhc3QvbXV0YXRpb24vZmlsZXN5c3RlbS1j
YWxsYmFjay1kZWxpdmVyeS5odG1sCitmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0
ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NjIyMwogIyBUaGUgV2ViS2l0IHBsdWdpbiBpbXBsZW1lbnRhdGlvbiBk
b2VzIG5vdCBzdXBwb3J0IGlmcmFtZSBzaGltcy4KQEAgLTE2MzgsNyArMTYzOCw3IEBAIGZhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwKIAogIyBGYWlscyBiZWNh
dXNlIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZpZWQgYXQgZW5kLW9mLXRhc2sKICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MjkwCi1mYXN0L211dGF0
aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKK2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
ZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAogCiAjIFJlYmFzZWxpbmUgYWZ0ZXIgYnVnIDcxNzA1
LiBBbGwgZGlmZmVyZW5jZXMgYXJlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRhYmxlIGNhcHRpb25z
IG5vdwogIyBleHBhbmQgdG8gdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHRhYmxlLgpAQCAtMTkzOCw3
ICsxOTM4LDcgQEAgZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRt
bAogZmFzdC9qcy9zdGFjay10cmFjZS5odG1sCiBmYXN0L2xheWVycy92aWRlby1sYXllci5odG1s
CiBmYXN0L2xvYWRlci9qYXZhc2NyaXB0LXVybC1pZnJhbWUtcmVtb3ZlLW9uLW5hdmlnYXRlLmh0
bWwKLWZhc3QvbXV0YXRpb24vaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKK2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKIGZhc3QvcHJvZmlsZXIv
ZGVhZC10aW1lLmh0bWwKIGZhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGlt
ZW91dC5odG1sCiBmYXN0L3JlcGFpbnQvY2FudmFzLXB1dEltYWdlRGF0YS5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMjYyMmM4
MDE3YzhhODlhODYyZmViNGI0YWZkMTcxNjRiN2E0MGViLi5hZmE2ODFlODg2YTc1MDdmNTVlMGNm
YzMzMTg1NzQ2YmM5Y2RhYTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4NTcsNyArMTg1Nyw3IEBAIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxmLmh0bWwK
IGh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sCiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbAotZmFz
dC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKK2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCiAKICMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjIzCiAjIFRoZSBXZWJLaXQg
cGx1Z2luIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lIHNoaW1zLgpAQCAt
MjE0Myw3ICsyMTQzLDcgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcnJh
eXMuaHRtbAogCiAjIEZhaWxzIGJlY2F1c2UgTXV0YXRpb25PYnNlcnZlcnMgYXJlIG5vdCBub3Rp
ZmllZCBhdCBlbmQtb2YtdGFzawogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzgyOTAKLWZhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAorZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCiAKICMgUmVi
YXNlbGluZSBhZnRlciBidWcgNzE3MDUuIEFsbCBkaWZmZXJlbmNlcyBhcmUgZHVlIHRvIHRoZSBm
YWN0IHRoYXQgdGFibGUgY2FwdGlvbnMgbm93CiAjIGV4cGFuZCB0byB0aGUgZnVsbCB3aWR0aCBv
ZiB0aGUgdGFibGUuCkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBmYXN0L2ltYWdlcy9zdXBwb3J0LWJy
b2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCiBmYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwKIGZhc3Qv
bGF5ZXJzL3ZpZGVvLWxheWVyLmh0bWwKIGZhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWlmcmFt
ZS1yZW1vdmUtb24tbmF2aWdhdGUuaHRtbAotZmFzdC9tdXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlz
dGVuZXIuaHRtbAorZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9pbmxpbmUtZXZlbnQtbGlzdGVu
ZXIuaHRtbAogZmFzdC9wcm9maWxlci9kZWFkLXRpbWUuaHRtbAogZmFzdC9wcm9maWxlci9zdG9w
LXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwKIGZhc3QvcmVwYWludC9jYW52YXMtcHV0
SW1hZ2VEYXRhLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggYWM4Y2QyNGJhN2Q5NDk2MTUzYmZmMTc0ODdmYWUwZDAxODA2NDJkOC4uYjFkMDBjYTNh
OWQxZjI5ZjY0OTFmYWQwZmJiM2NhNjdjMzBlZmNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYxOSw3ICs2MTksNyBAQCBmYXN0L2Zvcm1zL3Jlc2V0
LWF1dG9maWxsZWQuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYSBtb3JlLWNvbXBs
ZXRlIGltcGxlbWVudGF0aW9uIG9mIGV2ZW50U2VuZGVyCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MjE5NAotZmFzdC9tdXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlz
dGVuZXIuaHRtbAorZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9pbmxpbmUtZXZlbnQtbGlzdGVu
ZXIuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgZXZlbnRTZW5kZXIuY29udGV4dENs
aWNrKCkKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2ODgxCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179330</attachid>
            <date>2012-12-13 14:02:15 -0800</date>
            <delta_ts>2012-12-13 15:20:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104948-20121213135935.patch</filename>
            <type>text/plain</type>
            <size>300159</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjYyNGQxNDcyMzFkNTg1NmFhZTNk
NzJlOTZlZWI4OTljYTFkZDVjMS4uYWEyNGRjZTNjMzg2NDJhOTViMGE3NmJhNjZhY2Q2ZWYyM2Y4
NTM2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEzICBBZGFtIEtsZWluICA8YWRh
bWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgTXV0YXRpb25PYnNlcnZlciB0ZXN0cyB0
byBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5NDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCisKKyAgICAgICAgVGhpcyBzZWVtcyBsaWtlIGEgbW9yZSBzZW5zaWJsZSBsb2NhdGlv
biwgYW5kIGluIGxpbmUgd2l0aCBvdGhlciBET00gZmVhdHVyZXMuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyLzogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDEyLTEyLTEzICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBU
aGlzIHRlc3Qgc3RhcnRlZCBmYWlsaW5nIGFmdGVyIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzEzNzU5MiB3aGljaCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZmZiYmIzM2VmYmNlZDQzNzFmYjE3MmFmMjZmZDRjMTM5ODQyMGVk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9hZGRlZC1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3Qg
TXV0YXRpb25FdmVudHMgaW50ZXJmZXJpbmcgd2l0aCBNdXRhdGlvbk9ic2VydmVyczogYWRkaW5n
IG5vZGVzICdvdXQgb2Ygb3JkZXInCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMworUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5s
ZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQ
QVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSBpcyAnU1BBTicKK1BBU1Mg
bXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLnJl
bW92ZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50
YWdOYW1lIGlzICdESVYnCitQQVNTIG11dGF0aW9uc1syXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAx
CitQQVNTIG11dGF0aW9uc1syXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRp
b25zWzJdLmFkZGVkTm9kZXNbMF0ubm9kZVZhbHVlIGlzICdoZWxsbyB3b3JsZCcKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQtb2Yt
b3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWI2MjFiM2I2ZTc1ZGVjZmQwYzFkOGFmZDllY2UyZGEz
NzY4YjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxkaXYgaWQ9InNhbmRib3giIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzcGFuPjwv
c3Bhbj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IE11dGF0aW9uRXZlbnRz
IGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IGFkZGluZyBub2RlcyAnb3V0IG9m
IG9yZGVyJyIpOwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOwordmFyIGluc2VydGVkID0gZmFsc2U7CitzYW5kYm94LmFkZEV2ZW50TGlzdGVuZXIoJ0RP
TU5vZGVSZW1vdmVkJywgZnVuY3Rpb24oKSB7CisgICAgaWYgKCFpbnNlcnRlZCkgeworICAgICAg
ICBzYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAg
ICAgICAgaW5zZXJ0ZWQgPSB0cnVlOworICAgIH0KK30pOwordmFyIG9ic2VydmVyID0gbmV3IFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt9KTsKK29ic2VydmVyLm9ic2VydmUoc2Fu
ZGJveCwge2NoaWxkTGlzdDogdHJ1ZX0pOworc2FuZGJveC50ZXh0Q29udGVudCA9ICdoZWxsbyB3
b3JsZCc7CisKK3ZhciBtdXRhdGlvbnMgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpOworc2hvdWxk
QmUoIm11dGF0aW9ucy5sZW5ndGgiLCAiMyIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5hZGRl
ZE5vZGVzLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgibXV0YXRpb25zWzBdLnJlbW92ZWROb2Rl
cy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0u
dGFnTmFtZSIsICInU1BBTiciKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5s
ZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
IiwgIjAiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIiwg
IidESVYnIik7CitzaG91bGRCZSgibXV0YXRpb25zWzJdLmFkZGVkTm9kZXMubGVuZ3RoIiwgIjEi
KTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMl0ucmVtb3ZlZE5vZGVzLmxlbmd0aCIsICIwIik7Citz
aG91bGRCZSgibXV0YXRpb25zWzJdLmFkZGVkTm9kZXNbMF0ubm9kZVZhbHVlIiwgIidoZWxsbyB3
b3JsZCciKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9jYWxsYmFjay1hcmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jYWxsYmFjay1hcmd1bWVudHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTMyYzkyODQ5NjU3NjYxYWIwZTlhZTU5MzU0YTY1ODdhZGVl
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL2NhbGxiYWNrLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVmVy
aWZpZXMgdGhhdCBNdXRhdGlvbk9ic2VydmVyIGlzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgYXMg
ZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRoaXNBcmd1
bWVudCBpcyBtdXRhdGlvbk9ic2VydmVyCitQQVNTIGFyZ3VtZW50MiBpcyBtdXRhdGlvbk9ic2Vy
dmVyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jYWxsYmFj
ay1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
Y2FsbGJhY2stYXJndW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIwZmVmZWM4NjFkZWI0YzMxYzQ4
NWJkMzhjZmU1YTAyMzU5ZDQ5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIvY2FsbGJhY2stYXJndW1lbnRzLmh0bWwKQEAgLTAsMCArMSwy
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKK2Rlc2NyaXB0aW9uKCdWZXJpZmllcyB0aGF0IE11dGF0aW9uT2JzZXJ2
ZXIgaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBhcyBleHBlY3RlZC4nKTsKKworZnVuY3Rpb24g
bXV0YXRpb25DYWxsYmFjayhtdXRhdGlvbnMsIG9ic2VydmVyKSB7CisgICAgd2luZG93LnRoaXNB
cmd1bWVudCA9IHRoaXM7CisgICAgd2luZG93LmFyZ3VtZW50MiA9IG9ic2VydmVyOworICAgIHNo
b3VsZEJlKCd0aGlzQXJndW1lbnQnLCAnbXV0YXRpb25PYnNlcnZlcicpOworICAgIHNob3VsZEJl
KCdhcmd1bWVudDInLCAnbXV0YXRpb25PYnNlcnZlcicpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQordmFyIG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihtdXRh
dGlvbkNhbGxiYWNrKTsKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
K211dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CitkaXYu
c2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY2xlYXItdHJhbnNp
ZW50LXdpdGhvdXQtZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxpdmVyeS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGY0ZDIxNTI3MGExZTk3MGEyM2FlNjFhMGM0OTIzZjkyYzA0OThi
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvY2xlYXItdHJhbnNpZW50LXdpdGhvdXQtZGVsaXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1RyYW5zaWVudCByZWdpc3RyYXRpb25zIHNob3VsZCBiZSBjbGVhcmVkIGV2ZW4g
d2l0aG91dCBkZWxpdmVyeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bXV0YXRpb25zRGVsaXZlcmVkIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9jbGVhci10cmFuc2llbnQtd2l0aG91dC1kZWxpdmVyeS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jbGVhci10cmFuc2llbnQtd2l0
aG91dC1kZWxpdmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4Y2I2N2NkODVlYjQzOWViM2E3MmFmYTI0
ZTM0MGMyYzI4YzQ4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5Lmh0bWwKQEAg
LTAsMCArMSwyNiBAQAorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ZGVzY3JpcHRpb24oJ1RyYW5zaWVudCByZWdpc3RyYXRpb25zIHNob3VsZCBiZSBjbGVhcmVkIGV2
ZW4gd2l0aG91dCBkZWxpdmVyeS4nKTsKKwordmFyIG11dGF0aW9uc0RlbGl2ZXJlZCA9IGZhbHNl
OworZnVuY3Rpb24gY2FsbGJhY2sobXV0YXRpb25zKSB7CisgICAgbXV0YXRpb25zRGVsaXZlcmVk
ID0gdHJ1ZTsKK30KK3ZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGNh
bGxiYWNrKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwordmFy
IHNwYW4gPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsK
K29ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0p
OworZGl2LnJlbW92ZUNoaWxkKHNwYW4pOworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAv
LyBCeSB0aGUgdGltZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIHRyYW5zaWVudCByZWdpc3RyYXRp
b24gc2hvdWxkIGJlIGNsZWFyZWQsCisgICAgLy8gc28gd2UgZXhwZWN0IG5vdCB0byBiZSBub3Rp
ZmllZCBvZiB0aGlzIGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICBzcGFuLnNldEF0dHJpYnV0ZSgn
YmFyJywgJ2JheicpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3Vs
ZEJlRmFsc2UoJ211dGF0aW9uc0RlbGl2ZXJlZCcpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9LCAwKTsKK30sIDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2NyZWF0ZS1kdXJpbmctZGVsaXZlcnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcmVhdGUtZHVy
aW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzg2ZGZhY2Q1ZTE4YWYyZDcx
MmM2OThhOTM4ODMzYTk3NTIxYWNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9jcmVhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgY3JlYXRlZCBk
dXJpbmcgZGVsaXZlcnkgbXVzdCB3YWl0IGZvciB0aGUgbmV4dCBsb29wLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvcmRlci5sZW5ndGggaXMgNAorUEFTUyBvcmRlclsw
XSBpcyAxCitQQVNTIG9yZGVyWzFdIGlzIDIKK1BBU1Mgb3JkZXJbMl0gaXMgMQorUEFTUyBvcmRl
clszXSBpcyAzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9j
cmVhdGUtZHVyaW5nLWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL2NyZWF0ZS1kdXJpbmctZGVsaXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTU3Zjk0
MzlhYmI3OWJkNTJjMWI1NjRmZjEyZTg1ZTk4Y2Y2YmJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcmVhdGUtZHVyaW5nLWRlbGl2ZXJ5
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRp
b25PYnNlcnZlcnMgY3JlYXRlZCBkdXJpbmcgZGVsaXZlcnkgbXVzdCB3YWl0IGZvciB0aGUgbmV4
dCBsb29wLicpOworZnVuY3Rpb24gZmluaXNoKCkgeworICAgIHNob3VsZEJlKCdvcmRlci5sZW5n
dGgnLCAnNCcpOworICAgIHNob3VsZEJlKCdvcmRlclswXScsICcxJyk7CisgICAgc2hvdWxkQmUo
J29yZGVyWzFdJywgJzInKTsKKyAgICBzaG91bGRCZSgnb3JkZXJbMl0nLCAnMScpOworICAgIHNo
b3VsZEJlKCdvcmRlclszXScsICczJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBv
cmRlciA9IFtdOwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCit2
YXIgb2JzZXJ2ZXIzOwordmFyIG9ic2VydmVyMSA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgIG9yZGVyLnB1c2goMSk7CisgICAgaWYgKCFvYnNl
cnZlcjMpIHsKKyAgICAgICAgb2JzZXJ2ZXIzID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICBvcmRlci5wdXNoKDMpOworICAgICAg
ICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIzLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0p
OworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7CisgICAgfQorfSk7Cit2
YXIgb2JzZXJ2ZXIyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRp
b25zKSB7CisgICAgb3JkZXIucHVzaCgyKTsKK30pOworCitvYnNlcnZlcjEub2JzZXJ2ZShkaXYs
IHthdHRyaWJ1dGVzOiB0cnVlfSk7CitvYnNlcnZlcjIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVz
OiB0cnVlfSk7CitkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CitzZXRUaW1lb3V0KGZp
bmlzaCwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTFlZDQzOTA0NzE4ODVkYWQ1ZDg2NjE0YzY1MmMwZWQ0ZjE2YjcxNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvY3Jv
c3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgdGhhdCBNdXRh
dGlvbk9ic2VydmVycyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3MgZG9jdW1lbnRzCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY3Jvc3MtZG9j
dW1lbnQgb2JzZXJ2YXRpb24uCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRh
dGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBp
cyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgorUEFTUyBtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKworVGVzdGluZyB0aGF0IHN1YnRy
ZWUgb2JzZXJ2YXRpb24gd29ya3MgYWZ0ZXIgbm9kZSBpcyBtb3ZlZC4KK1BBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFT
UyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMg
bnVsbAorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9jcm9z
cy1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9j
cm9zcy1kb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZDRlODNmMGUzM2NmODQ3ODU0NGM1OGQy
MTNhYzY2ZjE5MDJhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2Nyb3NzLWRvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgbXV0YXRpb25zOwordmFyIGRp
diwgc3ViRGl2OworCitmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAgdmFyIG9ic2VydmVyOwor
CisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFz
cGVjdHMgb2YgY3Jvc3MtZG9jdW1lbnQgb2JzZXJ2YXRpb24uJyk7CisKKyAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwor
ICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6
IHRydWV9KTsKKyAgICAgICAgdmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNy
ZWF0ZURvY3VtZW50KCcnLCAnJywgbnVsbCk7CisgICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChk
aXYpOworICAgICAgICBkaXYuaWQgPSAnZm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gs
IDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dGFyZ2V0JywgJ2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWUnLCAnImlkIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWVzcGFjZScsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAg
ICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0
YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdWJ0cmVlKCkgeworICAgIHZhciBvYnNlcnZlcjsK
KworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHN1
YnRyZWUgb2JzZXJ2YXRpb24gd29ya3MgYWZ0ZXIgbm9kZSBpcyBtb3ZlZC4nKTsKKworICAgICAg
ICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlv
bnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUo
ZGl2LCB7YXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOworICAgICAgICB2YXIgbmV3
RG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycsICcnLCBudWxs
KTsKKyAgICAgICAgbmV3RG9jLmFwcGVuZENoaWxkKGRpdik7CisgICAgICAgIHN1YkRpdi5pZCA9
ICdmb28nOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcx
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwn
KTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKwordmFyIHRl
c3RzID0gW3Rlc3RCYXNpYywgdGVzdFN1YnRyZWVdOwordmFyIHRlc3RJbmRleCA9IDA7CisKK2Z1
bmN0aW9uIHJ1bk5leHRUZXN0KCkgeworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgp
CisgICAgICAgIHRlc3RzW3Rlc3RJbmRleCsrXSgpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMg
bW92ZSBjb3JyZWN0bHkgYWNyb3NzIGRvY3VtZW50cycpOworCitpZiAoIXdpbmRvdy5XZWJLaXRN
dXRhdGlvbk9ic2VydmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFC
TEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1bk5leHRUZXN0KCk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9kYXRhYmFzZS1jYWxsYmFjay1kZWxpdmVyeS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RhdGFiYXNlLWNh
bGxiYWNrLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjRlZjkwNGIwYmI3Mjgz
MDkxNDk1MGRlZTc4NzU5MjUwMTQyN2FkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kYXRhYmFzZS1jYWxsYmFjay1kZWxpdmVyeS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdGluZyBtdXRhdGlvbnMgYXJlIGRlbGl2ZXJl
ZCBmb2xsb3dpbmcgRGF0YWJhc2UgdHJhbnNhY3Rpb24gY2FsbGJhY2tzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0
YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lIGlzICJmb28iCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL2RhdGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RhdGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGU2ZjlkZWM2OWFlNTgyMDMwZmYxMmZlZWJiYjIyNDYwYzlhZGNhNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJh
c2UtY2FsbGJhY2stZGVsaXZlcnkuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRhdGlv
bnM7CisKK2Z1bmN0aW9uIHRlc3REYXRhYmFzZSgpIHsKKyAgICB2YXIgZGl2OworICAgIHZhciBk
YjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVy
RGF0YTogdHJ1ZSB9KTsKKworICAgICAgICBkYiA9IG9wZW5EYXRhYmFzZSgnRGF0YWJhc2VNdXRh
dGlvbkRlbGl2ZXJ5JywgJzEuMCcsICcnLCAxKTsKKyAgICAgICAgZGIudHJhbnNhY3Rpb24obXV0
YXRlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtdXRhdGUoKSB7CisgICAgICAgIGRpdi5zZXRB
dHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZScsICciZm9vIicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAg
ICAgIGRlYnVnKCcnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgc3Rh
cnQoKTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3RpbmcgbXV0YXRpb25zIGFyZSBkZWxpdmVyZWQg
Zm9sbG93aW5nIERhdGFiYXNlIHRyYW5zYWN0aW9uIGNhbGxiYWNrcy4nKTsKKworaWYgKCF3aW5k
b3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcikgeworICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfSBlbHNlCisgICAgdGVzdERhdGFiYXNlKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kZWxpdmVy
eS1vcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFlNzE0ZWI5NDc1Njc3NmYxZWVkNWRh
M2Y1YjFjNGE5ZTExNmNmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjAgQEAKK1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBhcmUgZGVsaXZlcmVkIHRvIGluIG9y
ZGVyIG9mIGNyZWF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBv
cmRlci5sZW5ndGggaXMgMTAKK1BBU1Mgb3JkZXJbMF0gaXMgMAorUEFTUyBvcmRlclsxXSBpcyAx
CitQQVNTIG9yZGVyWzJdIGlzIDIKK1BBU1Mgb3JkZXJbM10gaXMgMworUEFTUyBvcmRlcls0XSBp
cyA0CitQQVNTIG9yZGVyWzVdIGlzIDUKK1BBU1Mgb3JkZXJbNl0gaXMgNgorUEFTUyBvcmRlcls3
XSBpcyA3CitQQVNTIG9yZGVyWzhdIGlzIDgKK1BBU1Mgb3JkZXJbOV0gaXMgOQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGVsaXZlcnktb3JkZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNDllZDliZjAzOTIzMjhlNzE2YjE5NTA5NDg0NDc0M2EwYzcxZjZhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9k
ZWxpdmVyeS1vcmRlci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitkZXNjcmlwdGlvbignVGVz
dCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBkZWxpdmVyZWQgdG8gaW4gb3JkZXIgb2YgY3Jl
YXRpb24uJyk7CitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgc2hvdWxkQmUoJ29yZGVyLmxlbmd0
aCcsICcxMCcpOworICAgIHNob3VsZEJlKCdvcmRlclswXScsICcwJyk7CisgICAgc2hvdWxkQmUo
J29yZGVyWzFdJywgJzEnKTsKKyAgICBzaG91bGRCZSgnb3JkZXJbMl0nLCAnMicpOworICAgIHNo
b3VsZEJlKCdvcmRlclszXScsICczJyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzRdJywgJzQnKTsK
KyAgICBzaG91bGRCZSgnb3JkZXJbNV0nLCAnNScpOworICAgIHNob3VsZEJlKCdvcmRlcls2XScs
ICc2Jyk7CisgICAgc2hvdWxkQmUoJ29yZGVyWzddJywgJzcnKTsKKyAgICBzaG91bGRCZSgnb3Jk
ZXJbOF0nLCAnOCcpOworICAgIHNob3VsZEJlKCdvcmRlcls5XScsICc5Jyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3ZhciBvcmRlciA9IFtdOwordmFyIG9ic2VydmVycyA9IFtdOworCitm
dW5jdGlvbiBzZXRVcE9yZGVyaW5nKG51bSkgeworICAgIG9ic2VydmVycy5wdXNoKG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICBvcmRlci5w
dXNoKG51bSk7CisgICAgfSkpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsK
KyAgICBzZXRVcE9yZGVyaW5nKGkpOworfQorCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CitvYnNlcnZlcnNbM10ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVl
fSk7CitvYnNlcnZlcnNbMl0ub2JzZXJ2ZShkaXYsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0
cmVlOiB0cnVlfSk7CitvYnNlcnZlcnNbMV0ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVl
fSk7CitvYnNlcnZlcnNbN10ub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKK29ic2Vy
dmVyc1s0XS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK29ic2VydmVyc1s5XS5v
YnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKK29ic2VydmVyc1swXS5vYnNlcnZlKGRp
diwge2NoaWxkTGlzdDogdHJ1ZX0pOworb2JzZXJ2ZXJzWzVdLm9ic2VydmUoZGl2LCB7YXR0cmli
dXRlczogdHJ1ZX0pOworb2JzZXJ2ZXJzWzZdLm9ic2VydmUoZGl2LCB7Y2hhcmFjdGVyRGF0YTog
dHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOworb2JzZXJ2ZXJzWzhdLm9ic2VydmUoZGl2LCB7YXR0cmli
dXRlczogdHJ1ZX0pOworZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworZGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdoZWxsbycpKTsKK2Rpdi5maXJzdENoaWxk
LnRleHRDb250ZW50ID0gJ2dvb2RieWUnOworc2V0VGltZW91dChmaW5pc2gsIDApOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYjVkOTdlNzUzMmQ2OGY2NjZlYmFlOWZhNWMwYTNjYWQzZmIxYjEy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0IHRoYXQgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0IGNhbmNlbHMgcGVu
ZGluZyBkZWxpdmVyeQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRGlzY29ubmVj
dGluZyBzaG91bGQgY2FuY2VsIGFueSBwZW5kaW5nIGRlbGl2ZXJ5Li4uCitQQVNTIG11dGF0aW9u
cyBpcyBudWxsCisuLi5hbmQgcmUtb2JzZXJ2aW5nIHNob3VsZCBub3Qgc2VlIGFueSBvZiB0aGUg
cHJldmlvdXNseS1nZW5lcmF0ZWQgcmVjb3Jkcy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAx
CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Rpc2Nvbm5lY3Qt
Y2FuY2VsLXBlbmRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2RiZmRlNGZiOWViZmEzY2JkZGIzOGNl
ZWIyNzliOWUzY2RjYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLmh0bWwKQEAgLTAsMCAr
MSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCB0
aGF0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCBjYW5jZWxzIHBlbmRpbmcgZGVs
aXZlcnknKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIG11dGF0aW9uczsK
K3ZhciBvYnNlcnZlcjsKKworZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICBt
dXRhdGlvbnMgPSBtOworICAgIH0pOworCisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0
cmlidXRlczogdHJ1ZSB9KTsKKyAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Cisg
ICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgIHNldFRpbWVvdXQobmV4dCwgMCk7Cit9CisK
K2Z1bmN0aW9uIG5leHQoKSB7CisgICAgZGVidWcoJ0Rpc2Nvbm5lY3Rpbmcgc2hvdWxkIGNhbmNl
bCBhbnkgcGVuZGluZyBkZWxpdmVyeS4uLicpOworICAgIHNob3VsZEJlTnVsbCgnbXV0YXRpb25z
Jyk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKKyAg
ICBkaXYuc2V0QXR0cmlidXRlKCdiYXInLCAnYmF6Jyk7CisgICAgc2V0VGltZW91dChmaW5pc2gs
IDApOworfQorCitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgZGVidWcoJy4uLmFuZCByZS1vYnNl
cnZpbmcgc2hvdWxkIG5vdCBzZWUgYW55IG9mIHRoZSBwcmV2aW91c2x5LWdlbmVyYXRlZCByZWNv
cmRzLicpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImJhciInKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworaWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcikKKyAgICB0
ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykn
KTsKK2Vsc2UKKyAgICBzdGFydCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
ZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmYz
ZWUzZjQzYWE5OWM2MmJhMzhhZWJlMTM3NDc0MmI3MmNlMTM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kb2N1bWVudC1mcmFnbWVudC1p
bnNlcnRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK0luc2VydGluZyBEb2N1bWVu
dEZyYWdtZW50cyBzaG91bGQgcmVtb3ZlIGFsbCBjaGlsZHJlbiBvZiB0aGUgZnJhZ21lbnQgYmVm
b3JlIGluc2VydGluZyB0aGUgY2hpbGRyZW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0aW5nIGFwcGVuZENoaWxkCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxl
bmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKKwor
VGVzdGluZyBpbnNlcnRCZWZvcmUKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11
dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIG11dGF0aW9uc1swXS5yZW1v
dmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0
aW5nIHJlcGxhY2VDaGlsZAorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRp
b25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMg
MgorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2RvY3VtZW50LWZyYWdtZW50LWlu
c2VydGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kb2N1
bWVudC1mcmFnbWVudC1pbnNlcnRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2VkOWY3NzI5YTU0YmU2
YjUyZGI3ZmQ1OTE0ZTg1Y2I2OWQzZGI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24uaHRt
bApAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdJbnNlcnRpbmcgRG9jdW1lbnRGcmFnbWVudHMgc2hvdWxkIHJlbW92ZSBhbGwgY2hpbGRy
ZW4gb2YgdGhlIGZyYWdtZW50IGJlZm9yZSBpbnNlcnRpbmcgdGhlIGNoaWxkcmVuLicpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGNyZWF0ZU9ic2VydmVkRnJh
Z21lbnQoKSB7CisgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOworICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2InKSk7CisgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
aScpKTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGZyYWdtZW50LCB7Y2hpbGRMaXN0OiB0cnVlfSk7
CisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCitmdW5jdGlvbiBjcmVhdGVPYnNlcnZlZERpdigp
IHsKKyAgICByZXR1cm4gZGl2OworfQorCitmdW5jdGlvbiBjYWxsYmFjayhtdXRhdGlvbnMpIHsK
KyAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworfQordmFyIG9ic2VydmVyID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spOworCitmdW5jdGlvbiB0ZXN0QXBwZW5k
Q2hpbGQoKSB7CisgICAgZGVidWcoJ1Rlc3RpbmcgYXBwZW5kQ2hpbGQnKTsKKyAgICB2YXIgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShk
aXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoY3JlYXRlT2JzZXJ2
ZWRGcmFnbWVudCgpKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgZGVidWcoJycp
OworICAgICAgICB0ZXN0SW5zZXJ0QmVmb3JlKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RJbnNlcnRCZWZvcmUoKSB7CisgICAgZGVidWcoJ1Rlc3RpbmcgaW5zZXJ0QmVmb3JlJyk7
CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgIG9ic2VydmVy
Lm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CisgICAgZGl2Lmluc2VydEJlZm9yZShj
cmVhdGVPYnNlcnZlZEZyYWdtZW50KCksIGRpdi5maXJzdENoaWxkKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAn
MicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywg
JzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
JywgJzAnKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICB0ZXN0UmVwbGFjZUNoaWxkKCk7
CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZXBsYWNlQ2hpbGQoKSB7CisgICAgZGVi
dWcoJ1Rlc3RpbmcgcmVwbGFjZUNoaWxkJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVl
fSk7CisgICAgZGl2LnJlcGxhY2VDaGlsZChjcmVhdGVPYnNlcnZlZEZyYWdtZW50KCksIGRpdi5m
aXJzdENoaWxkKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKwordGVzdEFwcGVuZENoaWxk
KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTNjZGYxZTkzOTMyY2ExNzQyNWEzNGVjMWE2MTVhODNkZjM4YmFk
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1NF
RApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQt
b2YtdGFzay1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MTVjNGYwYTJhMzM4
NjFjNTk3MjEyMDQyM2E2ZjA0NTBkODk2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKQEAg
LTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8b2wgY29udGVudGVkaXRhYmxlPgorICAg
IDxsaT5QcmVzcyBlbnRlcgorPC9vbD4KKzxwPlRoZW4gY2xpY2sgaGVyZTwvcD4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAg
ICB2YXIgbGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ29sJyk7CisgICAgdmFyIHAgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwJyk7CisgICAgdmFyIG9ic2VydmVyUnVucyA9IDA7Cisg
ICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7
ICsrb2JzZXJ2ZXJSdW5zOyB9KTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGxpc3QsIHtjaGlsZExp
c3Q6IHRydWV9KTsKKyAgICBsaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBvYnNlcnZlclJ1bnMgPT0gMSA/
ICdQQVNTRUQnIDogJ0ZBSUxFRCc7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0pOworICAgIGxpc3QuZm9j
dXMoKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVy
LnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bignXG4nKTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8ocC5vZmZzZXRMZWZ0ICsgcC5vZmZzZXRXaWR0aCAvIDIsIHAub2Zmc2V0VG9w
ICsgcC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3lu
Y2hyb25vdXNDbGljaygpOworICAgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmls
ZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI0OTc2
MWFiZjc4MDUxZTIyODYyOWRhOTY4YjE2NTg3ZWQwZDY5MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1k
ZWxpdmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdCB0aGF0IE11dGF0aW9u
IFJlY29yZHMgYXJlIGRlbGl2ZXJlZCBmb2xsb3dpbmcgRmlsZVN5c3RlbSBjYWxsYmFja3MuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMg
MQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25z
WzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQ
QVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZSBpcyAiYmF6IgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZl
cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MWYzZjlhZTU3Y2JmY2MxN2Y1NmI3YWVkMTU0MjNkODU2MWM0
ZWVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKQEAgLTAsMCArMSw2NSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Cit2YXIgbXV0YXRpb25zOworCitmdW5jdGlvbiB0ZXN0RmlsZXN5c3RlbSgpIHsKKyAgICB2YXIg
ZGl2OworICAgIHZhciBmaWxlRW50cnk7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rp
b24gc3RhcnQoKSB7CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9
IG07CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJp
YnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUgfSk7CisKKyAgICAgICAgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCA1KjEwMjQqMTAyNCwgZnVuY3Rpb24oZnMpIHsKKyAg
ICAgICAgICAgIGZzLnJvb3QuZ2V0RmlsZSgnZm9vLnR4dCcsIHtjcmVhdGU6IHRydWUsIGV4Y2x1
c2U6IHRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgICAgIGZpbGVFbnRyeSA9
IGVudHJ5OworICAgICAgICAgICAgICAgIGZpbGVFbnRyeS5nZXRQYXJlbnQobXV0YXRlQWZ0ZXJH
ZXRQYXJlbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG11dGF0ZUFmdGVyR2V0UGFyZW50KCkgeworICAgICAgICBkaXYuc2V0QXR0cmlidXRl
KCdmb28nLCAnYmFyJyk7CisgICAgICAgIGZpbGVFbnRyeS5yZW1vdmUobXV0YXRlQWZ0ZXJSZW1v
dmUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG11dGF0ZUFmdGVyUmVtb3ZlKCkgeworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisKKyAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmF6JywgJ2JhdCcpOworICAgICAg
ICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkg
eworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJiYXoiJyk7CisKKyAgICAgICAg
b2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Rlc2NyaXB0aW9uKCdUZXN0
IHRoYXQgTXV0YXRpb24gUmVjb3JkcyBhcmUgZGVsaXZlcmVkIGZvbGxvd2luZyBGaWxlU3lzdGVt
IGNhbGxiYWNrcy4nKTsKKworaWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlciB8fCAh
d2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7CisgICAgdGVzdEZhaWxlZCgnVGhpcyB0
ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpIGFuZCBFTkFCTEUoRklMRV9T
WVNURU0pJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9IGVsc2UKKyAgICB0ZXN0RmlsZXN5c3Rl
bSgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5lci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNjZGYxZTkzOTMyY2ExNzQyNWEzNGVjMWE2MTVhODNkZjM4
YmFkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQ
QVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
aW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYmNjMmM0
OWM1M2YyZGIzM2I3YTAwMjViMTdlOGM0OTMxYmI1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5lci5o
dG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPG9sIGNvbnRlbnRlZGl0YWJs
ZSBvbmlucHV0PSJkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG9ic2VydmVyUmFuID8gJ0ZBSUxF
RCcgOiAnUEFTU0VEJzsgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKSI+CisgICAgPGxpPlByZXNzIGVudGVyCis8L29sPgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHZhciBsaXN0ID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignb2wnKTsKKyAgICB2YXIgb2JzZXJ2ZXJSYW4gPSBmYWxz
ZTsKKyAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bigpIHsgb2JzZXJ2ZXJSYW4gPSB0cnVlOyB9KTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGxpc3Qs
IHtjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWV9KTsKKyAgICBsaXN0LmZvY3Vz
KCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIuc2No
ZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKCdcbicpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0ZS1kdXJpbmctZGVsaXZl
cnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9t
dXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTZjMGQ3YTA5
ZWI0NDI3MTEyM2Q0ODk3OTViODVhODc3NjVhYTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IHRoYXQgbXV0YXRpb25zIGR1cmluZyBk
ZWxpdmVyeSBkbyBub3QgaW50ZXJydXB0IGRlbGl2ZXJ5IG9yZGVyLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBvcmRlci5sZW5ndGggaXMgMworUEFTUyBvcmRlclswXSBp
cyAxCitQQVNTIG9yZGVyWzFdIGlzIDMKK1BBU1Mgb3JkZXJbMl0gaXMgMgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRlLWR1cmluZy1kZWxpdmVyeS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGUtZHVyaW5n
LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkzODUwNGI4ZGYxMmM4Njk3MDllMDNjYzE2MmVl
OGQxNDI1YTQxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvbXV0YXRlLWR1cmluZy1kZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IG11dGF0aW9ucyBkdXJpbmcgZGVsaXZlcnkgZG8g
bm90IGludGVycnVwdCBkZWxpdmVyeSBvcmRlci4nKTsKK2Z1bmN0aW9uIGZpbmlzaCgpIHsKKyAg
ICBzaG91bGRCZSgnb3JkZXIubGVuZ3RoJywgJzMnKTsKKyAgICBzaG91bGRCZSgnb3JkZXJbMF0n
LCAnMScpOworICAgIHNob3VsZEJlKCdvcmRlclsxXScsICczJyk7CisgICAgc2hvdWxkQmUoJ29y
ZGVyWzJdJywgJzInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIG9yZGVyID0gW107
Cit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKK3ZhciBvYnNlcnZl
cjEgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAg
ICBvcmRlci5wdXNoKDEpOworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworfSk7Cit2YXIgb2JzZXJ2ZXIyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgb3JkZXIucHVzaCgyKTsKK30pOwordmFy
IG9ic2VydmVyMyA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9u
cykgeworICAgIG9yZGVyLnB1c2goMyk7Cit9KTsKKworb2JzZXJ2ZXIxLm9ic2VydmUoZGl2LCB7
YXR0cmlidXRlczogdHJ1ZX0pOworb2JzZXJ2ZXIyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0
cnVlfSk7CitvYnNlcnZlcjMub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CitkaXYu
c2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CitzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvbXV0YXRpb24tY2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1jYWxsYmFjay1ub24t
ZWxlbWVudC1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJlOGVhM2YxY2EwNDJmY2Y4
NTVkMzNiZDkzOGMyZTJhOTc2YjQ3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tY2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jh
c2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MuIFdlYktpdCBkaWRuJ3QgY3Jhc2gK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRp
b24tY2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tY2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jhc2guaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYWYzNjVhNmE2ODliMjUxMGI2NzIwNjYzMzBkMzYwNjYwNTFhMGQzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9t
dXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMTcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIG11dGF0
aW9uQ2FsbGJhY2sobXV0YXRpb25zLCBvYnNlcnZlcikgeworICAgIG11dGF0aW9uc1swXS5hZGRl
ZE5vZGVzWy0xXTsKK30KKwordmFyIG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihtdXRhdGlvbkNhbGxiYWNrKTsKK211dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShk
b2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlfSk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoIikp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRp
b24tb2JzZXJ2ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZWIzZTg2
ZTcwZTI0ODVhNzcyMDE4MDc3NjQyODU5MTc5Mjc0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoZSBjb25zdHJ1Y3Rv
ciBvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIGlzIG5vbi1udWxsLgorUEFT
UyB0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZSBpcyAiZnVu
Y3Rpb24iCitQQVNTIHR5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5kaXNj
b25uZWN0IGlzICJmdW5jdGlvbiIKK1BBU1MgdHlwZW9mIG9ic2VydmVyLm9ic2VydmUgaXMgImZ1
bmN0aW9uIgorUEFTUyB0eXBlb2Ygb2JzZXJ2ZXIuZGlzY29ubmVjdCBpcyAiZnVuY3Rpb24iCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNl
cnZlci1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzOGZl
ODViMzU3YTViNmFjZWQyYWFkZmM0OWMwYzVlZjk0NDVhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNv
bnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHNob3VsZEJlTm9uTnVs
bCgnd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXInKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3R5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlJywg
J2Z1bmN0aW9uJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2YgV2ViS2l0TXV0
YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOworICAgIHdp
bmRvdy5vYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0
aW9ucykgeyB9KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBvYnNlcnZlci5v
YnNlcnZlJywgJ2Z1bmN0aW9uJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2Yg
b2JzZXJ2ZXIuZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOworfQorCitkZXNjcmlwdGlvbignVGVz
dCB0aGUgY29uc3RydWN0b3Igb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlcicpOworCitpZiAoIXdp
bmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1blRlc3Qo
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRp
b24tcmVjb3JkLW51bGxpdHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMDU2NjRlMWUzNWI5
ODdmM2Y2NWRhYTNlMGJiNjg3N2E5MzhkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitOb24tcmVsZXZhbnQgcHJvcGVydGllcyBvbiBtdXRh
dGlvbiByZWNvcmRzIHNob3VsZCBiZSBudWxsLCBleGNlcHQgZm9yIE5vZGVMaXN0cywgd2hpY2gg
c2hvdWxkIGJlIGVtcHR5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitjaGFyYWN0
ZXJEYXRhIHJlY29yZDoKK1BBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWUgaXMgbnVsbAorUEFTUyBy
ZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgcmVjb3JkLm9sZFZhbHVlIGlz
IG51bGwKK1BBU1MgcmVjb3JkLnByZXZpb3VzU2libGluZyBpcyBudWxsCitQQVNTIHJlY29yZC5u
ZXh0U2libGluZyBpcyBudWxsCitQQVNTIHJlY29yZC5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCitQ
QVNTIHJlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKKworY2hpbGRMaXN0IHJlY29yZDoK
K1BBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWUgaXMgbnVsbAorUEFTUyByZWNvcmQuYXR0cmlidXRl
TmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgcmVjb3JkLm9sZFZhbHVlIGlzIG51bGwKKworYXR0cmli
dXRlcyByZWNvcmQ6CitQQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFT
UyByZWNvcmQub2xkVmFsdWUgaXMgbnVsbAorUEFTUyByZWNvcmQucHJldmlvdXNTaWJsaW5nIGlz
IG51bGwKK1BBU1MgcmVjb3JkLm5leHRTaWJsaW5nIGlzIG51bGwKK1BBU1MgcmVjb3JkLmFkZGVk
Tm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgcmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tcmVj
b3JkLW51bGxpdHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
bXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDZhYWRmZWQyYzdjOTZj
YmNmODUxZTRjYjQ3ZTVmNWRhYTNiMTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sCkBA
IC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J05vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51
bGwsIGV4Y2VwdCBmb3IgTm9kZUxpc3RzLCB3aGljaCBzaG91bGQgYmUgZW1wdHknKTsKK3ZhciBv
YnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30pOworCit2
YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdzb21ldGhpbmcnKTsKK29ic2VydmVy
Lm9ic2VydmUodGV4dCwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsKK3RleHQuZGF0YSA9ICdzb21l
dGhpbmcgZWxzZSc7Cit2YXIgcmVjb3JkID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKVswXTsKK2Rl
YnVnKCdjaGFyYWN0ZXJEYXRhIHJlY29yZDonKTsKK3Nob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJp
YnV0ZU5hbWUnKTsKK3Nob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFjZScpOwor
c2hvdWxkQmVOdWxsKCdyZWNvcmQub2xkVmFsdWUnKTsKK3Nob3VsZEJlTnVsbCgncmVjb3JkLnBy
ZXZpb3VzU2libGluZycpOworc2hvdWxkQmVOdWxsKCdyZWNvcmQubmV4dFNpYmxpbmcnKTsKK3No
b3VsZEJlKCdyZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworc2hvdWxkQmUoJ3JlY29y
ZC5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9
KTsKK2Rpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworcmVj
b3JkID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKVswXTsKK2RlYnVnKCdcbmNoaWxkTGlzdCByZWNv
cmQ6Jyk7CitzaG91bGRCZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lJyk7CitzaG91bGRCZU51
bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UnKTsKK3Nob3VsZEJlTnVsbCgncmVjb3JkLm9s
ZFZhbHVlJyk7CisKK29ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwor
ZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS1mb28nLCAnYmFyJyk7CityZWNvcmQgPSBvYnNlcnZlci50
YWtlUmVjb3JkcygpWzBdOworZGVidWcoJ1xuYXR0cmlidXRlcyByZWNvcmQ6Jyk7CitzaG91bGRC
ZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UnKTsKK3Nob3VsZEJlTnVsbCgncmVjb3Jk
Lm9sZFZhbHVlJyk7CitzaG91bGRCZU51bGwoJ3JlY29yZC5wcmV2aW91c1NpYmxpbmcnKTsKK3No
b3VsZEJlTnVsbCgncmVjb3JkLm5leHRTaWJsaW5nJyk7CitzaG91bGRCZSgncmVjb3JkLmFkZGVk
Tm9kZXMubGVuZ3RoJywgJzAnKTsKK3Nob3VsZEJlKCdyZWNvcmQucmVtb3ZlZE5vZGVzLmxlbmd0
aCcsICcwJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kN2Y2MzE2ZmU1ZGQ1NjBkOWI1ZDUxYjcyYWZiNGQxZjhhYjA2
ZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjM2IEBACitU
ZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBhdHRyaWJ1dGVzCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgYXR0cmli
dXRlIG9ic2VydmF0aW9uLgorLi4uY2FuIGF0dHJpYnV0ZSBjaGFuZ2VzIGJlIG9ic2VydmVkIGF0
IGFsbAorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUg
aXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28i
CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBtdXRh
dGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWUgaXMgImJhciIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBu
dWxsCisuLi5vYnNlcnZlci5kaXNjb25uZWN0KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxp
dmVyeSBvZiBtdXRhdGlvbnMuCitQQVNTIG11dGF0aW9ucyBpcyBudWxsCisuLi5yZS1vYnNlcnZp
bmcgYWZ0ZXIgZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLgorUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImJh
ciIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisKK1Rlc3Rp
bmcgdGhhdCBvYnNlcnZpbmcgd2l0aG91dCBzcGVjaWZ5aW5nICJhdHRyaWJ1dGVzIiBkb2VzIG5v
dCByZXN1bHQgaW4gaGVhcmluZyBhYm91dCBhdHRyaWJ1dGUgY2hhbmdlcy4KK1BBU1MgbXV0YXRp
b25zIGlzIG51bGwKKworVGVzdGluZyB0aGF0IHJlLW9ic2VydmluZyB0aGUgc2FtZSBub2RlIHdp
dGggdGhlIHNhbWUgb2JzZXJ2ZXIgaGFzIHRoZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIHRoZSBvcHRp
b25zLgorUEFTUyBjYWxscyBpcyAxCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJp
YnV0ZU5hbWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zIGlzIG51bGwKKworVGVzdGluZyB0aGF0
IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdpdmVuIG5vZGUgYW5k
IGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFT
UyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0
dHJpYnV0ZU5hbWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zMi5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnMyWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uczJbMF0uYXR0
cmlidXRlTmFtZSBpcyAiZm9vIgorCitUZXN0aW5nIHRoYXQgImF0dHJpYnV0ZU5hbWVzcGFjZSIg
dmFsdWUgaXMgZGVsaXZlcmVkIHByb3Blcmx5LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEK
K1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
c3BhY2UgaXMgImh0dHA6Ly93d3cuZm9vLmNvbS9iYXIiCisKK1Rlc3RpbmcgdGhhdCBtb2RpZmlj
YXRpb25zIHRvIG5vZGUgcHJvcGVydGllcyB3aGljaCBkZWxlZ2F0ZSB0byBhdHRyaWJ1dGUgc3Rv
cmFnZSBkZWxpdmVyIG11dGF0aW9ucy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNT
IG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZSBpcyAic3JjIgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRl
cyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImhyZWYiCisKK1Rlc3Rpbmcg
bXV0YXRpb24gcmVjb3JkcyBhcmUgZW5xdWV1ZWQgZm9yIGF0dHJpYnV0ZXMgYmVmb3JlIERPTVN1
YnRyZWVNb2RpZmllZCBpcyBkaXNwYXRjaGVkLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIK
K1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRy
aWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiYmF6IgorCitUZXN0
aW5nIGJhc2ljIG9sZFZhbHVlIGRlbGl2ZXJ5LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMK
K1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBu
dWxsCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlv
bnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUg
aXMgImJhciIKK1BBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11
dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9uc1syXS5vbGRW
YWx1ZSBpcyAiYm9vIgorCitUZXN0aW5nIHRoYXQgb2xkVmFsdWUgaXMgZGVsaXZlcmVkIGFzIHJl
cXVlc3RlZCAob3Igbm90KS4KK1BBU1MgbXV0YXRpb25zV2l0aE9sZFZhbHVlLmxlbmd0aCBpcyAx
CitQQVNTIG11dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFT
UyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBt
dXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0ub2xkVmFsdWUgaXMgImJhciIKK1BBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0u
b2xkVmFsdWUgaXMgbnVsbAorCitBbiBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9ic2VydmF0aW9u
cyB3aWxsIGdldCBhdHRyaWJ1dGVPbGRWYWx1ZSBpZiBhbnkgZW50cmllcyByZXF1ZXN0IGl0Lgor
UEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNT
IG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiYmFyIgorCitUZXN0aW5nIHNldHRpbmcgYW4gYXR0
cmlidXRlIHZpYSByZWZsZWN0ZWQgSURMIGF0dHJpYnV0ZS4KK1BBU1MgbXV0YXRpb25zLmxlbmd0
aCBpcyAzCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1
ZSBpcyBudWxsCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBt
dXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1sxXS5vbGRW
YWx1ZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BB
U1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgorUEFTUyBtdXRhdGlvbnNbMl0u
b2xkVmFsdWUgaXMgImJhciIKKworVGVzdGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciB3b3JrcyBh
cyBleHBlY3RlZCBhbmQgb2JzZXJ2ZXMgY2FzZSB3aXRoIEhUTUwgZWxlbWVudHMuCisuLi5vbmx5
IGZvbyBhbmQgYmFyIHNob3VsZCBiZSByZWNlaXZlZC4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBp
cyAyCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMi
CitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9u
c1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorCitUZXN0aW5nIHRoZSBiZWhhdmlvciBv
ZiBhdHRyaWJ1dGVGaWx0ZXIgd2hlbiB0aGUgc2FtZSBvYnNlcnZlciBvYnNlcnZlcyBhdCBtdWx0
aXBsZSBub2RlcyBpbiBhIHN1YnRyZWUgd2l0aCBkaWZmZXJlbnQgZmlsdGVyIG9wdGlvbnMuCisu
Li5vbmx5IGZvbywgYmFyICYgYmF0IHNob3VsZCBiZSByZWNlaXZlZC4KK1BBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAzCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNT
IG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNb
Ml0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUg
aXMgImJhdCIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisu
Li5iYXIsIGJhdCAmIGJheiBzaG91bGQgYWxsIGJlIHJlY2VpdmVkLgorUEFTUyBtdXRhdGlvbnMu
bGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNT
IG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCitQQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0
cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImJhdCIKK1BBU1Mg
bXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCitQQVNTIG11dGF0aW9uc1sy
XS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBp
cyAiYmF6IgorUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKwor
VGVzdGluZyB0aGF0IHNldHRpbmcgYW4gYXR0cmlidXRlRmlsdGVyIGZpbHRlcnMgb3V0IG5hbWVz
cGFjZWQgYXR0cmlidXRlcy4KKy4uLnBhdGhMZW5ndGggc2hvdWxkIG5vdCBiZSByZWNlaXZlZC4K
K1BBU1MgbXV0YXRpb25zIGlzIG51bGwKKworVGVzdGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciBy
ZXNwZWN0cyBjYXNlIHdpdGggbm9uLUhUTUwgZWxlbWVudHMuCisuLi5vbmx5IElELCBpZCwgYm9v
TSBzaG91bGQgYmUgcmVjZWl2ZWQuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMworUEFTUyBt
dXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJp
YnV0ZU5hbWUgaXMgIklEIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlz
IG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWVzcGFjZSBpcyBudWxsCitQQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVz
IgorUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBpcyAiYm9vTSIKK1BBU1MgbXV0YXRp
b25zWzJdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBtb2RpZnlp
bmcgYW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRz
LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIK
K1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJz
dHlsZSIKK1BBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVlIGlzIG51bGwKK1BBU1MgbXV0YXRpb25z
WzJdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1l
IGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzJdLm9sZFZhbHVlIGlzIG51bGwKKy4uLm11dGF0
aW9uIHJlY29yZCBjcmVhdGVkLgorUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAorCitUZXN0aW5nIHRo
YXQgbW9kaWZ5aW5nIGFuIGVsZW1lbnRzIHN0eWxlIHByb3BlcnR5IGRpc3BhdGNoZXMgTXV0YXRp
b24gUmVjb3JkcyB3aXRoIGNvcnJlY3Qgb2xkVmFsdWVzLgorUEFTUyBtdXRhdGlvbnMubGVuZ3Ro
IGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZh
bHVlIGlzICJjb2xvcjogeWVsbG93OyB3aWR0aDogMTAwcHg7IgorUEFTUyBtdXRhdGlvbnNbMV0u
dHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMg
InN0eWxlIgorUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgImNvbG9yOiByZWQ7IHdpZHRo
OiAxMDBweDsiCitQQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBt
dXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBpcyAic3R5bGUiCitQQVNTIG11dGF0aW9uc1syXS5v
bGRWYWx1ZSBpcyAiY29sb3I6IHJlZDsgd2lkdGg6IDIwMHB4OyIKKy4uLm11dGF0aW9uIHJlY29y
ZCBjcmVhdGVkLgorUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgYSBuby1v
cCBzdHlsZSBwcm9wZXJ0eSBtdXRhdGlvbiBkb2VzIG5vdCBjcmVhdGUgTXV0YXRpb24gUmVjb3Jk
cy4KK1BBU1MgbXV0YXRpb25zIGlzIG51bGwKKworVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJp
YnV0ZSB0aHJvdWdoIGFuIGF0dHIgbm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzCitQQVNT
IG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgor
UEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBd
LmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVl
IGlzICJmb28iCisKK1Rlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgYnkgYXR0YWNoaW5n
IGEgY2hpbGQgdG8gYW4gYXR0ciBub2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMKK1BBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQ
QVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0IgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUg
aXMgImZvbyIKKworVGVzdCB0aGF0IG11dGF0aW5nIHZpYSBzZXRBdHRyaWJ1dGVOb2RlIGRlbGl2
ZXJzIG11dGF0aW9uIHJlY29yZHMKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCitQQVNTIG11
dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRy
aWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0Igor
UEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zWzFdLnRh
cmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNT
IG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLW90aGVyIgorUEFTUyBtdXRhdGlv
bnNbMV0ub2xkVmFsdWUgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMl0udGFyZ2V0IGlzIGRpdgor
UEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzJd
LmF0dHJpYnV0ZU5hbWUgaXMgImlkIgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgIm15
SWQiCisKK1Rlc3QgdGhhdCBzZXRBdHRyaWJ1dGUgb24gYW4gYXR0cmlidXRlIHdpdGggYW4gZXhp
c3RpbmcgQXR0ciBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzCitQQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNb
MF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUg
aXMgImRhdGEtdGVzdCIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCisKK1Rl
c3QgdGhhdCBzZXROYW1lZEl0ZW0gYW5kIHJlbW92ZU5hbWVkSXRlbSBkZWxpdmVyIG11dGF0aW9u
IHJlY29yZHMKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50
YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0IgorUEFTUyBtdXRhdGlv
bnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBkaXYK
K1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sx
XS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCitQQVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1
ZSBpcyAiYmFyIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY3ZWJlOGQxMGM5
NTMzNjI0NzI4OTUwZDdmNDlhZTE3NGQ3Njc0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKQEAg
LTAsMCArMSwxMDA4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwordmFyIG11dGF0aW9ucywgbXV0YXRpb25zMiwgbXV0YXRpb25z
V2l0aE9sZFZhbHVlOwordmFyIGNhbGxzOwordmFyIGRpdjsKKworZnVuY3Rpb24gdGVzdEJhc2lj
KCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3Rh
cnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgYXR0cmlidXRl
IG9ic2VydmF0aW9uLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmli
dXRlKCdiYXInLCAnZm9vJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAg
ICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0
cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdm
b28nLCAnYmFyJyk7CisgICAgICAgIGRpdi5yZW1vdmVBdHRyaWJ1dGUoJ2JhcicpOworICAgICAg
ICBzZXRUaW1lb3V0KGNoZWNrRGlzY29ubmVjdEFuZE11dGF0ZSwgMCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlKCkgeworICAgICAgICBkZWJ1ZygnLi4u
Y2FuIGF0dHJpYnV0ZSBjaGFuZ2VzIGJlIG9ic2VydmVkIGF0IGFsbCcpOworCisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7CisKKyAgICAgICAgbXV0
YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBk
aXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7CisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tO
b3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0aXBsZSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y2hlY2tOb3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0aXBsZSgpIHsKKyAgICAgICAgZGVidWcoJy4u
Lm9ic2VydmVyLmRpc2Nvbm5lY3QoKSBzaG91bGQgcHJldmVudCBmdXJ0aGVyIGRlbGl2ZXJ5IG9m
IG11dGF0aW9ucy4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsK
KyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKKyAg
ICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhdCcpOworICAgICAgICBkaXYuc2V0QXR0
cmlidXRlKCdiYXInLCAnZm9vJyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIGRlYnVnKCcuLi5yZS1vYnNlcnZp
bmcgYWZ0ZXIgZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLicpOworCisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7CisgICAg
ICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBy
dW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RX
cm9uZ1R5cGUoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5j
dGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBvYnNlcnZpbmcgd2l0
aG91dCBzcGVjaWZ5aW5nICJhdHRyaWJ1dGVzIiBkb2VzIG5vdCByZXN1bHQgaW4gaGVhcmluZyBh
Ym91dCBhdHRyaWJ1dGUgY2hhbmdlcy4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwor
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2Jz
ZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAg
ICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNl
cnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUgfSk7CisgICAg
ICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc2V0VGltZW91dChm
aW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3Qo
KTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKwor
ICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZVJlZ2lzdHJhdGlvbigpIHsK
KyAgICB2YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
eworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHJlLW9ic2VydmluZyB0aGUgc2FtZSBub2Rl
IHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIgaGFzIHRoZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIHRoZSBv
cHRpb25zLicpOworCisJCWNhbGxzID0gMDsKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAg
ICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAg
ICAgbXV0YXRpb25zID0gbTsKKwkJCWNhbGxzKys7CisgICAgICAgIH0pOworCisgICAgICAgIG9i
c2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRy
dWUgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUg
fSk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc2V0
VGltZW91dChjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUsIDApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGNoZWNrRGlzY29ubmVjdEFuZE11dGF0ZSgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ2NhbGxz
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBh
dHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBvYnNlcnZl
ci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUgfSk7CisgICAgICAgIGRpdi5zZXRBdHRy
aWJ1dGUoJ2ZvbycsICdiYXonKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cycsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVi
dWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZU9ic2VydmVycygpIHsKKyAgICB2YXIgZGl2OworICAg
IHZhciBvYnNlcnZlcjsKKyAgICB2YXIgb2JzZXJ2ZXIyOworCisgICAgZnVuY3Rpb24gc3RhcnQo
KSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgbXVsdGlwbGUgb2JzZXJ2ZXJzIGNhbiBi
ZSByZWdpc3RlcmVkIHRvIGEgZ2l2ZW4gbm9kZSBhbmQgYm90aCByZWNlaXZlIG11dGF0aW9ucy4n
KTsKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAg
ICAgfSk7CisgICAgICAgIG9ic2VydmVyMiA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9uczIgPSBtOworICAgICAgICB9KTsKKyAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKKyAgICAg
ICAgb2JzZXJ2ZXIyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAg
IGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5p
c2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Mi5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS5hdHRyaWJ1
dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAg
ICAgb2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBy
dW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RO
YW1lc3BhY2VVUkkoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCAiYXR0cmlidXRl
TmFtZXNwYWNlIiB2YWx1ZSBpcyBkZWxpdmVyZWQgcHJvcGVybHkuJyk7CisgICAgICAgIG11dGF0
aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9u
KG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAgICAg
IG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1
ZSB9KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LmZvby5jb20vYmFy
JywgJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOyAgICAKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0
ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lc3BhY2UnLCAnImh0dHA6Ly93d3cuZm9vLmNvbS9iYXIiJyk7ICAgICAgICAKKyAgICAg
ICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1
bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFBy
b3BlcnR5QWNjZXNzKCkgeworICAgIHZhciBpbWcsIGE7CisgICAgdmFyIG9ic2VydmVyOworCisg
ICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgbW9kaWZp
Y2F0aW9ucyB0byBub2RlIHByb3BlcnRpZXMgd2hpY2ggZGVsZWdhdGUgdG8gYXR0cmlidXRlIHN0
b3JhZ2UgZGVsaXZlciBtdXRhdGlvbnMuJyk7CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7Cisg
ICAgICAgIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOworICAgICAgICBhID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCisgICAgICAgIG9ic2VydmVyID0gbmV3IFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25z
ID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShpbWcsIHsgYXR0
cmlidXRlczogdHJ1ZSB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShhLCB7IGF0dHJpYnV0
ZXM6IHRydWUgfSk7CisKKyAgICAgICAgaW1nLnNyYyA9ICdiYXoucG5nJzsKKyAgICAgICAgYS5o
cmVmID0gJ2Zvby5odG1sJzsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICci
YXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lJywgJyJzcmMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICci
YXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVO
YW1lJywgJyJocmVmIicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAg
IGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgp
OworfQorCitmdW5jdGlvbiB0ZXN0T3JkZXJpbmdXcnRET01TdWJ0cmVlTW9kaWZpZWQoKSB7Cisg
ICAgdmFyIGRpdiwgZGl2Miwgc3ViRGl2OworICAgIHZhciBvYnNlcnZlcjsKKyAgICB2YXIgbGlz
dGVuZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3Rpbmcg
bXV0YXRpb24gcmVjb3JkcyBhcmUgZW5xdWV1ZWQgZm9yIGF0dHJpYnV0ZXMgYmVmb3JlIERPTVN1
YnRyZWVNb2RpZmllZCBpcyBkaXNwYXRjaGVkLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51
bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICBkaXYyID0gZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisKKyAgICAgICAgc3ViRGl2ID0g
ZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKworICAgICAg
ICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAg
ICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAgICAgIGxpc3RlbmVy
ID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZGl2Mi5zZXRBdHRyaWJ1dGUoJ2JheicsICdi
YXQnKTsKKyAgICAgICAgfQorCisgICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0
cmVlTW9kaWZpZWQnLCBsaXN0ZW5lcik7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoc3ViRGl2
LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2Miwg
eyBhdHRyaWJ1dGVzOiB0cnVlIH0pOworCisgICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2Zv
bycsICdiYXInKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0
aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmli
dXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywg
JyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmli
dXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywg
JyJiYXoiJyk7CisgICAgICAgIGRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9k
aWZpZWQnLCBsaXN0ZW5lcik7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2
KTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rp
b24gdGVzdE9sZFZhbHVlKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisg
ICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIG9sZFZh
bHVlIGRlbGl2ZXJ5LicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0
ZSgnYmFyJywgJ2JvbycpOworICAgICAgICAKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRv
dy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlci5v
YnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9
KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworICAgICAgICBkaXYu
c2V0QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7CisgICAgICAgIGRpdi5yZW1vdmVBdHRyaWJ1dGUo
J2JhcicpOworICAgICAgICBkaXYucmVtb3ZlQXR0cmlidXRlKCdub24tZXhpc3RhbnQnKTsKKyAg
ICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlz
aCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJ251bGwnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICciYmFyIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzJdLm9sZFZhbHVlJywgJyJib28iJyk7CisgICAgICAgIG9ic2VydmVyLmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOwor
ICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPbGRWYWx1ZUFzUmVxdWVz
dGVkKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyV2l0aE9sZFZhbHVlOworICAg
IHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1Zygn
VGVzdGluZyB0aGF0IG9sZFZhbHVlIGlzIGRlbGl2ZXJlZCBhcyByZXF1ZXN0ZWQgKG9yIG5vdCku
Jyk7CisgICAgICAgIG11dGF0aW9uc1dpdGhPbGRWYWx1ZSA9IG51bGw7CisgICAgICAgIG11dGF0
aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CisgICAgICAgIG9ic2Vy
dmVyV2l0aE9sZFZhbHVlID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0
YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zV2l0aE9sZFZhbHVlID0gbXV0
YXRpb25zOworICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRh
dGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlcldpdGhPbGRW
YWx1ZS5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTog
dHJ1ZSB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1
ZSB9KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JheicpOworICAgICAgICBz
ZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgewor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlLmxlbmd0aCcsICcxJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0udHlwZScsICciYXR0cmli
dXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS5hdHRy
aWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNXaXRoT2xk
VmFsdWVbMF0ub2xkVmFsdWUnLCAnImJhciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVl
JywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXJXaXRoT2xkVmFsdWUuZGlzY29ubmVjdCgpOwor
ICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0
ZXN0T2xkVmFsdWVVbmlvbk11bHRpcGxlT2JzZXJ2YXRpb25zKCkgeworICAgIHZhciBkaXY7Cisg
ICAgdmFyIHNwYW47CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7
CisgICAgICAgIGRlYnVnKCdBbiBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9ic2VydmF0aW9ucyB3
aWxsIGdldCBhdHRyaWJ1dGVPbGRWYWx1ZSBpZiBhbnkgZW50cmllcyByZXF1ZXN0IGl0LicpOwor
ICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgc3BhbiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZm9vJywg
J2JhcicpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0
aW9uczsKKyAgICAgICAgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJp
YnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOwor
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHNwYW4sIHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKKyAg
ICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXonKTsKKyAgICAgICAgc2V0VGltZW91
dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLm9sZFZhbHVlJywgJyJiYXIiJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0K
KworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJRExBdHRyaWJ1dGUoKSB7CisgICAg
dmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAg
ICAgICAgZGVidWcoJ1Rlc3Rpbmcgc2V0dGluZyBhbiBhdHRyaWJ1dGUgdmlhIHJlZmxlY3RlZCBJ
REwgYXR0cmlidXRlLicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAg
IHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTog
dHJ1ZSB9KTsKKyAgICAgICAgZGl2LmlkID0gJ2Zvbyc7CisgICAgICAgIGRpdi5pZCA9ICdiYXIn
OworICAgICAgICBkaXYuaWQgPSBudWxsOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlw
ZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lJywgJyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRW
YWx1ZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICci
YXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVO
YW1lJywgJyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScs
ICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0dHJp
YnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZScs
ICciaWQiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0ub2xkVmFsdWUnLCAnImJh
ciInKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7
CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVu
Y3Rpb24gdGVzdEF0dHJpYnV0ZUZpbHRlcigpIHsKKyAgICB2YXIgZGl2LCBwYXRoOworICAgIHZh
ciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVz
dGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciB3b3JrcyBhcyBleHBlY3RlZCBhbmQgb2JzZXJ2ZXMg
Y2FzZSB3aXRoIEhUTUwgZWxlbWVudHMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
KyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
KSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAgICBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIub2Jz
ZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2ZvbycsICdi
YXInLCAnYm9vTSddIH0pOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnZm9vJyk7
CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JhcicsICdiYXInKTsKKyAgICAgICAgZGl2LnNl
dEF0dHJpYnV0ZSgnYmF6JywgJ2JheicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdCT09t
JywgJ2Jvb20nKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4ub25seSBmb28gYW5kIGJh
ciBzaG91bGQgYmUgcmVjZWl2ZWQuJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5s
ZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0
dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWVzcGFjZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScs
ICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lJywgJyJiYXIiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmli
dXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwor
ICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAg
c3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dHJpYnV0ZUZpbHRlclN1YnRyZWUoKSB7Cisg
ICAgdmFyIGRpdiwgZGl2MiwgZGl2MzsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlv
biBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhlIGJlaGF2aW9yIG9mIGF0dHJp
YnV0ZUZpbHRlciB3aGVuIHRoZSBzYW1lIG9ic2VydmVyIG9ic2VydmVzIGF0IG11bHRpcGxlIG5v
ZGVzIGluIGEgc3VidHJlZSB3aXRoIGRpZmZlcmVudCBmaWx0ZXIgb3B0aW9ucy4nKTsKKworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Cisg
ICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBkaXYyID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpKTsKKyAgICAgICAgZGl2MyA9IGRpdjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJp
YnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydmb28nLCAnYmFy
J10gfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2MiwgeyBhdHRyaWJ1dGVzOiB0cnVl
LCBzdWJ0cmVlOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnYmFyJywgJ2JhdCddIH0pOworCisg
ICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdmb28nLCAnZm9vJyk7CisgICAgICAgIGRpdjMuc2V0
QXR0cmlidXRlKCdiYXInLCAnYmFyJyk7CisgICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdiYXQn
LCAnYmF0Jyk7CisgICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF6Jyk7CisKKyAg
ICAgICAgc2V0VGltZW91dChjaGVja0FuZE9ic2VydmVBbGwsIDApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNoZWNrQW5kT2JzZXJ2ZUFsbCgpIHsKKyAgICAgICAgZGVidWcoJy4uLm9ubHkgZm9v
LCBiYXIgJiBiYXQgc2hvdWxkIGJlIHJlY2VpdmVkLicpOworCisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMubGVuZ3RoJywgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50
eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0
dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MV0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJiYXQiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMl0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKworICAgICAgICBvYnNlcnZl
ci5vYnNlcnZlKGRpdjIsIHsgYXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKKyAg
ICAgICAgZGl2My5zZXRBdHRyaWJ1dGUoJ2JhcicsICdiYXInKTsKKyAgICAgICAgZGl2My5zZXRB
dHRyaWJ1dGUoJ2JhdCcsICdiYXQnKTsKKyAgICAgICAgZGl2My5zZXRBdHRyaWJ1dGUoJ2Jheics
ICdiYXonKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4uYmFyLCBiYXQgJiBiYXogc2hv
dWxkIGFsbCBiZSByZWNlaXZlZC4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxl
bmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0
cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
JywgJyJiYXIiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWUnLCAnImJhdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0
cmlidXRlTmFtZScsICciYmF6IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0
dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVj
dCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQor
CisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxF
bGVtZW50KCkgeworICAgIHZhciBwYXRoOworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0
aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHNldHRpbmcgYW4gYXR0
cmlidXRlRmlsdGVyIGZpbHRlcnMgb3V0IG5hbWVzcGFjZWQgYXR0cmlidXRlcy4nKTsKKworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Cisg
ICAgICAgIH0pOworCisgICAgICAgIHBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BhdGgnKTsKKyAgICAgICAgb2JzZXJ2ZXIub2Jz
ZXJ2ZShwYXRoLCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydwYXRoTGVu
Z3RoJ10gfSk7CisgICAgICAgIHBhdGguc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnJywgJ3BhdGhMZW5ndGgnLCAnMjAwJyk7CisKKyAgICAgICAgc2V0VGltZW91dChm
aW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVi
dWcoJy4uLnBhdGhMZW5ndGggc2hvdWxkIG5vdCBiZSByZWNlaXZlZC4nKTsKKworICAgICAgICBz
aG91bGRCZU51bGwoJ211dGF0aW9ucycpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7
CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAg
ICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0QXR0cmlidXRlRmlsdGVyTm9uSFRNTERvY3Vt
ZW50KCkgeworICAgIHZhciBzdmdEb2MsIGRpdiwgcGF0aDsKKyAgICB2YXIgb2JzZXJ2ZXI7CisK
KyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBhdHRy
aWJ1dGVGaWx0ZXIgcmVzcGVjdHMgY2FzZSB3aXRoIG5vbi1IVE1MIGVsZW1lbnRzLicpOworCisg
ICAgICAgIHN2Z0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnLCAnc3ZnJyk7CisgICAgICAgIG11dGF0
aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgZGl2ID0gc3ZnRG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBv
YnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6
IFsnSUQnLCAnaWQnLCAnYm9vTSddIH0pOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdJRCcs
ICdJRCcpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdpZCcsICdpZCcpOworICAgICAgICBk
aXYuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF6Jyk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUo
J2Jvb00nLCAnYm9vbScpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdCT09tJywgJ2Jvb20n
KTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4ub25seSBJRCwgaWQsIGJvb00gc2hvdWxk
IGJlIHJlY2VpdmVkLicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywg
JzMnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVz
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnIklE
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScs
ICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmli
dXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywg
JyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0
dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFt
ZScsICciYm9vTSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVO
YW1lc3BhY2UnLCAnbnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAg
ICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0
YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5QWNjZXNzKCkg
eworICAgIHZhciBkaXYsIHBhdGg7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24g
c3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1l
bnRzIHN0eWxlIHByb3BlcnR5IGRpc3BhdGNoZXMgTXV0YXRpb24gUmVjb3Jkcy4nKTsKKworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Cisg
ICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdzdHlsZScsICdjb2xvcjogeWVsbG93OyB3aWR0
aDogMTAwcHg7Jyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6
IHRydWUgfSk7CisgICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdyZWQnOworICAgICAgICBkaXYu
c3R5bGUud2lkdGggPSAnMjAwcHgnOworICAgICAgICBkaXYuc3R5bGUuY29sb3IgPSAnYmx1ZSc7
CisKKyAgICAgICAgc2V0VGltZW91dChjaGVja0FuZENvbnRpbnVlLCAwKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjaGVja0FuZENvbnRpbnVlKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScs
ICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRW
YWx1ZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICci
YXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVO
YW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1
ZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0
cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1l
JywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5vbGRWYWx1ZScs
ICdudWxsJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2LmdldEF0
dHJpYnV0ZSgnc3R5bGUnKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVidWcoJy4uLm11dGF0aW9uIHJl
Y29yZCBjcmVhdGVkLicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcp
OworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5QWNjZXNzT2xkVmFsdWUoKSB7CisgICAgdmFy
IGRpdiwgcGF0aDsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsK
KyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUg
cHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRzIHdpdGggY29ycmVjdCBvbGRWYWx1
ZXMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBtdXRh
dGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnY29sb3I6
IHllbGxvdzsgd2lkdGg6IDEwMHB4OycpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwg
eyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKKyAgICAgICAg
ZGl2LnN0eWxlLmNvbG9yID0gJ3JlZCc7CisgICAgICAgIGRpdi5zdHlsZS53aWR0aCA9ICcyMDBw
eCc7CisgICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdibHVlJzsKKworICAgICAgICBzZXRUaW1l
b3V0KGNoZWNrQW5kQ29udGludWUsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQW5k
Q29udGludWUoKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJjb2xvcjogeWVs
bG93OyB3aWR0aDogMTAwcHg7IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0
cmlidXRlTmFtZScsICcic3R5bGUiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
b2xkVmFsdWUnLCAnImNvbG9yOiByZWQ7IHdpZHRoOiAxMDBweDsiJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1syXS5vbGRWYWx1ZScsICciY29sb3I6IHJlZDsgd2lkdGg6IDIwMHB4
OyInKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYuZ2V0QXR0cmli
dXRlKCdzdHlsZScpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4ubXV0YXRpb24gcmVjb3Jk
IGNyZWF0ZWQuJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisK
KyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAg
ICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24g
dGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NJZ25vcmVOb29wKCkgeworICAgIHZhciBk
aXYsIHBhdGg7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7Cisg
ICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgYSBuby1vcCBzdHlsZSBwcm9wZXJ0eSBtdXRhdGlv
biBkb2VzIG5vdCBjcmVhdGUgTXV0YXRpb24gUmVjb3Jkcy4nKTsKKworICAgICAgICBtdXRhdGlv
bnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOwor
CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBk
aXYuc2V0QXR0cmlidXRlKCdzdHlsZScsICdjb2xvcjogeWVsbG93OyB3aWR0aDogMTAwcHg7Jyk7
CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Cisg
ICAgICAgIGRpdi5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaGVpZ2h0Jyk7CisKKyAgICAgICAgc2V0
VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIu
ZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7
CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE11dGF0ZVRocm91Z2hB
dHRyTm9kZVZhbHVlKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0
KCkgeworICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSB0aHJv
dWdoIGFuIGF0dHIgbm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlv
bnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRlc3Qn
LCAnZm9vJyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRy
dWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOworICAgICAgICBkaXYuYXR0cmlidXRlc1sn
ZGF0YS10ZXN0J10udmFsdWUgPSAnYmFyJzsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwg
MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dGFyZ2V0JywgJ2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZScsICciZGF0YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9s
ZFZhbHVlJywgJyJmb28iJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAg
ICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3Rh
cnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZUNoaWxkKCkgewor
ICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1
ZygnVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSBieSBhdHRhY2hpbmcgYSBjaGlsZCB0
byBhbiBhdHRyIG5vZGUgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcycpOworCisgICAgICAgIG11
dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25z
ID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0Jywg
J2ZvbycpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVl
LCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXNbJ2Rh
dGEtdGVzdCddLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdiYXInKSk7CisK
KyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZp
bmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworCisgICAgICAg
IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5O
ZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRB
bmRSZW1vdmVBdHRyaWJ1dGVOb2RlKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0
aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IG11dGF0aW5nIHZpYSBzZXRB
dHRyaWJ1dGVOb2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMnKTsKKworICAgICAgICBtdXRh
dGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9
IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5pZCA9ICdteUlkJzsKKyAgICAgICAgZGl2LnNl
dEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZl
KGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKKyAg
ICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcpOwor
ICAgICAgICBhdHRyLnZhbHVlID0gJ2Jhcic7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGVOb2Rl
KGF0dHIpOworICAgICAgICBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdkYXRhLW90
aGVyJyk7CisgICAgICAgIGF0dHIudmFsdWUgPSAnYmF6JzsKKyAgICAgICAgZGl2LnNldEF0dHJp
YnV0ZU5vZGUoYXR0cik7CisgICAgICAgIGRpdi5yZW1vdmVBdHRyaWJ1dGVOb2RlKGRpdi5hdHRy
aWJ1dGVzWydpZCddKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxl
bmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2Rp
dicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZGF0
YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJm
b28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFyZ2V0JywgJ2RpdicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciZGF0YS1vdGhl
ciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICdudWxsJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udGFyZ2V0JywgJ2RpdicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMl0ub2xkVmFsdWUnLCAnIm15SWQiJyk7CisKKyAgICAgICAg
b2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5l
eHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE1peGVk
Tm9kZUFuZEVsZW1lbnRPcGVyYXRpb25zKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1
bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IHNldEF0dHJpYnV0ZSBv
biBhbiBhdHRyaWJ1dGUgd2l0aCBhbiBleGlzdGluZyBBdHRyIGRlbGl2ZXJzIG11dGF0aW9uIHJl
Y29yZHMnKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAg
ICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHZhciBhdHRy
ID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdkYXRhLXRlc3QnKTsKKyAgICAgICAgYXR0ci52
YWx1ZSA9ICdmb28nOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKKyAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xk
VmFsdWU6IHRydWUgfSk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdi
YXInKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcx
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2RpdicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZGF0YS10ZXN0Iicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7CisK
KyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAg
ICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24g
dGVzdE5hbWVkTm9kZU1hcE9wZXJhdGlvbnMoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAg
ZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0IHRoYXQgc2V0TmFtZWRJdGVt
IGFuZCByZW1vdmVOYW1lZEl0ZW0gZGVsaXZlciBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAgICAg
ICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRh
dGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRl
c3QnLCAnZm9vJyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6
IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOworICAgICAgICB2YXIgYXR0ciA9IGRv
Y3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS10ZXN0Jyk7CisgICAgICAgIGF0dHIudmFsdWUg
PSAnYmFyJzsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtKGF0dHIpOworICAg
ICAgICBkaXYuYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0oJ2RhdGEtdGVzdCcpOworCisgICAg
ICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2go
KSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnImJhciInKTsKKworICAgICAgICBvYnNlcnZlci5k
aXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsK
KyAgICB9CisKKyAgICBzdGFydCgpOworfQorCit2YXIgdGVzdHMgPSBbCisgICAgdGVzdEJhc2lj
LAorICAgIHRlc3RXcm9uZ1R5cGUsCisgICAgdGVzdE11bHRpcGxlUmVnaXN0cmF0aW9uLAorICAg
IHRlc3RNdWx0aXBsZU9ic2VydmVycywKKyAgICB0ZXN0TmFtZXNwYWNlVVJJLAorICAgIHRlc3RQ
cm9wZXJ0eUFjY2VzcywKKyAgICB0ZXN0T3JkZXJpbmdXcnRET01TdWJ0cmVlTW9kaWZpZWQsCisg
ICAgdGVzdE9sZFZhbHVlLAorICAgIHRlc3RPbGRWYWx1ZUFzUmVxdWVzdGVkLAorICAgIHRlc3RP
bGRWYWx1ZVVuaW9uTXVsdGlwbGVPYnNlcnZhdGlvbnMsCisgICAgdGVzdElETEF0dHJpYnV0ZSwK
KyAgICB0ZXN0QXR0cmlidXRlRmlsdGVyLAorICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJTdWJ0cmVl
LAorICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRWxlbWVudCwKKyAgICB0ZXN0QXR0cmli
dXRlRmlsdGVyTm9uSFRNTERvY3VtZW50LAorICAgIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5
QWNjZXNzLAorICAgIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5QWNjZXNzT2xkVmFsdWUsCisg
ICAgdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NJZ25vcmVOb29wLAorICAgIHRlc3RN
dXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSwKKyAgICB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJOb2Rl
Q2hpbGQsCisgICAgdGVzdFNldEFuZFJlbW92ZUF0dHJpYnV0ZU5vZGUsCisgICAgdGVzdE1peGVk
Tm9kZUFuZEVsZW1lbnRPcGVyYXRpb25zLAorICAgIHRlc3ROYW1lZE5vZGVNYXBPcGVyYXRpb25z
CitdOwordmFyIHRlc3RJbmRleCA9IDA7CisKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkgeworICAg
IGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpCisgICAgICAgIHRlc3RzW3Rlc3RJbmRleCsr
XSgpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9u
KCdUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBhdHRyaWJ1dGVzJyk7CisK
K2lmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhp
cyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAg
cnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hhcmFjdGVyZGF0YS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hhcmFj
dGVyZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZjNiNTVkMjc2Y2MxNWE2ODM5YmVk
N2Q5N2IzODJjNmY3YWRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYxIEBACitUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBDaGFy
YWN0ZXJEYXRhIG5vZGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5n
IGJhc2ljIGFzcGVjdHMgb2YgY2hhcmFjdGVyRGF0YSBvYnNlcnZhdGlvbi4KKy4uLmNhbiBjaGFy
YWN0ZXJEYXRhIGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsCitQQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1Mg
bXV0YXRpb25zWzBdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKKy4uLm9ic2VydmVyLmRpc2Nvbm5l
Y3QoKSBzaG91bGQgcHJldmVudCBmdXJ0aGVyIGRlbGl2ZXJ5IG9mIG11dGF0aW9ucy4KK1BBU1Mg
bXV0YXRpb25zIGlzIG51bGwKKy4uLnJlLW9ic2VydmluZyBhZnRlciBkaXNjb25uZWN0IHdvcmtz
IHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFT
UyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0YXRpb25zWzBd
LnRhcmdldCBpcyBjaGFyRGF0YU5vZGUKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNoYXJh
Y3RlckRhdGEiCitQQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgY2hhckRhdGFOb2RlCisKK1Rl
c3RpbmcgdGhhdCBvYnNlcnZpbmcgd2l0aG91dCBzcGVjaWZ5aW5nICJjaGFyYWN0ZXJEYXRhIiBk
b2VzIG5vdCByZXN1bHQgaW4gaGVhcmluZyBhYm91dCBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMuCitQ
QVNTIG11dGF0aW9ucyBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBtdWx0aXBsZSBvYnNlcnZlcnMg
Y2FuIGJlIHJlZ2lzdGVyZWQgdG8gYSBnaXZlbiBub2RlIGFuZCBib3RoIHJlY2VpdmUgbXV0YXRp
b25zLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUg
aXMgImNoYXJhY3RlckRhdGEiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgY2hhckRhdGFO
b2RlCitQQVNTIG11dGF0aW9uczIubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zMlswXS50eXBl
IGlzICJjaGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnMyWzBdLnRhcmdldCBpcyBjaGFyRGF0
YU5vZGUKKworVGVzdGluZyBtdXRhdGlvbiByZWNvcmRzIGFyZSBlbnF1ZXVlZCBmb3IgY2hhcmFj
dGVyRGF0YSBiZWZvcmUgRE9NU3VidHJlZU1vZGlmaWVkIGlzIGRpc3BhdGNoZWQuCitQQVNTIG11
dGF0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hhcmFjdGVy
RGF0YSIKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCisKK1Rlc3Rpbmcg
dGhhdCBvbGRWYWx1ZSBpcyByZXR1cm5lZCB3aGVuIHJlcXVlc3RlZC4KK1BBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgor
UEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGNoYXJEYXRhTm9kZQorUEFTUyBtdXRhdGlvbnNb
MF0ub2xkVmFsdWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNoYXJhY3Rl
ckRhdGEiCitQQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgY2hhckRhdGFOb2RlCitQQVNTIG11
dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiYmFyIgorCitUZXN0aW5nIHRoYXQgb2xkVmFsdWUgaXMg
ZGVsaXZlcmVkIGFzIHJlcXVlc3RlZCAob3Igbm90KS4KK1BBU1MgbXV0YXRpb25zV2l0aE9sZFZh
bHVlLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBlIGlzICJj
aGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0ub2xkVmFsdWUgaXMg
ImZvbyIKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJjaGFyYWN0ZXJEYXRhIgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgbnVsbAor
CitBbiBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9ic2VydmF0aW9ucyB3aWxsIGdldCBjaGFyYWN0
ZXJEYXRhT2xkVmFsdWUgaWYgYW55IGVudHJpZXMgcmVxdWVzdCBpdC4KK1BBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgor
UEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hhcmFjdGVyZGF0
YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyZGZhYTY0NGE3ZmQxZjlkYzlhYWI2NmUwYTY4OTQ5YWUyMjE1
YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL29ic2VydmUtY2hhcmFjdGVyZGF0YS5odG1sCkBAIC0wLDAgKzEsMzI5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgbXV0YXRp
b25zOwordmFyIG11dGF0aW9uczI7Cit2YXIgbXV0YXRpb25zV2l0aE9sZFZhbHVlOwordmFyIGNh
bGxzOwordmFyIGNoYXJEYXRhTm9kZTsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgeworICAgIHZh
ciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAg
ICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY2hhcmFjdGVyRGF0YSBvYnNlcnZh
dGlvbi4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2Zv
byc7CisgICAgICAgIGNoYXJEYXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOworICAgICAgICBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg
ICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoY2hhckRhdGFOb2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOworICAgICAgICBjaGFyRGF0
YU5vZGUudGV4dENvbnRlbnQgPSAnYmFyJzsKKyAgICAgICAgc2V0VGltZW91dChjaGVja0Rpc2Nv
bm5lY3RBbmRNdXRhdGUsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrRGlzY29ubmVj
dEFuZE11dGF0ZSgpIHsKKyAgICAgICAgZGVidWcoJy4uLmNhbiBjaGFyYWN0ZXJEYXRhIGNoYW5n
ZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5s
ZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNo
YXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0Jywg
J2NoYXJEYXRhTm9kZScpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9i
c2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0g
J2Jheic7CisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tOb3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0
aXBsZSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tOb3REZWxpdmVyZWRBbmRNdXRh
dGVNdWx0aXBsZSgpIHsKKyAgICAgICAgZGVidWcoJy4uLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSBz
aG91bGQgcHJldmVudCBmdXJ0aGVyIGRlbGl2ZXJ5IG9mIG11dGF0aW9ucy4nKTsKKworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsKKyAgICAgICAgY2hhckRhdGFOb2RlID0g
ZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJE
YXRhTm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOworICAgICAgICBjaGFyRGF0YU5vZGUu
dGV4dENvbnRlbnQgPSAnZm9vJzsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0g
J2Jhcic7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBmaW5pc2goKSB7CisgICAgICAgIGRlYnVnKCcuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIgZGlzY29u
bmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLicpOworCisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1sxXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29u
bmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
fQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFdyb25nVHlwZSgpIHsKKyAgICB2
YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAg
ICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9ic2VydmluZyB3aXRob3V0IHNwZWNpZnlpbmcgImNo
YXJhY3RlckRhdGEiIGRvZXMgbm90IHJlc3VsdCBpbiBoZWFyaW5nIGFib3V0IGNoYXJhY3RlckRh
dGEgY2hhbmdlcy4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnRleHRDb250ZW50
ID0gJ2hlbGxvJzsKKyAgICAgICAgY2hhckRhdGFOb2RlID0gZGl2LmZpcnN0Q2hpbGQ7CisgICAg
ICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewor
ICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2
ZXIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZXM6IHRy
dWV9KTsKKyAgICAgICAgY2hhckRhdGFOb2RlID0gJ2dvb2RieWUnOworICAgICAgICBzZXRUaW1l
b3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29u
bmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
fQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE11bHRpcGxlT2JzZXJ2ZXJzKCkg
eworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworICAgIHZhciBvYnNlcnZlcjI7CisK
KyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtdWx0
aXBsZSBvYnNlcnZlcnMgY2FuIGJlIHJlZ2lzdGVyZWQgdG8gYSBnaXZlbiBub2RlIGFuZCBib3Ro
IHJlY2VpdmUgbXV0YXRpb25zLicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnRleHRD
b250ZW50ID0gJ2Zvbyc7CisgICAgICAgIGNoYXJEYXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOwor
ICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0p
IHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworICAgICAgICBvYnNl
cnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7CisgICAgICAg
ICAgICBtdXRhdGlvbnMyID0gbTsKKyAgICAgICAgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoY2hhckRhdGFOb2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOworICAgICAgICBvYnNlcnZl
cjIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7CisgICAgICAg
IGNoYXJEYXRhTm9kZS50ZXh0Q29udGVudCA9ICdiYXInOworICAgICAgICBzZXRUaW1lb3V0KGZp
bmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50YXJnZXQnLCAnY2hhckRhdGFOb2RlJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMyLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLnR5
cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBd
LnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgp
OworICAgICAgICBvYnNlcnZlcjIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rp
b24gdGVzdE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkKCkgeworICAgIHZhciBkaXYsIGRp
djIsIHN1YkRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7CisgICAgdmFyIGxpc3RlbmVyOworCisgICAg
ZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIG11dGF0aW9uIHJlY29y
ZHMgYXJlIGVucXVldWVkIGZvciBjaGFyYWN0ZXJEYXRhIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZp
ZWQgaXMgZGlzcGF0Y2hlZC4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBkaXYgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpKTsKKyAgICAgICAgZGl2MiA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworCisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHN1YkRpdi50ZXh0
Q29udGVudCA9ICdmb28nOworICAgICAgICBjaGFyRGF0YU5vZGUgPSBzdWJEaXYuZmlyc3RDaGls
ZDsKKworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisgICAg
ICAgIGxpc3RlbmVyID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZGl2Mi5zZXRBdHRyaWJ1
dGUoJ2JheicsICdiYXQnKTsKKyAgICAgICAgfQorCisgICAgICAgIGRpdi5hZGRFdmVudExpc3Rl
bmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCBsaXN0ZW5lcik7CisgICAgICAgIG9ic2VydmVyLm9i
c2VydmUoY2hhckRhdGFOb2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOworICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdjIsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CisKKyAgICAgICAgY2hhckRh
dGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7CisKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gs
IDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgZGl2LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIGxpc3RlbmVyKTsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkaXYpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAg
ICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFy
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0T2xkVmFsdWUoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2
YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rl
c3RpbmcgdGhhdCBvbGRWYWx1ZSBpcyByZXR1cm5lZCB3aGVuIHJlcXVlc3RlZC4nKTsKKyAgICAg
ICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIGRpdi50ZXh0Q29udGVudCA9ICdmb28nOworICAgICAgICBjaGFy
RGF0YU5vZGUgPSBkaXYuZmlyc3RDaGlsZDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRv
dy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlci5v
YnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWUsIGNoYXJhY3RlckRhdGFP
bGRWYWx1ZTogdHJ1ZX0pOworICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQgPSAnYmFy
JzsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jheic7CisgICAgICAgIHNl
dFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMV0udGFyZ2V0JywgJ2NoYXJEYXRhTm9kZScpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJiYXIiJyk7CisgICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPbGRWYWx1ZUFzUmVx
dWVzdGVkKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyV2l0aE9sZFZhbHVlOwor
ICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1
ZygnVGVzdGluZyB0aGF0IG9sZFZhbHVlIGlzIGRlbGl2ZXJlZCBhcyByZXF1ZXN0ZWQgKG9yIG5v
dCkuJyk7CisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG11dGF0aW9uc1dpdGhP
bGRWYWx1ZSA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgICAgICBkaXYudGV4dENvbnRlbnQgPSAnZm9vJzsKKyAgICAgICAgY2hhckRhdGFO
b2RlID0gZGl2LmZpcnN0Q2hpbGQ7CisgICAgICAgIG9ic2VydmVyV2l0aE9sZFZhbHVlID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAg
ICB3aW5kb3cubXV0YXRpb25zV2l0aE9sZFZhbHVlID0gbXV0YXRpb25zOworICAgICAgICB9KTsK
KyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
dXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cisg
ICAgICAgIH0pOworICAgICAgICBvYnNlcnZlcldpdGhPbGRWYWx1ZS5vYnNlcnZlKGNoYXJEYXRh
Tm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0p
OworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6
IHRydWV9KTsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7CisgICAg
ICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2go
KSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNXaXRoT2xkVmFsdWUubGVuZ3RoJywgJzEn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBlJywgJyJj
aGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVl
WzBdLm9sZFZhbHVlJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVu
Z3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFy
YWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywg
J251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXJXaXRoT2xkVmFsdWUuZGlzY29ubmVjdCgpOworICAg
ICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAg
cnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0
T2xkVmFsdWVVbmlvbk11bHRpcGxlT2JzZXJ2YXRpb25zKCkgeworICAgIHZhciBkaXY7CisgICAg
dmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdB
biBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9ic2VydmF0aW9ucyB3aWxsIGdldCBjaGFyYWN0ZXJE
YXRhT2xkVmFsdWUgaWYgYW55IGVudHJpZXMgcmVxdWVzdCBpdC4nKTsKKyAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIGRpdi50ZXh0Q29udGVudCA9ICdmb28nOworICAgICAgICBjaGFyRGF0YU5vZGUg
PSBkaXYuZmlyc3RDaGlsZDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlv
bnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwge2NoYXJhY3RlckRhdGE6IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZSwgc3Vi
dHJlZTogdHJ1ZX0pOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2No
YXJhY3RlckRhdGE6IHRydWV9KTsKKyAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0g
J2Jhcic7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRh
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7
CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAg
ICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK3ZhciB0ZXN0
cyA9IFsKKyAgICB0ZXN0QmFzaWMsCisgICAgdGVzdFdyb25nVHlwZSwKKyAgICB0ZXN0TXVsdGlw
bGVPYnNlcnZlcnMsCisgICAgdGVzdE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkLAorICAg
IHRlc3RPbGRWYWx1ZSwKKyAgICB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCwKKyAgICB0ZXN0T2xk
VmFsdWVVbmlvbk11bHRpcGxlT2JzZXJ2YXRpb25zCitdOwordmFyIHRlc3RJbmRleCA9IDA7CisK
K2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkgeworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5n
dGgpCisgICAgICAgIHRlc3RzW3Rlc3RJbmRleCsrXSgpOworICAgIGVsc2UKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIub2JzZXJ2ZSBvbiBDaGFyYWN0ZXJEYXRhIG5vZGVzJyk7CisKK2lmICghd2luZG93LldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hpbGRMaXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1jaGlsZExpc3Qt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YmIyNzY0MmYxZDQ2YmVmYmMyZDAwZmIxYWU1OWQ4
ZTA3N2QyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL29ic2VydmUtY2hpbGRMaXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0IEBA
CitUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBhdHRyaWJ1dGVzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGNo
aWxkTGlzdCBvYnNlcnZhdGlvbi4KKy4uLmNhbiBjaGlsZExpc3QgY2hhbmdlcyBiZSBvYnNlcnZl
ZCBhdCBhbGwKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50
eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBp
cyAxCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdIGlzIHJlbW92ZWREaXYxCisuLi5v
YnNlcnZlci5kaXNjb25uZWN0KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxpdmVyeSBvZiBt
dXRhdGlvbnMuCitQQVNTIG11dGF0aW9ucyBpcyBudWxsCisuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIg
ZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLgorUEFTUyBtdXRhdGlvbnMu
bGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1Mg
bXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWREaXYxCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlz
ICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEK
K1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MgorCitUZXN0
aW5nIHRoYXQgb2JzZXJ2aW5nIHdpdGhvdXQgc3BlY2lmeWluZyAiY2hpbGRMaXN0IiBkb2VzIG5v
dCByZXN1bHQgaW4gaGVhcmluZyBhYm91dCBjaGlsZExpc3QgY2hhbmdlcy4KK1BBU1MgbXV0YXRp
b25zIGlzIG51bGwKKworVGVzdGluZyB0aGF0IHJlLW9ic2VydmluZyB0aGUgc2FtZSBub2RlIHdp
dGggdGhlIHNhbWUgb2JzZXJ2ZXIgaGFzIHRoZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIHRoZSBvcHRp
b25zLgorUEFTUyBjYWxscyBpcyAxCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAor
CitUZXN0aW5nIHRoYXQgbXVsdGlwbGUgb2JzZXJ2ZXJzIGNhbiBiZSByZWdpc3RlcmVkIHRvIGEg
Z2l2ZW4gbm9kZSBhbmQgYm90aCByZWNlaXZlIG11dGF0aW9ucy4KK1BBU1MgbXV0YXRpb25zLmxl
bmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11
dGF0aW9uczIubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zMlswXS50eXBlIGlzICJjaGlsZExp
c3QiCisKK1Rlc3RpbmcgdGhhdCBpbm5lclRleHQgYW5kIGlubmVySFRNTCBhbHdheXMgcmVzdWx0
IGluIGEgc2luZ2xlIGNoaWxkTGlzdCBtdXRhdGlvbi4KKy4uLmlubmVySFRNTAorUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxkTGlzdCIK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25z
WzBdLmFkZGVkTm9kZXNbMF0gaXMgYWRkZWREaXYxCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5v
ZGVzWzFdIGlzIGFkZGVkRGl2MgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1syXSBpcyBh
ZGRlZERpdjMKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMgorUEFT
UyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWREaXYxCitQQVNTIG11dGF0
aW9uc1swXS5yZW1vdmVkTm9kZXNbMV0gaXMgcmVtb3ZlZERpdjIKKy4uLmlubmVyVGV4dAorUEFT
UyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxk
TGlzdCIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMworCitUZXN0aW5nIHRoYXQgcmVwbGFj
ZUNoaWxkIHJlc3VsdHMgaW4gbWluaW1hbCBjaGlsZExpc3QgbXV0YXRpb25zLgorLi4uc2ltcGxl
IHJlcGxhY2UgY2hpbGQKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9u
c1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxl
bmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdIGlzIGFkZGVkRGl2MQor
UEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9u
c1swXS5yZW1vdmVkTm9kZXNbMF0gaXMgcmVtb3ZlZERpdjEKKy4uLnJlcGxhY2Ugd2l0aCBEb2N1
bWVudEZyYWdtZW50CitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNb
MF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5n
dGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXSBpcyBhZGRlZERpdjEKK1BB
U1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMV0gaXMgYWRkZWREaXYyCitQQVNTIG11dGF0aW9u
c1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXSBpcyByZW1vdmVkRGl2MQorCitUZXN0aW5nIHRoYXQgaW5zZXJ0QmVmb3JlIHJlc3Vs
dHMgaW4gbWluaW1hbCBjaGlsZExpc3QgbXV0YXRpb25zLgorUEFTUyBtdXRhdGlvbnMubGVuZ3Ro
IGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRp
b25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXNbMF0gaXMgYWRkZWREaXYxCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzFdIGlzIGFk
ZGVkRGl2MgorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCisKK1Rl
c3RpbmcgdGhhdCBhcHBlbmRDaGlsZCByZXN1bHRzIGluIG1pbmltYWwgY2hpbGRMaXN0IG11dGF0
aW9ucy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAy
CitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdIGlzIGFkZGVkRGl2MQorUEFTUyBtdXRh
dGlvbnNbMF0uYWRkZWROb2Rlc1sxXSBpcyBhZGRlZERpdjIKK1BBU1MgbXV0YXRpb25zWzBdLnJl
bW92ZWROb2Rlcy5sZW5ndGggaXMgMAorCitTZXR0aW5nIGFuIGVtcHR5IGNoaWxkbGlzdCB0byB0
aGUgZW1wdHkgc3RyaW5nIHdpdGggaW5uZXJIVE1MIHNob3VsZCBub3QgYXNzZXJ0LgorUEFTUyBt
dXRhdGlvbnMgaXMgbnVsbAorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9vYnNlcnZlLWNoaWxkTGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9vYnNlcnZlLWNoaWxkTGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxYzU4NDI2
NjA0NWRkZDQzYTgyYTY0M2RiYjk5MzEyMzMxNjdhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtY2hpbGRMaXN0Lmh0bWwK
QEAgLTAsMCArMSw0MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPWRlc2NyaXB0aW9uPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIG11dGF0aW9ucywgbXV0YXRpb25z
MjsKK3ZhciBjYWxsczsKK3ZhciBkaXYsIHJlbW92ZWREaXYxLCByZW1vdmVkRGl2MiwgYWRkZWRE
aXYxLCBhZGRlZERpdjIsIGFkZGVkRGl2MzsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgeworICAg
IHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7Cisg
ICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY2hpbGRMaXN0IG9ic2VydmF0
aW9uLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07
CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlz
dDogdHJ1ZSB9KTsKKyAgICAgICAgcmVtb3ZlZERpdjEgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRGlzY29u
bmVjdEFuZE11dGF0ZSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tEaXNjb25uZWN0
QW5kTXV0YXRlKCkgeworICAgICAgICBkZWJ1ZygnLi4uY2FuIGNoaWxkTGlzdCBjaGFuZ2VzIGJl
IG9ic2VydmVkIGF0IGFsbCcpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExp
c3QiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgn
LCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0nLCAn
cmVtb3ZlZERpdjEnKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNl
cnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIHJlbW92ZWREaXYxID0gZGl2LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2V0VGltZW91dChjaGVj
a05vdERlbGl2ZXJlZEFuZE11dGF0ZU11bHRpcGxlLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjaGVja05vdERlbGl2ZXJlZEFuZE11dGF0ZU11bHRpcGxlKCkgeworICAgICAgICBkZWJ1Zygn
Li4ub2JzZXJ2ZXIuZGlzY29ubmVjdCgpIHNob3VsZCBwcmV2ZW50IGZ1cnRoZXIgZGVsaXZlcnkg
b2YgbXV0YXRpb25zLicpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcp
OworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUgfSk7Cisg
ICAgICAgIHJlbW92ZWREaXYxID0gZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxkKTsKKyAg
ICAgICAgcmVtb3ZlZERpdjIgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpOworICAg
ICAgICBzZXRUaW1lb3V0KGZpbmlzaCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkg
eworICAgICAgICBkZWJ1ZygnLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5lY3Qgd29ya3Mg
d2l0aCB0aGUgc2FtZSBvYnNlcnZlci4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICci
Y2hpbGRMaXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rl
cy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXScsICdyZW1vdmVkRGl2MScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFd
LnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5y
ZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sx
XS5yZW1vdmVkTm9kZXNbMF0nLCAncmVtb3ZlZERpdjInKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7Cisg
ICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFdyb25nVHlwZSgpIHsKKyAg
ICB2YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewor
ICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9ic2VydmluZyB3aXRob3V0IHNwZWNpZnlpbmcg
ImNoaWxkTGlzdCIgZG9lcyBub3QgcmVzdWx0IGluIGhlYXJpbmcgYWJvdXQgY2hpbGRMaXN0IGNo
YW5nZXMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0g
bTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmli
dXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2V0VGltZW91dChm
aW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3Qo
KTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKwor
ICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZVJlZ2lzdHJhdGlvbigpIHsK
KyAgICB2YXIgZGl2OworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
eworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHJlLW9ic2VydmluZyB0aGUgc2FtZSBub2Rl
IHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIgaGFzIHRoZSBlZmZlY3Qgb2YgcmVzZXR0aW5nIHRoZSBv
cHRpb25zLicpOworCisgICAgICAgIGNhbGxzID0gMDsKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
IG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAg
ICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgICAgIGNhbGxzKys7CisgICAgICAgIH0p
OworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSwgY2hh
cmFjdGVyRGF0YTogdHJ1ZSB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hp
bGRMaXN0OiB0cnVlIH0pOworICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpOworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRGlzY29ubmVjdEFuZE11
dGF0ZSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRl
KCkgeworICAgICAgICBzaG91bGRCZSgnY2FsbHMnLCAnMScpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dHlwZScsICciY2hpbGRMaXN0IicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6
IHRydWUgfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRy
dWUgfSk7CisgICAgICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOwor
ICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0
ZXN0TXVsdGlwbGVPYnNlcnZlcnMoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIgb2JzZXJ2ZXI7
CisgICAgdmFyIG9ic2VydmVyMjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBk
ZWJ1ZygnVGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0
byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuJyk7CisgICAgICAgIG11
dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworICAgICAg
ICBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Cisg
ICAgICAgICAgICBtdXRhdGlvbnMyID0gbTsKKyAgICAgICAgfSk7CisgICAgICAgIG9ic2VydmVy
Lm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKKyAgICAgICAgb2JzZXJ2ZXIyLm9i
c2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2V0VGltZW91dChmaW5p
c2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczIu
bGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0udHlwZScsICci
Y2hpbGRMaXN0IicpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIG9i
c2VydmVyMi5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4
dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0SW5uZXJI
VE1MQW5kSW5uZXJUZXh0KCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOworCisg
ICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgaW5uZXJU
ZXh0IGFuZCBpbm5lckhUTUwgYWx3YXlzIHJlc3VsdCBpbiBhIHNpbmdsZSBjaGlsZExpc3QgbXV0
YXRpb24uJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPHNw
YW4+Rm9vPC9zcGFuPjxkaXY+QmFyPC9kaXY+JzsKKyAgICAgICAgcmVtb3ZlZERpdjEgPSBkaXYu
Zmlyc3RDaGlsZDsKKyAgICAgICAgcmVtb3ZlZERpdjIgPSByZW1vdmVkRGl2MS5uZXh0U2libGlu
ZzsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtKSB7CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUgfSk7CisgICAgICAgIGRp
di5pbm5lckhUTUwgPSAnZm9vPGltZyBzcmM9ImJhci5wbmciPjxwPkJhejwvcD4nOworICAgICAg
ICBhZGRlZERpdjEgPSBkaXYuY2hpbGROb2Rlc1swXTsKKyAgICAgICAgYWRkZWREaXYyID0gZGl2
LmNoaWxkTm9kZXNbMV07CisgICAgICAgIGFkZGVkRGl2MyA9IGRpdi5jaGlsZE5vZGVzWzJdOwor
ICAgICAgICBzZXRUaW1lb3V0KGNoZWNrSW5uZXJIVE1MLCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBjaGVja0lubmVySFRNTCgpIHsKKyAgICAgICAgZGVidWcoJy4uLmlubmVySFRNTCcpOwor
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMycpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0nLCAnYWRkZWREaXYxJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXScsICdhZGRlZERpdjInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzJdJywgJ2FkZGVkRGl2Mycp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAn
MicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXScsICdy
ZW1vdmVkRGl2MScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rl
c1sxXScsICdyZW1vdmVkRGl2MicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAg
ICAgIGRpdi5pbm5lclRleHQgPSAnZm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVidWcoJy4uLmlu
bmVyVGV4dCcpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMScpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMycp
OworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAg
ICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlv
biB0ZXN0UmVwbGFjZUNoaWxkKCkgeworICAgIHZhciBkaXY7CisgICAgdmFyIG9ic2VydmVyOwor
ICAgIHZhciBmcmFnbWVudDsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1
ZygnVGVzdGluZyB0aGF0IHJlcGxhY2VDaGlsZCByZXN1bHRzIGluIG1pbmltYWwgY2hpbGRMaXN0
IG11dGF0aW9ucy4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LmlubmVySFRNTCA9
ICc8c3Bhbj5Gb288L3NwYW4+PGRpdj5CYXI8L2Rpdj4nOworICAgICAgICByZW1vdmVkRGl2MSA9
IGRpdi5maXJzdENoaWxkOworCisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVl
IH0pOworICAgICAgICBhZGRlZERpdjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgZGl2LnJlcGxhY2VDaGlsZChhZGRlZERpdjEsIGRpdi5maXJzdENoaWxkKTsKKyAg
ICAgICAgc2V0VGltZW91dChjaGVja1JlcGxhY2VXaXRoTm9kZSwgMCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tSZXBsYWNlV2l0aE5vZGUoKSB7CisgICAgICAgIGRlYnVnKCcuLi5zaW1w
bGUgcmVwbGFjZSBjaGlsZCcpOworCisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExp
c3QiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgn
LCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0nLCAn
YWRkZWREaXYxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVz
Lmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5v
ZGVzWzBdJywgJ3JlbW92ZWREaXYxJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAg
ICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAg
ICAgIGFkZGVkRGl2MSA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpKTsKKyAgICAgICAgYWRkZWREaXYyID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICByZW1vdmVkRGl2MSA9IGRpdi5m
aXJzdENoaWxkOworCisgICAgICAgIGRpdi5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQsIHJlbW92ZWRE
aXYxKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4ucmVwbGFjZSB3aXRoIERvY3VtZW50
RnJhZ21lbnQnKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRMaXN0IicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdJywgJ2FkZGVkRGl2
MScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMV0nLCAnYWRk
ZWREaXYyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxl
bmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVz
WzBdJywgJ3JlbW92ZWREaXYxJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwor
ICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAg
c3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdEluc2VydEJlZm9yZSgpIHsKKyAgICB2YXIgZGl2
OworICAgIHZhciBvYnNlcnZlcjsKKyAgICB2YXIgZnJhZ21lbnQ7CisKKyAgICBmdW5jdGlvbiBz
dGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBpbnNlcnRCZWZvcmUgcmVzdWx0
cyBpbiBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMuJyk7CisKKyAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPHNwYW4+Rm9vPC9zcGFuPic7CisgICAgICAgIGZyYWdt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICBhZGRlZERp
djEgPSBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7
CisgICAgICAgIGFkZGVkRGl2MiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpKTsKKworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAg
ICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1
ZSB9KTsKKyAgICAgICAgZGl2Lmluc2VydEJlZm9yZShmcmFnbWVudCwgZGl2LmZpcnN0Q2hpbGQp
OworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisKKyAgICBmdW5jdGlv
biBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0nLCAnYWRkZWREaXYx
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXScsICdhZGRl
ZERpdjInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVu
Z3RoJywgJzAnKTsKKworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRl
YnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOwor
fQorCitmdW5jdGlvbiB0ZXN0QXBwZW5kQ2hpbGQoKSB7CisgICAgdmFyIGRpdjsKKyAgICB2YXIg
b2JzZXJ2ZXI7CisgICAgdmFyIGZyYWdtZW50OworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7Cisg
ICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgYXBwZW5kQ2hpbGQgcmVzdWx0cyBpbiBtaW5pbWFs
IGNoaWxkTGlzdCBtdXRhdGlvbnMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAg
ICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5p
bm5lckhUTUwgPSAnPHNwYW4+Rm9vPC9zcGFuPic7CisgICAgICAgIGZyYWdtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICBhZGRlZERpdjEgPSBmcmFnbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIGFk
ZGVkRGl2MiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKKworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisg
ICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKKyAgICAg
ICAgZGl2LmFwcGVuZENoaWxkKGZyYWdtZW50KTsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gs
IDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5h
ZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlc1swXScsICdhZGRlZERpdjEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5hZGRlZE5vZGVzWzFdJywgJ2FkZGVkRGl2MicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworCisgICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbm5lckhUTUxFbXB0
eSgpIHsKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1NldHRpbmcgYW4g
ZW1wdHkgY2hpbGRsaXN0IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2l0aCBpbm5lckhUTUwgc2hvdWxk
IG5vdCBhc3NlcnQuJyk7CisKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAg
ICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisgICAgICAg
IG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CisgICAgICAgIGRpdi5p
bm5lckhUTUwgPSAnJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdtdXRhdGlvbnMn
KTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKwor
ICAgIHN0YXJ0KCk7Cit9CisKK3ZhciB0ZXN0cyA9IFt0ZXN0QmFzaWMsIHRlc3RXcm9uZ1R5cGUs
IHRlc3RNdWx0aXBsZVJlZ2lzdHJhdGlvbiwgdGVzdE11bHRpcGxlT2JzZXJ2ZXJzLCB0ZXN0SW5u
ZXJIVE1MQW5kSW5uZXJUZXh0LCB0ZXN0UmVwbGFjZUNoaWxkLCB0ZXN0SW5zZXJ0QmVmb3JlLCB0
ZXN0QXBwZW5kQ2hpbGQsIHRlc3RJbm5lckhUTUxFbXB0eV07Cit2YXIgdGVzdEluZGV4ID0gMDsK
KyAKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkgeworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5s
ZW5ndGgpCisgICAgICAgIHRlc3RzW3Rlc3RJbmRleCsrXSgpOworICAgIGVsc2UKKyAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9uKCdUZXN0IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIub2JzZXJ2ZSBvbiBhdHRyaWJ1dGVzLicpOworCitpZiAoIXdpbmRvdy5XZWJLaXRNdXRh
dGlvbk9ic2VydmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1bk5leHRUZXN0KCk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNjgzYWQ4YjYzZGFiZWQ0YjYzM2IwOTUyN2I5NWQ1ZDEy
Y2E4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL29ic2VydmUtZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAor
VGVzdCB0aGF0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSB0aHJvd3MgZXhjZXB0aW9u
cyBhcHByb3ByaWF0ZWx5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG9i
c2VydmVyLm9ic2VydmUoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFy
Z3VtZW50cy4KK1BBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZShudWxsKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZSh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgor
UEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHkpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3Vt
ZW50LmJvZHksIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBF
eGNlcHRpb24gMTIuCitQQVNTIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgdW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEy
LgorUEFTUyBvYnNlcnZlci5vYnNlcnZlKG51bGwsIHthdHRyaWJ1dGVzOiB0cnVlfSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOb3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDguCitQQVNTIG9i
c2VydmVyLm9ic2VydmUodW5kZWZpbmVkLCB7YXR0cmlidXRlczogdHJ1ZX0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4LgorUEFTUyBvYnNlcnZl
ci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlfSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1Mgb2JzZXJ2ZXIub2Jz
ZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTog
dHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24g
MTIuCitQQVNTIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2F0dHJpYnV0ZXM6IHRy
dWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG9ic2VydmVyLm9ic2VydmUoZG9j
dW1lbnQuYm9keSwge2NoYXJhY3RlckRhdGE6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWyJpZCJd
fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtZXhj
ZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNl
cnZlLWV4Y2VwdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjU2MWQ0MWEyZDg0NGZjZWM2YWYwOTA2
NDRlZTU1YTNkYjViYjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWV4Y2VwdGlvbnMuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD1kZXNjcmlwdGlvbj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgd2luZG93Lm9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24obXV0YXRpb25zKSB7IH0pOworICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNl
cnZlKCknKTsKKyAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShudWxsKScpOworICAg
IHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKHVuZGVmaW5lZCknKTsKKyAgICBzaG91bGRU
aHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KScpOworICAgIHNob3VsZFRocm93
KCdvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIG51bGwpJyk7CisgICAgc2hvdWxkVGhy
b3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgdW5kZWZpbmVkKScpOworICAgIHNo
b3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKG51bGwsIHthdHRyaWJ1dGVzOiB0cnVlfSknKTsK
KyAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZSh1bmRlZmluZWQsIHthdHRyaWJ1dGVz
OiB0cnVlfSknKTsKKyAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5i
b2R5LCB7c3VidHJlZTogdHJ1ZX0pJyk7CisgICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2Vy
dmUoZG9jdW1lbnQuYm9keSwge2NoaWxkTGlzdDogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRy
dWV9KScpOworICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHks
IHthdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6IHRydWV9KScpOworICAg
IHNob3VsZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGFyYWN0ZXJE
YXRhOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsiaWQiXX0pJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCdUZXN0IHRoYXQgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5vYnNlcnZlIHRocm93cyBleGNlcHRp
b25zIGFwcHJvcHJpYXRlbHknKTsKKworaWYgKCF3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZl
cikKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUyknKTsKK2Vsc2UKKyAgICBydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9vYnNlcnZlLXN1YnRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLXN1YnRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4OTRkY2RhMWIzZjZkMmQzNDliZDdjNGE5YTRjZDA2OWE0ZTY5ZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtc3VidHJl
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4MSBAQAorVGVzdCBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyLm9ic2VydmUgb24gYSBzdWJ0cmVlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2Ygc3VidHJlZSBvYnNlcnZhdGlvbi4KKy4uLmF0dHJp
YnV0ZSBhbmQgY2hhcmFjdGVyRGF0YSBjaGFuZ2VzIGluIHN1YnRyZWUKK1BBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFT
UyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlz
IG51bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCitQQVNTIG11
dGF0aW9uc1sxXS50YXJnZXQgaXMgc3ViRGl2LmZpcnN0Q2hpbGQKKworVGVzdGluZyB0d28gb2Jz
ZXJ2ZXJzIGF0IGRpZmZlcmVudCBkZXB0aHMuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQor
UEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBd
LnRhcmdldCBpcyBzdWJEaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZv
byIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCitQQVNTIG11
dGF0aW9uczIubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zMlswXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgorUEFTUyBtdXRhdGlvbnMyWzBdLnRhcmdldCBpcyBzdWJEaXYKK1BBU1MgbXV0YXRpb25z
MlswXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCitQQVNTIG11dGF0aW9uczJbMF0uYXR0cmlidXRl
TmFtZXNwYWNlIGlzIG51bGwKKworVGVzdGluZyBvbmUgb2JzZXJ2ZXIgYXQgdHdvIGRpZmZlcmVu
dCBkZXB0aHMuCitQQVNTIGNhbGxzIGlzIDEKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQ
QVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0u
dGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9v
IgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKworVGVzdGlu
ZyB0aGF0IHRyYW5zaWVudGx5IGRldGFjaGVkIG5vZGVzIGFyZSBzdGlsbCBvYnNlcnZlZCB2aWEg
c3VidHJlZS4KKy4uLmJvdGggY2hhbmdlcyBzaG91bGQgYmUgcmVjZWl2ZWQuIENoYW5nZSBkZXRh
Y2hlZCBzdWJEaXYgYWdhaW4uCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBtdXRh
dGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBp
cyBzdWJEaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKK1BBU1Mg
bXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1sxXS50YXJn
ZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJ0ZXN0Igor
Li4udHJhbnNpZW50IHN1YnRyZWUgb2JzZXJ2YXRpb24gd2FzIHN0b3BwZWQgYWZ0ZXIgZGVsaXZl
cnksIHNvIHN1YkRpdiBjaGFuZ2Ugc2hvdWxkIG5vdCBiZSByZWNlaXZlZC4gUmVhdHRhY2ggYW5k
IGNoYW5nZSBhZ2Fpbi4KK1BBU1MgbXV0YXRpb25zIGlzIG51bGwKKy4uLnJlYXR0YWNoZWQgc3Vi
dHJlZSBzaG91bGQgbm93IGJlIG9ic2VydmFibGUuIFRyeSBkZXRhY2hpbmcgYW5kIHJlLW9ic2Vy
dmluZy4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgorLi4uVGhlIGNoYW5nZSBtYWRl
IGJlZm9yZSByZS1vYnNlcnZpbmcgc2hvdWxkIGJlIHJlY2VpdmVkLCBidXQgbm90IHRoZSBvbmUg
YWZ0ZXIuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlw
ZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBzdWJEaXYu
Zmlyc3RDaGlsZAorCitUZXN0aW5nIGNvcnJlY3QgYmVoYXZpb3Igb2YgdHJhbnNpZW50IG9ic2Vy
dmF0aW9uIHdpdGggY29tcGxleCBtb3ZlbWVudCAuCisuLi5BbGwgY2hhbmdlcyBzaG91bGQgYmUg
cmVjZWl2ZWQgZXhjZXB0IGZvciBzZXR0aW5nIHRoZSAiZCIgYXR0cmlidXRlIG9uIHN1YkRpdjMg
YmVmb3JlIGl0IHdhcyByZWFjaGFibGUgZnJvbSBkaXYuCitQQVNTIG11dGF0aW9ucy5sZW5ndGgg
aXMgNgorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRp
b25zWzBdLnRhcmdldCBpcyBzdWJEaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUg
aXMgImEiCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRh
dGlvbnNbMV0udGFyZ2V0IGlzIHN1YkRpdjIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5h
bWUgaXMgImIiCitQQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgorUEFT
UyBtdXRhdGlvbnNbMl0udGFyZ2V0IGlzIHRleHQKK1BBU1MgbXV0YXRpb25zWzNdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1szXS50YXJnZXQgaXMgc3ViRGl2MgorUEFTUyBt
dXRhdGlvbnNbM10uYXR0cmlidXRlTmFtZSBpcyAiZSIKK1BBU1MgbXV0YXRpb25zWzRdLnR5cGUg
aXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1s0XS50YXJnZXQgaXMgc3ViRGl2MworUEFT
UyBtdXRhdGlvbnNbNF0uYXR0cmlidXRlTmFtZSBpcyAiZiIKK1BBU1MgbXV0YXRpb25zWzVdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1s1XS50YXJnZXQgaXMgc3ViRGl2Mgor
UEFTUyBtdXRhdGlvbnNbNV0uYXR0cmlidXRlTmFtZSBpcyAiZyIKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1zdWJ0cmVlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtc3VidHJlZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZiOGI4Y2FhMzJlMmM4MjFhNzU1Y2RmZjMwOTY2YWM1NzIwYWVkZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2Vy
dmUtc3VidHJlZS5odG1sCkBAIC0wLDAgKzEsMzA5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzx0aXRsZT48L3RpdGxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD1kZXNjcmlwdGlvbj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRh
dGlvbnM7Cit2YXIgbXV0YXRpb25zMjsKK3ZhciBkaXY7Cit2YXIgc3ViRGl2LCBzdWJEaXYyLCBz
dWJEaXYzLCB0ZXh0OwordmFyIGNhbGxzOworCitmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAg
dmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdU
ZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2Ygc3VidHJlZSBvYnNlcnZhdGlvbi4nKTsKKworICAgICAg
ICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc3ViRGl2LmlubmVySFRNTCA9ICdoZWxsbywgd29y
bGQnOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9u
czsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1
dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAg
IHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKKyAgICAgICAgc3ViRGl2LmZpcnN0
Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlz
aCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1Zygn
Li4uYXR0cmlidXRlIGFuZCBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMgaW4gc3VidHJlZScpOworCisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOworICAgICAg
ICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVu
TmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0TXVs
dGlwbGVPYnNlcnZlcnMoKSB7CisgICAgdmFyIG9ic2VydmVyOworICAgIHZhciBvYnNlcnZlcjI7
CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdHdvIG9i
c2VydmVycyBhdCBkaWZmZXJlbnQgZGVwdGhzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51
bGw7CisgICAgICAgIG11dGF0aW9uczIgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdp
bmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworICAgICAgICBvYnNlcnZl
cjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAg
ICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMyID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKwor
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6
IHRydWV9KTsKKyAgICAgICAgb2JzZXJ2ZXIyLm9ic2VydmUoc3ViRGl2LCB7YXR0cmlidXRlczog
dHJ1ZX0pOworICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7CisgICAg
ICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2go
KSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uczIubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uczJbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uczJbMF0udGFyZ2V0JywgJ3N1YkRpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zMlswXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMyWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVy
LmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgb2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAg
ZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZU9ic2VydmF0aW9ucygpIHsKKyAgICB2YXIgb2Jz
ZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3Rpbmcg
b25lIG9ic2VydmVyIGF0IHR3byBkaWZmZXJlbnQgZGVwdGhzLicpOworCisgICAgICAgIG11dGF0
aW9ucyA9IG51bGw7CisgICAgICAgIGNhbGxzID0gMDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3
aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICAgICAgKytjYWxsczsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVl
LCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoc3ViRGl2LCB7YXR0
cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOworICAgICAgICBzdWJEaXYuc2V0QXR0cmli
dXRlKCdmb28nLCAnYmFyJyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdjYWxscycsICcx
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAg
b2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5l
eHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFRyYW5z
aWVudERldGFjaGVkQmFzaWMoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24g
c3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgdHJhbnNpZW50bHkgZGV0YWNo
ZWQgbm9kZXMgYXJlIHN0aWxsIG9ic2VydmVkIHZpYSBzdWJ0cmVlLicpOworCisgICAgICAgIG11
dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2JykpOworICAgICAgICBzdWJEaXYuaW5uZXJIVE1MID0gJ2hlbGxvLCB3b3JsZCc7
CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwor
ICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6
IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICAgICAgc3Vi
RGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworICAgICAgICBkaXYucmVtb3ZlQ2hpbGQo
c3ViRGl2KTsKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgndGVzdCcsICd0ZXN0Jyk7Cisg
ICAgICAgIHNldFRpbWVvdXQoY2hlY2tEZWxpdmVyZWRBbmRDaGFuZ2VBZ2FpbiwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tEZWxpdmVyZWRBbmRDaGFuZ2VBZ2FpbigpIHsKKyAgICAg
ICAgZGVidWcoJy4uLmJvdGggY2hhbmdlcyBzaG91bGQgYmUgcmVjZWl2ZWQuIENoYW5nZSBkZXRh
Y2hlZCBzdWJEaXYgYWdhaW4uJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5n
dGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJp
YnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRp
dicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZv
byInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVz
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYnKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJ0ZXN0Iicp
OworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1
dGUoJ2ZvbycsICdiYXonKTsKKworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVk
QW5kUmVhdHRhY2gpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZlcmVkQW5k
UmVhdHRhY2goKSB7CisgICAgICAgIGRlYnVnKCcuLi50cmFuc2llbnQgc3VidHJlZSBvYnNlcnZh
dGlvbiB3YXMgc3RvcHBlZCBhZnRlciBkZWxpdmVyeSwgc28gc3ViRGl2IGNoYW5nZSBzaG91bGQg
bm90IGJlIHJlY2VpdmVkLiBSZWF0dGFjaCBhbmQgY2hhbmdlIGFnYWluLicpOworCisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51
bGwKKyAgICAgICAgZGl2LmFwcGVuZENoaWxkKHN1YkRpdik7CisgICAgICAgIHN1YkRpdi5zZXRB
dHRyaWJ1dGUoJ2ZvbycsICdiYXQnKTsKKworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRGVsaXZl
cmVkQW5kUmVvYnNlcnZlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0RlbGl2ZXJlZEFu
ZFJlb2JzZXJ2ZSgpIHsKKyAgICAgICAgZGVidWcoJy4uLnJlYXR0YWNoZWQgc3VidHJlZSBzaG91
bGQgbm93IGJlIG9ic2VydmFibGUuIFRyeSBkZXRhY2hpbmcgYW5kIHJlLW9ic2VydmluZy4nKTsK
KworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworCisgICAgICAgIG11dGF0
aW9ucyA9IG51bGw7CisgICAgICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOworICAgICAgICBz
dWJEaXYuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdiYWRieWUnOworICAgICAgICBvYnNlcnZl
ci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1
YnRyZWU6IHRydWV9KTsKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2Jvbycp
OworCisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoKTsKKyAgICB9CisKKworICAgIGZ1bmN0aW9u
IGZpbmlzaCgpIHsKKyAgICAgICAgZGVidWcoJy4uLlRoZSBjaGFuZ2UgbWFkZSBiZWZvcmUgcmUt
b2JzZXJ2aW5nIHNob3VsZCBiZSByZWNlaXZlZCwgYnV0IG5vdCB0aGUgb25lIGFmdGVyLicpOwor
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOworCisg
ICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAg
ICBydW5OZXh0VGVzdCgpOworICAgIH0KKyAgICBzdGFydCgpOworfQorCitmdW5jdGlvbiB0ZXN0
VHJhbnNpZW50RGV0YWNoZWREZXRhaWxlZCgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgY29ycmVjdCBiZWhhdmlv
ciBvZiB0cmFuc2llbnQgb2JzZXJ2YXRpb24gd2l0aCBjb21wbGV4IG1vdmVtZW50IC4nKTsKKwor
ICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc3ViRGl2MiA9IHN1YkRpdi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHN1YkRpdjIuaW5u
ZXJIVE1MID0gJ2hlbGxvLCB3b3JsZCc7CisgICAgICAgIHN1YkRpdjMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0
aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0
cnVlfSk7CisgICAgICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOworICAgICAgICBzdWJEaXYu
cmVtb3ZlQ2hpbGQoc3ViRGl2Mik7CisgICAgICAgIHRleHQgPSBzdWJEaXYyLnJlbW92ZUNoaWxk
KHN1YkRpdjIuZmlyc3RDaGlsZCk7CisKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnYScs
ICdhJyk7CisgICAgICAgIHN1YkRpdjIuc2V0QXR0cmlidXRlKCdiJywgJ2InKTsKKyAgICAgICAg
dGV4dC50ZXh0Q29udGVudCA9ICdjJzsKKyAgICAgICAgc3ViRGl2My5hcHBlbmRDaGlsZChzdWJE
aXYyKTsKKyAgICAgICAgc3ViRGl2My5zZXRBdHRyaWJ1dGUoJ2QnLCAnZCcpOworICAgICAgICBz
dWJEaXYyLnNldEF0dHJpYnV0ZSgnZScsICdlJyk7CisgICAgICAgIGRpdi5hcHBlbmRDaGlsZChz
dWJEaXYzKTsKKyAgICAgICAgc3ViRGl2My5zZXRBdHRyaWJ1dGUoJ2YnLCAnZicpOworICAgICAg
ICBzdWJEaXYyLnNldEF0dHJpYnV0ZSgnZycsICdnJyk7CisKKyAgICAgICAgc2V0VGltZW91dChm
aW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVi
dWcoJy4uLkFsbCBjaGFuZ2VzIHNob3VsZCBiZSByZWNlaXZlZCBleGNlcHQgZm9yIHNldHRpbmcg
dGhlICJkIiBhdHRyaWJ1dGUgb24gc3ViRGl2MyBiZWZvcmUgaXQgd2FzIHJlYWNoYWJsZSBmcm9t
IGRpdi4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc2Jyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYSInKTsKKworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFyZ2V0JywgJ3N1YkRpdjInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJiIicpOworCisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1syXS50YXJnZXQnLCAndGV4dCcpOworCisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbM10udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1szXS50YXJnZXQnLCAnc3ViRGl2MicpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzNdLmF0dHJpYnV0ZU5hbWUnLCAnImUiJyk7CisKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1s0XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzRdLnRhcmdldCcsICdzdWJEaXYzJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbNF0uYXR0cmlidXRlTmFtZScsICciZiInKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzVdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbNV0udGFyZ2V0JywgJ3N1YkRpdjInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1s1XS5hdHRyaWJ1dGVOYW1lJywgJyJnIicpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0K
KyAgICBzdGFydCgpOworfQorCit2YXIgdGVzdHMgPSBbdGVzdEJhc2ljLCB0ZXN0TXVsdGlwbGVP
YnNlcnZlcnMsIHRlc3RNdWx0aXBsZU9ic2VydmF0aW9ucywgdGVzdFRyYW5zaWVudERldGFjaGVk
QmFzaWMsIHRlc3RUcmFuc2llbnREZXRhY2hlZERldGFpbGVkXTsKK3ZhciB0ZXN0SW5kZXggPSAw
OworCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdHMu
bGVuZ3RoKQorICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAgICBlbHNlCisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdCBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyLm9ic2VydmUgb24gYSBzdWJ0cmVlJyk7CisKK2lmICghd2luZG93LldlYktpdE11dGF0
aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmVyLXdyYXBwZXIt
ZHJvcG9mZi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhjMGYyZTlkY2M2NDE2NWRkODJhN2Qx
MjRjNWYzMjllYzNiZTkzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACitNdXRhdGlvbk9ic2VydmVyIHdyYXBwZXJzIHNob3VsZCBzdXJ2aXZl
IEdDIGZvciBwYXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2ZW4gaWYgSlMgaGFzIGxvc3QgcmVm
ZXJlbmNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb2JzZXJ2ZXIu
dGVzdFByb3BlcnR5IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10cmFuc2llbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlci13cmFwcGVy
LWRyb3BvZmYtdHJhbnNpZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjNhNTUzZWMyMjM2
Y2MxZmVkZDMxZThlZGYxMWE0NDFjM2I2YmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtdHJh
bnNpZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitNdXRhdGlvbk9ic2VydmVyIHdy
YXBwZXJzIHNob3VsZCBzdXJ2aXZlIEdDIGZvciBwYXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2
ZW4gaWYgSlMgaGFzIGxvc3QgcmVmZXJlbmNlcyBhbmQgdGhlIG9ubHkgcmVtYWluaW5nIG9ic2Vy
dmF0aW9ucyBhcmUgdHJhbnNpZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBvYnNlcnZlci50ZXN0UHJvcGVydHkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5zaWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlci13
cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQzNmIyMjQzMDgyZDdk
NzI0MGYzNzFmZWE2ZWY4NmExM2E5Y2I3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRyYW5z
aWVudC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdNdXRhdGlvbk9ic2VydmVyIHdyYXBwZXJzIHNob3VsZCBzdXJ2aXZl
IEdDIGZvciBwYXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2ZW4gaWYgSlMgaGFzIGxvc3QgcmVm
ZXJlbmNlcyBhbmQgdGhlIG9ubHkgcmVtYWluaW5nIG9ic2VydmF0aW9ucyBhcmUgdHJhbnNpZW50
LicpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gYWRkT2JzZXJ2ZXIobm9k
ZSwgZm4pIHsKKyAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
bik7CisgICAgb2JzZXJ2ZXIudGVzdFByb3BlcnR5ID0gdHJ1ZTsKKyAgICBvYnNlcnZlci5vYnNl
cnZlKG5vZGUsIHthdHRyaWJ1dGVzOnRydWUsIHN1YnRyZWU6IHRydWV9KTsKK30KKworb25sb2Fk
ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB2YXIgY2hpbGQgPSByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKSk7CisgICAgYWRkT2JzZXJ2ZXIocm9vdCwgZnVuY3Rpb24ocmVjb3Jkcywg
b2JzZXJ2ZXIpIHsKKyAgICAgICAgd2luZG93Lm9ic2VydmVyID0gb2JzZXJ2ZXI7CisgICAgICAg
IHNob3VsZEJlKCdvYnNlcnZlci50ZXN0UHJvcGVydHknLCAndHJ1ZScpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9KTsKKworICAgIHJvb3QucmVtb3ZlQ2hpbGQoY2hpbGQpOworICAg
IGNoaWxkLnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOworICAgIHJvb3QgPSBudWxsOworCisg
ICAgZ2MoKTsKK307Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9w
b2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY3MzgxMmNiYTcyYzdlMTU1YjI1YTQ4NjIzZTJkZDEwODNl
NDcwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ011dGF0aW9uT2JzZXJ2
ZXIgd3JhcHBlcnMgc2hvdWxkIHN1cnZpdmUgR0MgZm9yIHBhc3NpbmcgaW50byB0aGUgY2FsbGJh
Y2sgZXZlbiBpZiBKUyBoYXMgbG9zdCByZWZlcmVuY2VzLicpOworCitqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworZnVuY3Rpb24gYWRkT2JzZXJ2ZXIobm9kZSwgZm4pIHsKKyAgICB2YXIgb2JzZXJ2
ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmbik7CisgICAgb2JzZXJ2ZXIudGVzdFBy
b3BlcnR5ID0gdHJ1ZTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHthdHRyaWJ1dGVzOnRy
dWV9KTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgYWRkT2JzZXJ2ZXIoZG9jdW1l
bnQuYm9keSwgZnVuY3Rpb24ocmVjb3Jkcywgb2JzZXJ2ZXIpIHsKKyAgICAgICAgd2luZG93Lm9i
c2VydmVyID0gb2JzZXJ2ZXI7CisgICAgICAgIHNob3VsZEJlKCdvYnNlcnZlci50ZXN0UHJvcGVy
dHknLCAndHJ1ZScpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKKworICAgIGdj
KCk7CisKKyAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgndG91Y2gnLCAndGhlIG5vZGUn
KTsKK307Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9yZW1vdmVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3JlbW92ZWQtb3V0LW9mLW9yZGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWRmYzAxMjZhZDhmNDExOTJjN2EwZGRhODI4ZjRlYmVk
ZmMyYWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9yZW1vdmVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBA
QAorVGVzdCBNdXRhdGlvbkV2ZW50cyBpbnRlcmZlcmluZyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJz
OiByZW1vdmluZyBub2RlcyAnb3V0IG9mIG9yZGVyJworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5n
dGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICdCJwor
UEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNb
MV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9k
ZXNbMF0udGFnTmFtZSBpcyAnQicKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFn
TmFtZSBpcyAnSScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L3JlbW92ZWQtb3V0LW9mLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL3JlbW92ZWQtb3V0LW9mLW9yZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxYmQ4MWE4
OTlkOTU1ZTVjY2Y0ZDhlN2FmZTk5NTg3YmIzMTJkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcmVtb3ZlZC1vdXQtb2Ytb3JkZXIuaHRt
bApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxkaXYgaWQ9InNhbmRib3giIHN0
eWxlPSJkaXNwbGF5Om5vbmUiPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qg
TXV0YXRpb25FdmVudHMgaW50ZXJmZXJpbmcgd2l0aCBNdXRhdGlvbk9ic2VydmVyczogcmVtb3Zp
bmcgbm9kZXMgJ291dCBvZiBvcmRlciciKTsKK3ZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NhbmRib3gnKTsKK3ZhciByZW1vdmVkID0gZmFsc2U7CitzYW5kYm94LmFkZEV2
ZW50TGlzdGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGZ1bmN0aW9uKCkgeworICAgIGlmICghcmVt
b3ZlZCkgeworICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7
CisgICAgICAgIHJlbW92ZWQgPSB0cnVlOworICAgIH0KK30pOwordmFyIG9ic2VydmVyID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt9KTsKK29ic2VydmVyLm9ic2VydmUo
c2FuZGJveCwge2NoaWxkTGlzdDogdHJ1ZX0pOworc2FuZGJveC5pbm5lckhUTUwgPSAnPGI+PC9i
PjxpPjwvaT4nOworCit2YXIgbXV0YXRpb25zID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKTsKK3No
b3VsZEJlKCJtdXRhdGlvbnMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlcy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5yZW1vdmVk
Tm9kZXMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sw
XS50YWdOYW1lIiwgIidCJyIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxl
bmd0aCIsICIxIik7CitzaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgi
LCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSIs
ICInQiciKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIiwg
IidJJyIpOworPC9zY3JpcHQ+Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRvdy1kb20tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3YTFjNTUxOGI3MzYzODUzN2Q4NGE1ZThlZmZjOTBkZmEyMjU3ZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3No
YWRvdy1kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgdGhhdCBNdXRhdGlv
bk9ic2VydmVycyBvcGVyYXRlIGluIFNoYWRvdyBET00KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK011dGF0aW9ucyBpbiBzaGFkb3cgRE9NIHNob3VsZCBoYXZlIGJlZW4gb2JzZXJ2
ZWQ6CitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgNAorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBp
cyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BB
U1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCitQQVNTIG11dGF0aW9uc1sz
XS50eXBlIGlzICJjaGlsZExpc3QiCisKK09ic2VydmluZyBmcm9tIG91dHNpZGUgc2hhZG93IERP
TSBzaG91bGQgbm90IHNlZSBtdXRhdGlvbnMgaW4gdGhlIHNoYWRvdzoKK1BBU1MgbXV0YXRpb25z
IGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3No
YWRvdy1kb20uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hh
ZG93LWRvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYzdkZGE5OWY1OThlZGZhMDkyYTBiNmU0MjQ3YTRj
OGNhNTc1YmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL3NoYWRvdy1kb20uaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxib2R5PgorPGlucHV0IHR5cGU9InJhbmdlIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgb3BlcmF0ZSBpbiBTaGFkb3cgRE9NJyk7CisK
K2Z1bmN0aW9uIGRvVGVzdCgpIHsKKyAgICBmdW5jdGlvbiBtdXRhdGUoZWx0KSB7CisgICAgICAg
IGVsdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZm9vJywgJ2JhcicpOworICAgICAgICBlbHQuaW5zZXJ0
QmVmb3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdoZWxsbycpLCBlbHQuZmlyc3RDaGlsZCk7
CisgICAgICAgIGVsdC5maXJzdENoaWxkLnRleHRDb250ZW50ID0gJ2dvb2RieWUnOworICAgICAg
ICBlbHQucmVtb3ZlQ2hpbGQoZWx0LmZpcnN0Q2hpbGQpOworICAgIH0KKworICAgIHZhciBzaGFk
b3dSb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5w
dXQnKSk7CisgICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7
CisgICAgfSk7CisKKyAgICBvYnNlcnZlci5vYnNlcnZlKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCwg
e2F0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSwg
c3VidHJlZTogdHJ1ZX0pOworICAgIG11dGF0ZShzaGFkb3dSb290LmZpcnN0Q2hpbGQpOworCisg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoJ011dGF0aW9ucyBpbiBz
aGFkb3cgRE9NIHNob3VsZCBoYXZlIGJlZW4gb2JzZXJ2ZWQ6Jyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFd
LnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50
eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzNd
LnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwor
CisgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlci5vYnNl
cnZlKGRvY3VtZW50LCB7YXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0
ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAgIG11dGF0ZShzaGFkb3dSb290
LmZpcnN0Q2hpbGQpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZGVidWcoJ1xuT2JzZXJ2aW5nIGZyb20gb3V0c2lkZSBzaGFkb3cgRE9NIHNob3VsZCBub3Qg
c2VlIG11dGF0aW9ucyBpbiB0aGUgc2hhZG93OicpOworICAgICAgICAgICAgc2hvdWxkQmVOdWxs
KCdtdXRhdGlvbnMnKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAw
KTsKKyAgICB9LCAwKTsKK30KKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBkb1Rlc3Qo
KTsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit9IGVsc2UKKyAgICB0ZXN0RmFp
bGVkKCdUaGlzIHRlc3Qgb25seSBydW5zIGluIERSVCcpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3Rha2VS
ZWNvcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvdGFrZVJlY29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNjQ0MjZhYjEzYWUyZTFj
OTAzOGRmYjYzYjc5MTJkM2EwNjVlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3Rha2VSZWNvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI0IEBACitUZXN0aW5nIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIudGFrZVJlY29yZHMKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgdGFrZVJlY29yZHMuCisuLi5y
ZWNvcmRzIGFyZSB0YWtlbiBzeW5jaHJvbm91c2x5LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlz
IDIKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9u
c1swXS50YXJnZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlz
ICJmb28iCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorUEFT
UyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKK1BBU1MgbXV0YXRpb25zWzFd
LnRhcmdldCBpcyBzdWJEaXYuZmlyc3RDaGlsZAorLi4udGFrZVJlY29yZCB0b29rIHJlY29yZHMs
IGJ1dCBkaWQgbm90IGNsZWFyIHRyYW5zaWVudCBvYnNlcnZlcnMKK1BBU1MgbXV0YXRpb25zLmxl
bmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBt
dXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZSBpcyAiZm9vIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci90YWtlUmVjb3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci90YWtlUmVjb3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZWJlOWRmMjkzMmNlY2Q4ZTdiMzkx
NWFlNzMxNmZkMzliYjA1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL3Rha2VSZWNvcmRzLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Cit2YXIgbXV0YXRpb25zOworCitmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAg
dmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdU
ZXN0aW5nIHRha2VSZWNvcmRzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAg
ICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBzdWJEaXYg
PSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAg
ICBzdWJEaXYuaW5uZXJIVE1MID0gJ2hlbGxvLCB3b3JsZCc7CisgICAgICAgIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAg
ICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGE6
IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9v
JywgJ2JhcicpOworICAgICAgICBzdWJEaXYuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29k
YnllISc7CisgICAgICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOworCisgICAgICAgIG11dGF0
aW9ucyA9IG9ic2VydmVyLnRha2VSZWNvcmRzKCk7CisKKyAgICAgICAgZGVidWcoJy4uLnJlY29y
ZHMgYXJlIHRha2VuIHN5bmNocm9ub3VzbHkuJyk7CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9ucy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0
JywgJ3N1YkRpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUn
LCAnImNoYXJhY3RlckRhdGEiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFy
Z2V0JywgJ3N1YkRpdi5maXJzdENoaWxkJyk7CisKKyAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0
ZSgnZm9vJywgJ2JheicpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4udGFrZVJlY29yZCB0
b29rIHJlY29yZHMsIGJ1dCBkaWQgbm90IGNsZWFyIHRyYW5zaWVudCBvYnNlcnZlcnMnKTsKKwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOworICAgICAgICBvYnNlcnZlci5k
aXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsK
KyAgICB9CisKKyAgICBzdGFydCgpOworfQorCit2YXIgdGVzdHMgPSBbdGVzdEJhc2ljXTsKK3Zh
ciB0ZXN0SW5kZXggPSAwOworCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVz
dEluZGV4IDwgdGVzdHMubGVuZ3RoKQorICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAg
ICBlbHNlCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdGlu
ZyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnRha2VSZWNvcmRzJyk7CisKK2lmICghd2luZG93Lldl
YktpdE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVz
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsK
KworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3RyYW5zaWVudC1nYy1jcmFzaC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3RyYW5zaWVudC1nYy1j
cmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYzAxZmE5ZDVhMDE2YjNlZGVjZmZlOGNi
YjhlNzc4MGY4ZmUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvdHJhbnNpZW50LWdjLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitDbGVhcmluZyB0cmFuc2llbnQgb2JzZXJ2ZXJzIGFmdGVyIG9ic2VydmF0aW9uIG5v
ZGUgaXMgR0NlZCBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2guCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvdHJhbnNpZW50LWdjLWNyYXNoLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3RyYW5zaWVudC1nYy1jcmFzaC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIzZWUyMzQ3ODA4ZDUxMTRiYzNhOTkxMWI0NWEwM2I4M2FlMjE1MmEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L3RyYW5zaWVudC1nYy1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2Rlc2NyaXB0aW9uKCdDbGVhcmluZyB0cmFuc2ll
bnQgb2JzZXJ2ZXJzIGFmdGVyIG9ic2VydmF0aW9uIG5vZGUgaXMgR0NlZCBzaG91bGQgbm90IGNh
dXNlIGEgY3Jhc2guJyk7CisKK2Z1bmN0aW9uIGNhbGxiYWNrKG11dGF0aW9ucykgeworICAgIHdp
bmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cit9Cit2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKK3ZhciBzcGFuID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKSk7CitvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRy
dWUsIHN1YnRyZWU6IHRydWV9KTsKK2Rpdi5yZW1vdmVDaGlsZChzcGFuKTsKK2RpdiA9IG51bGw7
CitnYygpOworc3Bhbi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKK3NldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZmYmJiMzNlZmJjZWQ0MzcxZmIxNzJhZjI2ZmQ0
YzEzOTg0MjBlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UZXN0IE11dGF0aW9uRXZlbnRzIGlu
dGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IGFkZGluZyBub2RlcyAnb3V0IG9mIG9y
ZGVyJwotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBtdXRhdGlvbnMubGVu
Z3RoIGlzIDMKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKLVBBU1Mg
bXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUgaXMgJ1NQQU4nCi1QQVNTIG11dGF0aW9uc1sxXS5hZGRl
ZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
IGlzIDAKLVBBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAnRElWJwot
UEFTUyBtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNb
Ml0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIG11dGF0aW9uc1syXS5hZGRlZE5vZGVz
WzBdLm5vZGVWYWx1ZSBpcyAnaGVsbG8gd29ybGQnCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA0M2U5YTQyNDc2NjFhNTE0ZTNiOTU5OTIxN2VhN2EwM2MwYWI1OTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGRpdiBpZD0ic2FuZGJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+
PHNwYW4+PC9zcGFuPjwvZGl2PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3QgTXV0YXRpb25F
dmVudHMgaW50ZXJmZXJpbmcgd2l0aCBNdXRhdGlvbk9ic2VydmVyczogYWRkaW5nIG5vZGVzICdv
dXQgb2Ygb3JkZXInIik7Ci12YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
YW5kYm94Jyk7Ci12YXIgaW5zZXJ0ZWQgPSBmYWxzZTsKLXNhbmRib3guYWRkRXZlbnRMaXN0ZW5l
cignRE9NTm9kZVJlbW92ZWQnLCBmdW5jdGlvbigpIHsKLSAgICBpZiAoIWluc2VydGVkKSB7Ci0g
ICAgICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OwotICAgICAgICBpbnNlcnRlZCA9IHRydWU7Ci0gICAgfQotfSk7Ci12YXIgb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe30pOwotb2JzZXJ2ZXIub2JzZXJ2
ZShzYW5kYm94LCB7Y2hpbGRMaXN0OiB0cnVlfSk7Ci1zYW5kYm94LnRleHRDb250ZW50ID0gJ2hl
bGxvIHdvcmxkJzsKLQotdmFyIG11dGF0aW9ucyA9IG9ic2VydmVyLnRha2VSZWNvcmRzKCk7Ci1z
aG91bGRCZSgibXV0YXRpb25zLmxlbmd0aCIsICIzIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzBd
LmFkZGVkTm9kZXMubGVuZ3RoIiwgIjAiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMF0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzBdLnJlbW92ZWROb2Rl
c1swXS50YWdOYW1lIiwgIidTUEFOJyIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5v
ZGVzLmxlbmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5s
ZW5ndGgiLCAiMCIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05h
bWUiLCAiJ0RJViciKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5sZW5ndGgi
LCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1syXS5yZW1vdmVkTm9kZXMubGVuZ3RoIiwgIjAi
KTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlc1swXS5ub2RlVmFsdWUiLCAiJ2hl
bGxvIHdvcmxkJyIpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL2NhbGxiYWNrLWFyZ3VtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL2NhbGxiYWNrLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg5ZTMyYzkyODQ5NjU3NjYxYWIwZTlhZTU5MzU0YTY1ODdhZGVlYzEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9jYWxsYmFjay1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMTEgKzAsMCBAQAotVmVyaWZpZXMgdGhhdCBNdXRhdGlvbk9ic2VydmVyIGlz
IHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgYXMgZXhwZWN0ZWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIHRoaXNBcmd1bWVudCBpcyBtdXRhdGlvbk9ic2VydmVyCi1QQVNT
IGFyZ3VtZW50MiBpcyBtdXRhdGlvbk9ic2VydmVyCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9jYWxsYmFjay1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vY2FsbGJhY2stYXJndW1lbnRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY3OGRkZDkyZDM1YTQ5ODQ4MjYwZDY3YzZlMjFlZWRhZDA3MWRkNjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9jYWxsYmFjay1hcmd1bWVudHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci1kZXNjcmlwdGlvbignVmVyaWZpZXMgdGhhdCBNdXRhdGlvbk9ic2VydmVyIGlzIHBh
c3NlZCB0byB0aGUgY2FsbGJhY2sgYXMgZXhwZWN0ZWQuJyk7Ci0KLWZ1bmN0aW9uIG11dGF0aW9u
Q2FsbGJhY2sobXV0YXRpb25zLCBvYnNlcnZlcikgewotICAgIHdpbmRvdy50aGlzQXJndW1lbnQg
PSB0aGlzOwotICAgIHdpbmRvdy5hcmd1bWVudDIgPSBvYnNlcnZlcjsKLSAgICBzaG91bGRCZSgn
dGhpc0FyZ3VtZW50JywgJ211dGF0aW9uT2JzZXJ2ZXInKTsKLSAgICBzaG91bGRCZSgnYXJndW1l
bnQyJywgJ211dGF0aW9uT2JzZXJ2ZXInKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLXZhciBt
dXRhdGlvbk9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25DYWxs
YmFjayk7Ci12YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci1tdXRhdGlv
bk9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwotZGl2LnNldEF0dHJp
YnV0ZSgnZm9vJywgJ2JhcicpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY2xlYXItdHJhbnNpZW50LXdp
dGhvdXQtZGVsaXZlcnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwZjRkMjE1MjcwYTFlOTcwYTIzYWU2MWEwYzQ5MjNmOTJjMDQ5OGI1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vY2xlYXItdHJhbnNpZW50LXdpdGhvdXQtZGVsaXZlcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVHJhbnNpZW50IHJlZ2lzdHJhdGlvbnMgc2hvdWxkIGJl
IGNsZWFyZWQgZXZlbiB3aXRob3V0IGRlbGl2ZXJ5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyBtdXRhdGlvbnNEZWxpdmVyZWQgaXMgZmFsc2UKLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2ZXJ5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2NsZWFyLXRyYW5zaWVudC13aXRob3V0LWRlbGl2
ZXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZmVlODE3MjBlYmNkNzA5
ZTgwOTk5ZjRhOWJlMTI3MmNhYTg3ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jbGVhci10cmFuc2llbnQt
d2l0aG91dC1kZWxpdmVyeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0Pgotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotZGVzY3JpcHRpb24oJ1RyYW5zaWVu
dCByZWdpc3RyYXRpb25zIHNob3VsZCBiZSBjbGVhcmVkIGV2ZW4gd2l0aG91dCBkZWxpdmVyeS4n
KTsKLQotdmFyIG11dGF0aW9uc0RlbGl2ZXJlZCA9IGZhbHNlOwotZnVuY3Rpb24gY2FsbGJhY2so
bXV0YXRpb25zKSB7Ci0gICAgbXV0YXRpb25zRGVsaXZlcmVkID0gdHJ1ZTsKLX0KLXZhciBvYnNl
cnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTsKLQotdmFyIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotdmFyIHNwYW4gPSBkaXYuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKLW9ic2VydmVyLm9ic2VydmUoZGl2
LCB7YXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwotZGl2LnJlbW92ZUNoaWxkKHNw
YW4pOwotc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAvLyBCeSB0aGUgdGltZSB0aGlzIGZ1
bmN0aW9uIHJ1bnMgdGhlIHRyYW5zaWVudCByZWdpc3RyYXRpb24gc2hvdWxkIGJlIGNsZWFyZWQs
Ci0gICAgLy8gc28gd2UgZXhwZWN0IG5vdCB0byBiZSBub3RpZmllZCBvZiB0aGlzIGF0dHJpYnV0
ZSBtdXRhdGlvbi4KLSAgICBzcGFuLnNldEF0dHJpYnV0ZSgnYmFyJywgJ2JheicpOwotICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHNob3VsZEJlRmFsc2UoJ211dGF0aW9uc0Rl
bGl2ZXJlZCcpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCAwKTsKLX0sIDApOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2NyZWF0ZS1k
dXJpbmctZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9j
cmVhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTM4NmRmYWNkNWUxOGFmMmQ3MTJjNjk4YTkzODgzM2E5NzUyMWFjYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL2NyZWF0ZS1kdXJpbmctZGVsaXZlcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTQgKzAsMCBAQAotVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIGNyZWF0ZWQg
ZHVyaW5nIGRlbGl2ZXJ5IG11c3Qgd2FpdCBmb3IgdGhlIG5leHQgbG9vcC4KLQotT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgb3JkZXIubGVuZ3RoIGlzIDQKLVBBU1Mgb3JkZXJb
MF0gaXMgMQotUEFTUyBvcmRlclsxXSBpcyAyCi1QQVNTIG9yZGVyWzJdIGlzIDEKLVBBU1Mgb3Jk
ZXJbM10gaXMgMwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3JlYXRlLWR1cmlu
Zy1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcmVhdGUtZHVyaW5n
LWRlbGl2ZXJ5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZWUyNGU3MDgy
Y2Y4MWQ1YTVhNTQ5YzRjZDdiNGQyZGI4ZTIwMjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcmVhdGUtZHVy
aW5nLWRlbGl2ZXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZGVzY3Jp
cHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBjcmVhdGVkIGR1cmluZyBkZWxpdmVy
eSBtdXN0IHdhaXQgZm9yIHRoZSBuZXh0IGxvb3AuJyk7Ci1mdW5jdGlvbiBmaW5pc2goKSB7Ci0g
ICAgc2hvdWxkQmUoJ29yZGVyLmxlbmd0aCcsICc0Jyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzBd
JywgJzEnKTsKLSAgICBzaG91bGRCZSgnb3JkZXJbMV0nLCAnMicpOwotICAgIHNob3VsZEJlKCdv
cmRlclsyXScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzNdJywgJzMnKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdmFyIG9yZGVyID0gW107Ci12YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0KLXZhciBvYnNlcnZlcjM7Ci12YXIgb2JzZXJ2ZXIxID0gbmV3
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgb3JkZXIu
cHVzaCgxKTsKLSAgICBpZiAoIW9ic2VydmVyMykgewotICAgICAgICBvYnNlcnZlcjMgPSBuZXcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAg
IG9yZGVyLnB1c2goMyk7Ci0gICAgICAgIH0pOwotICAgICAgICBvYnNlcnZlcjMub2JzZXJ2ZShk
aXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2Zvbycs
ICdiYXonKTsKLSAgICB9Ci19KTsKLXZhciBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICBvcmRlci5wdXNoKDIpOwotfSk7Ci0K
LW9ic2VydmVyMS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLW9ic2VydmVyMi5v
YnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLWRpdi5zZXRBdHRyaWJ1dGUoJ2Zvbycs
ICdiYXInKTsKLXNldFRpbWVvdXQoZmluaXNoLCAwKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFlZDQzOTA0NzE4ODVkYWQ1ZDg2NjE0YzY1MmMw
ZWQ0ZjE2YjcxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVy
cyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3MgZG9jdW1lbnRzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1UZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY3Jvc3MtZG9jdW1lbnQgb2JzZXJ2
YXRpb24uCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBkaXYKLVBBU1Mg
bXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLQotVGVzdGluZyB0aGF0IHN1YnRyZWUgb2JzZXJ2YXRp
b24gd29ya3MgYWZ0ZXIgbm9kZSBpcyBtb3ZlZC4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAx
Ci1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNb
MF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAi
aWQiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNGVlN2YwY2ZjZDg3NGJlZGJmODhhOWZhZmE3YWJhOWYxODA0ZmExLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdD4KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotdmFyIG11dGF0aW9u
czsKLXZhciBkaXYsIHN1YkRpdjsKLQotZnVuY3Rpb24gdGVzdEJhc2ljKCkgewotICAgIHZhciBv
YnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGlu
ZyBiYXNpYyBhc3BlY3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLicpOwotCi0gICAg
ICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11
dGF0aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHth
dHRyaWJ1dGVzOiB0cnVlfSk7Ci0gICAgICAgIHZhciBuZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1l
bnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywgJycsIG51bGwpOwotICAgICAgICBuZXdEb2MuYXBw
ZW5kQ2hpbGQoZGl2KTsKLSAgICAgICAgZGl2LmlkID0gJ2Zvbyc7Ci0gICAgICAgIHNldFRpbWVv
dXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25u
ZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9
Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0U3VidHJlZSgpIHsKLSAgICB2YXIg
b2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3Rp
bmcgdGhhdCBzdWJ0cmVlIG9ic2VydmF0aW9uIHdvcmtzIGFmdGVyIG5vZGUgaXMgbW92ZWQuJyk7
Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5k
b3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZl
ci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAg
ICAgdmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCcn
LCAnJywgbnVsbCk7Ci0gICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChkaXYpOwotICAgICAgICBz
dWJEaXYuaWQgPSAnZm9vJzsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5s
ZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0
dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1
YkRpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAn
ImlkIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFj
ZScsICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVi
dWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19
Ci0KLXZhciB0ZXN0cyA9IFt0ZXN0QmFzaWMsIHRlc3RTdWJ0cmVlXTsKLXZhciB0ZXN0SW5kZXgg
PSAwOwotCi1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKLSAgICBpZiAodGVzdEluZGV4IDwgdGVz
dHMubGVuZ3RoKQotICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKLSAgICBlbHNlCi0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1kZXNjcmlwdGlvbignVGVzdCB0aGF0IE11dGF0aW9u
T2JzZXJ2ZXJzIG1vdmUgY29ycmVjdGx5IGFjcm9zcyBkb2N1bWVudHMnKTsKLQotaWYgKCF3aW5k
b3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcikKLSAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVx
dWlyZXMgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUyknKTsKLWVsc2UKLSAgICBydW5OZXh0VGVz
dCgpOwotCi08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kYXRhYmFzZS1jYWxsYmFjay1kZWxpdmVyeS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNGVmOTA0YjBiYjcy
ODMwOTE0OTUwZGVlNzg3NTkyNTAxNDI3YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kYXRhYmFzZS1jYWxs
YmFjay1kZWxpdmVyeS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBA
Ci1UZXN0aW5nIG11dGF0aW9ucyBhcmUgZGVsaXZlcmVkIGZvbGxvd2luZyBEYXRhYmFzZSB0cmFu
c2FjdGlvbiBjYWxsYmFja3MuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNT
IG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmli
dXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLQotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnkuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnku
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc5YTNmYWMyN2RkODdjYTk0NTlj
NjFjMTEyYTZjMjhjNDY2ZjYyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RhdGFiYXNlLWNhbGxiYWNrLWRl
bGl2ZXJ5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXZhciBtdXRhdGlvbnM7
Ci0KLWZ1bmN0aW9uIHRlc3REYXRhYmFzZSgpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBkYjsK
LSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgbXV0
YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rp
b24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0
YTogdHJ1ZSB9KTsKLQotICAgICAgICBkYiA9IG9wZW5EYXRhYmFzZSgnRGF0YWJhc2VNdXRhdGlv
bkRlbGl2ZXJ5JywgJzEuMCcsICcnLCAxKTsKLSAgICAgICAgZGIudHJhbnNhY3Rpb24obXV0YXRl
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtdXRhdGUoKSB7Ci0gICAgICAgIGRpdi5zZXRBdHRy
aWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZScsICciZm9vIicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAg
IGRlYnVnKCcnKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQo
KTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3RpbmcgbXV0YXRpb25zIGFyZSBkZWxpdmVyZWQgZm9s
bG93aW5nIERhdGFiYXNlIHRyYW5zYWN0aW9uIGNhbGxiYWNrcy4nKTsKLQotaWYgKCF3aW5kb3cu
V2ViS2l0TXV0YXRpb25PYnNlcnZlcikgewotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1
aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fSBlbHNlCi0gICAgdGVzdERhdGFiYXNlKCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGVsaXZlcnktb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9kZWxpdmVyeS1vcmRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZTcxNGViOTQ3NTY3NzZmMWVlZDVkYTNmNWIxYzRhOWUx
MTZjZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kZWxpdmVyeS1vcmRlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgYXJl
IGRlbGl2ZXJlZCB0byBpbiBvcmRlciBvZiBjcmVhdGlvbi4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1Mgb3JkZXIubGVuZ3RoIGlzIDEwCi1QQVNTIG9yZGVyWzBdIGlzIDAK
LVBBU1Mgb3JkZXJbMV0gaXMgMQotUEFTUyBvcmRlclsyXSBpcyAyCi1QQVNTIG9yZGVyWzNdIGlz
IDMKLVBBU1Mgb3JkZXJbNF0gaXMgNAotUEFTUyBvcmRlcls1XSBpcyA1Ci1QQVNTIG9yZGVyWzZd
IGlzIDYKLVBBU1Mgb3JkZXJbN10gaXMgNwotUEFTUyBvcmRlcls4XSBpcyA4Ci1QQVNTIG9yZGVy
WzldIGlzIDkKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RlbGl2ZXJ5LW9yZGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RlbGl2ZXJ5LW9yZGVyLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNTVjMGQ2MmI2NTM0OGQ5ZWFhM2MyYjUwNjdm
NWZhZmI4MmI0ZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kZWxpdmVyeS1vcmRlci5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci13aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWRlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25P
YnNlcnZlcnMgYXJlIGRlbGl2ZXJlZCB0byBpbiBvcmRlciBvZiBjcmVhdGlvbi4nKTsKLWZ1bmN0
aW9uIGZpbmlzaCgpIHsKLSAgICBzaG91bGRCZSgnb3JkZXIubGVuZ3RoJywgJzEwJyk7Ci0gICAg
c2hvdWxkQmUoJ29yZGVyWzBdJywgJzAnKTsKLSAgICBzaG91bGRCZSgnb3JkZXJbMV0nLCAnMScp
OwotICAgIHNob3VsZEJlKCdvcmRlclsyXScsICcyJyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzNd
JywgJzMnKTsKLSAgICBzaG91bGRCZSgnb3JkZXJbNF0nLCAnNCcpOwotICAgIHNob3VsZEJlKCdv
cmRlcls1XScsICc1Jyk7Ci0gICAgc2hvdWxkQmUoJ29yZGVyWzZdJywgJzYnKTsKLSAgICBzaG91
bGRCZSgnb3JkZXJbN10nLCAnNycpOwotICAgIHNob3VsZEJlKCdvcmRlcls4XScsICc4Jyk7Ci0g
ICAgc2hvdWxkQmUoJ29yZGVyWzldJywgJzknKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
dmFyIG9yZGVyID0gW107Ci12YXIgb2JzZXJ2ZXJzID0gW107Ci0KLWZ1bmN0aW9uIHNldFVwT3Jk
ZXJpbmcobnVtKSB7Ci0gICAgb2JzZXJ2ZXJzLnB1c2gobmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgIG9yZGVyLnB1c2gobnVtKTsKLSAgICB9
KSk7Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgIHNldFVwT3JkZXJp
bmcoaSk7Ci19Ci0KLXZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLW9i
c2VydmVyc1szXS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLW9ic2VydmVyc1sy
XS5vYnNlcnZlKGRpdiwge2NoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLW9i
c2VydmVyc1sxXS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLW9ic2VydmVyc1s3
XS5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOwotb2JzZXJ2ZXJzWzRdLm9ic2VydmUo
ZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwotb2JzZXJ2ZXJzWzldLm9ic2VydmUoZGl2LCB7YXR0
cmlidXRlczogdHJ1ZX0pOwotb2JzZXJ2ZXJzWzBdLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0
cnVlfSk7Ci1vYnNlcnZlcnNbNV0ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1v
YnNlcnZlcnNbNl0ub2JzZXJ2ZShkaXYsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0
cnVlfSk7Ci1vYnNlcnZlcnNbOF0ub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1k
aXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci1kaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ2hlbGxvJykpOwotZGl2LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAn
Z29vZGJ5ZSc7Ci1zZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGlzY29ubmVjdC1jYW5jZWwtcGVuZGluZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Rpc2Nvbm5lY3QtY2FuY2VsLXBl
bmRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjVkOTdl
NzUzMmQ2OGY2NjZlYmFlOWZhNWMwYTNjYWQzZmIxYjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZGlzY29u
bmVjdC1jYW5jZWwtcGVuZGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCAr
MCwwIEBACi1UZXN0IHRoYXQgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0IGNhbmNl
bHMgcGVuZGluZyBkZWxpdmVyeQotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotRGlz
Y29ubmVjdGluZyBzaG91bGQgY2FuY2VsIGFueSBwZW5kaW5nIGRlbGl2ZXJ5Li4uCi1QQVNTIG11
dGF0aW9ucyBpcyBudWxsCi0uLi5hbmQgcmUtb2JzZXJ2aW5nIHNob3VsZCBub3Qgc2VlIGFueSBv
ZiB0aGUgcHJldmlvdXNseS1nZW5lcmF0ZWQgcmVjb3Jkcy4KLVBBU1MgbXV0YXRpb25zLmxlbmd0
aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kaXNjb25uZWN0LWNhbmNlbC1wZW5kaW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRpbmcuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYyZmQ1MjllMzljNTFhYzdjNDY4Yzk5
YmVhMzcxMzc1MDE1NmFkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Rpc2Nvbm5lY3QtY2FuY2VsLXBlbmRp
bmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLmRp
c2Nvbm5lY3QgY2FuY2VscyBwZW5kaW5nIGRlbGl2ZXJ5Jyk7Ci0KLXdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLXZhciBtdXRhdGlvbnM7Ci12YXIgb2JzZXJ2ZXI7Ci0KLWZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Ci0KLSAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICB9KTsKLQotICAg
IG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgZGl2LnNl
dEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAg
ICBzZXRUaW1lb3V0KG5leHQsIDApOwotfQotCi1mdW5jdGlvbiBuZXh0KCkgewotICAgIGRlYnVn
KCdEaXNjb25uZWN0aW5nIHNob3VsZCBjYW5jZWwgYW55IHBlbmRpbmcgZGVsaXZlcnkuLi4nKTsK
LSAgICBzaG91bGRCZU51bGwoJ211dGF0aW9ucycpOwotICAgIG9ic2VydmVyLm9ic2VydmUoZGl2
LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgZGl2LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2Jh
eicpOwotICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLX0KLQotZnVuY3Rpb24gZmluaXNoKCkg
ewotICAgIGRlYnVnKCcuLi5hbmQgcmUtb2JzZXJ2aW5nIHNob3VsZCBub3Qgc2VlIGFueSBvZiB0
aGUgcHJldmlvdXNseS1nZW5lcmF0ZWQgcmVjb3Jkcy4nKTsKLSAgICBzaG91bGRCZSgnbXV0YXRp
b25zLmxlbmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lJywgJyJiYXIiJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWlmICghd2luZG93Lldl
YktpdE11dGF0aW9uT2JzZXJ2ZXIpCi0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVz
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7Ci1lbHNlCi0gICAgc3RhcnQoKTsKLQotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZy
YWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9u
L2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYyZjNlZTNmNDNhYTk5YzYyYmEzOGFlYmUxMzc0NzQyYjcyY2UxMzgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotSW5zZXJ0aW5nIERvY3VtZW50RnJhZ21l
bnRzIHNob3VsZCByZW1vdmUgYWxsIGNoaWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZvcmUgaW5z
ZXJ0aW5nIHRoZSBjaGlsZHJlbi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVRl
c3RpbmcgYXBwZW5kQ2hpbGQKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0
aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVk
Tm9kZXMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlz
IDIKLVBBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAotCi1UZXN0aW5n
IGluc2VydEJlZm9yZQotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25z
WzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKLVBBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rl
cy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgot
UEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCi0KLVRlc3RpbmcgcmVw
bGFjZUNoaWxkCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlcy5sZW5ndGggaXMgMAotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxl
bmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAyCi1QQVNT
IG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKLQotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWM0NmNmZjQzMjA3YTllMmJmMGQ5ZmE2YzNj
M2RlYzJhZTVmZmU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9u
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWRlc2NyaXB0aW9uKCdJbnNlcnRpbmcgRG9jdW1lbnRGcmFnbWVudHMgc2hvdWxkIHJl
bW92ZSBhbGwgY2hpbGRyZW4gb2YgdGhlIGZyYWdtZW50IGJlZm9yZSBpbnNlcnRpbmcgdGhlIGNo
aWxkcmVuLicpOwotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWZ1bmN0aW9uIGNy
ZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSB7Ci0gICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2InKSk7Ci0gICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaScpKTsKLSAgICBvYnNlcnZlci5vYnNlcnZlKGZyYWdtZW50LCB7Y2hp
bGRMaXN0OiB0cnVlfSk7Ci0gICAgcmV0dXJuIGZyYWdtZW50OwotfQotCi1mdW5jdGlvbiBjcmVh
dGVPYnNlcnZlZERpdigpIHsKLSAgICByZXR1cm4gZGl2OwotfQotCi1mdW5jdGlvbiBjYWxsYmFj
ayhtdXRhdGlvbnMpIHsKLSAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotfQotdmFy
IG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spOwotCi1mdW5j
dGlvbiB0ZXN0QXBwZW5kQ2hpbGQoKSB7Ci0gICAgZGVidWcoJ1Rlc3RpbmcgYXBwZW5kQ2hpbGQn
KTsKLSAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKLSAgICBkaXYuYXBwZW5kQ2hp
bGQoY3JlYXRlT2JzZXJ2ZWRGcmFnbWVudCgpKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMicpOwotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKLSAg
ICAgICAgZGVidWcoJycpOwotICAgICAgICB0ZXN0SW5zZXJ0QmVmb3JlKCk7Ci0gICAgfSwgMCk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnNlcnRCZWZvcmUoKSB7Ci0gICAgZGVidWcoJ1Rlc3Rpbmcg
aW5zZXJ0QmVmb3JlJyk7Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykp
OwotICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7Ci0gICAgZGl2
Lmluc2VydEJlZm9yZShjcmVhdGVPYnNlcnZlZEZyYWdtZW50KCksIGRpdi5maXJzdENoaWxkKTsK
LSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
cy5sZW5ndGgnLCAnMCcpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlcy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVk
Tm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1v
dmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICB0ZXN0
UmVwbGFjZUNoaWxkKCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZXBsYWNlQ2hp
bGQoKSB7Ci0gICAgZGVidWcoJ1Rlc3RpbmcgcmVwbGFjZUNoaWxkJyk7Ci0gICAgdmFyIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOwotICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7
Y2hpbGRMaXN0OiB0cnVlfSk7Ci0gICAgZGl2LnJlcGxhY2VDaGlsZChjcmVhdGVPYnNlcnZlZEZy
YWdtZW50KCksIGRpdi5maXJzdENoaWxkKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMicpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAg
ICAgZGVidWcoJycpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9LCAwKTsKLX0KLQot
dGVzdEFwcGVuZENoaWxkKCk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzY2RmMWU5MzkzMmNhMTc0MjVhMzRlYzFhNjE1YTgz
ZGYzOGJhZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1QQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzcxNWM0ZjBhMmEzMzg2MWM1OTcyMTIwNDIzYTZmMDQ1MGQ4OTYw
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwyOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxvbCBjb250ZW50ZWRpdGFibGU+
Ci0gICAgPGxpPlByZXNzIGVudGVyCi08L29sPgotPHA+VGhlbiBjbGljayBoZXJlPC9wPgotPHNj
cmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0K
LQotICAgIHZhciBsaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignb2wnKTsKLSAgICB2YXIg
cCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3AnKTsKLSAgICB2YXIgb2JzZXJ2ZXJSdW5zID0g
MDsKLSAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bigpIHsgKytvYnNlcnZlclJ1bnM7IH0pOwotICAgIG9ic2VydmVyLm9ic2VydmUobGlzdCwge2No
aWxkTGlzdDogdHJ1ZX0pOwotICAgIGxpc3QuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0
aW9uKCkgewotICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG9ic2VydmVyUnVucyA9
PSAxID8gJ1BBU1NFRCcgOiAnRkFJTEVEJzsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci0gICAgbGlz
dC5mb2N1cygpOwotICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgZXZlbnRT
ZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKCdcbicpOwotICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhwLm9mZnNldExlZnQgKyBwLm9mZnNldFdpZHRoIC8gMiwgcC5vZmZz
ZXRUb3AgKyBwLm9mZnNldEhlaWdodCAvIDIpOwotICAgICAgICBldmVudFNlbmRlci5zY2hlZHVs
ZUFzeW5jaHJvbm91c0NsaWNrKCk7Ci0gICAgfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxiYWNrLWRl
bGl2ZXJ5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI0OTc2
MWFiZjc4MDUxZTIyODYyOWRhOTY4YjE2NTg3ZWQwZDY5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2ZpbGVz
eXN0ZW0tY2FsbGJhY2stZGVsaXZlcnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTYgKzAsMCBAQAotVGVzdCB0aGF0IE11dGF0aW9uIFJlY29yZHMgYXJlIGRlbGl2ZXJlZCBmb2xs
b3dpbmcgRmlsZVN5c3RlbSBjYWxsYmFja3MuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBp
cyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIK
LVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJh
dHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYmF6IgotCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2
ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2ZpbGVzeXN0ZW0tY2FsbGJhY2st
ZGVsaXZlcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYxYzU2YTE1YThl
ODIzMDRjODFlNTdmNGFjZGM4OGM5ZGI3NTdmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2ZpbGVzeXN0ZW0t
Y2FsbGJhY2stZGVsaXZlcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotdmFy
IG11dGF0aW9uczsKLQotZnVuY3Rpb24gdGVzdEZpbGVzeXN0ZW0oKSB7Ci0gICAgdmFyIGRpdjsK
LSAgICB2YXIgZmlsZUVudHJ5OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0
YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwot
ICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVz
OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOwotCi0gICAgICAgIHdlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtKFRFTVBPUkFSWSwgNSoxMDI0KjEwMjQsIGZ1bmN0aW9uKGZzKSB7Ci0gICAgICAg
ICAgICBmcy5yb290LmdldEZpbGUoJ2Zvby50eHQnLCB7Y3JlYXRlOiB0cnVlLCBleGNsdXNlOiB0
cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgICAgICBmaWxlRW50cnkgPSBlbnRy
eTsKLSAgICAgICAgICAgICAgICBmaWxlRW50cnkuZ2V0UGFyZW50KG11dGF0ZUFmdGVyR2V0UGFy
ZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBtdXRhdGVBZnRlckdldFBhcmVudCgpIHsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9v
JywgJ2JhcicpOwotICAgICAgICBmaWxlRW50cnkucmVtb3ZlKG11dGF0ZUFmdGVyUmVtb3ZlKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtdXRhdGVBZnRlclJlbW92ZSgpIHsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51
bGw7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JheicsICdiYXQnKTsKLSAgICAgICAgc2V0
VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYmF6IicpOwotCi0gICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1kZXNjcmlwdGlvbignVGVzdCB0aGF0
IE11dGF0aW9uIFJlY29yZHMgYXJlIGRlbGl2ZXJlZCBmb2xsb3dpbmcgRmlsZVN5c3RlbSBjYWxs
YmFja3MuJyk7Ci0KLWlmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIgfHwgIXdpbmRv
dy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKSBhbmQgRU5BQkxFKEZJTEVfU1lTVEVN
KScpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSBlbHNlCi0gICAgdGVzdEZpbGVzeXN0ZW0oKTsK
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9pbmxpbmUt
ZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9p
bmxpbmUtZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1M2NkZjFlOTM5MzJjYTE3NDI1YTM0ZWMxYTYxNWE4M2RmMzhiYWQ5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bXV0YXRpb24vaW5saW5lLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLVBBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDIyYmNjMmM0OWM1M2YyZGIzM2I3YTAwMjViMTdlOGM0OTMxYmI1OTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPG9sIGNvbnRlbnRlZGl0YWJsZSBvbmlucHV0PSJkb2N1
bWVudC5ib2R5LmlubmVySFRNTCA9IG9ic2VydmVyUmFuID8gJ0ZBSUxFRCcgOiAnUEFTU0VEJzsg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSI+Ci0gICAgPGxp
PlByZXNzIGVudGVyCi08L29sPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIH0KLQotICAgIHZhciBsaXN0ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3Rvcignb2wnKTsKLSAgICB2YXIgb2JzZXJ2ZXJSYW4gPSBmYWxzZTsKLSAgICB2YXIgb2Jz
ZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpIHsgb2JzZXJ2ZXJS
YW4gPSB0cnVlOyB9KTsKLSAgICBvYnNlcnZlci5vYnNlcnZlKGxpc3QsIHtjaGlsZExpc3Q6IHRy
dWUsIGNoYXJhY3RlckRhdGE6IHRydWV9KTsKLSAgICBsaXN0LmZvY3VzKCk7Ci0gICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25v
dXNLZXlEb3duKCdcbicpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL211dGF0ZS1kdXJpbmctZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9tdXRhdGUtZHVyaW5nLWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2YzBkN2EwOWViNDQyNzExMjNkNDg5Nzk1Yjg1
YTg3NzY1YWEwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0ZS1kdXJpbmctZGVsaXZlcnktZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotVGVzdCB0aGF0IG11dGF0aW9u
cyBkdXJpbmcgZGVsaXZlcnkgZG8gbm90IGludGVycnVwdCBkZWxpdmVyeSBvcmRlci4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgb3JkZXIubGVuZ3RoIGlzIDMKLVBBU1Mg
b3JkZXJbMF0gaXMgMQotUEFTUyBvcmRlclsxXSBpcyAzCi1QQVNTIG9yZGVyWzJdIGlzIDIKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0ZS1kdXJpbmctZGVsaXZlcnkuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRlLWR1cmluZy1kZWxpdmVyeS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTMwMWI5N2U1Y2QxOGExMDUyMjRjZmRh
YzRmZTRmOGEzOTM3YjM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRlLWR1cmluZy1kZWxpdmVyeS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWRlc2NyaXB0aW9uKCdUZXN0IHRo
YXQgbXV0YXRpb25zIGR1cmluZyBkZWxpdmVyeSBkbyBub3QgaW50ZXJydXB0IGRlbGl2ZXJ5IG9y
ZGVyLicpOwotZnVuY3Rpb24gZmluaXNoKCkgewotICAgIHNob3VsZEJlKCdvcmRlci5sZW5ndGgn
LCAnMycpOwotICAgIHNob3VsZEJlKCdvcmRlclswXScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ29y
ZGVyWzFdJywgJzMnKTsKLSAgICBzaG91bGRCZSgnb3JkZXJbMl0nLCAnMicpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi12YXIgb3JkZXIgPSBbXTsKLXZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKLQotdmFyIG9ic2VydmVyMSA9IG5ldyBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgIG9yZGVyLnB1c2goMSk7Ci0gICAgZGl2
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Ci19KTsKLXZhciBv
YnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMp
IHsKLSAgICBvcmRlci5wdXNoKDIpOwotfSk7Ci12YXIgb2JzZXJ2ZXIzID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgb3JkZXIucHVzaCgzKTsK
LX0pOwotCi1vYnNlcnZlcjEub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1vYnNl
cnZlcjIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKLW9ic2VydmVyMy5vYnNlcnZl
KGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKLWRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXIn
KTsKLXNldFRpbWVvdXQoZmluaXNoLCAwKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1jYWxsYmFjay1ub24tZWxlbWVudC1jcmFzaC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLWNhbGxiYWNr
LW5vbi1lbGVtZW50LWNyYXNoLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDJlOGVhM2YxY2EwNDJmY2Y4NTVkMzNiZDkzOGMyZTJhOTc2YjQ3OS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL211dGF0aW9uLWNhbGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVBBU1MuIFdlYktpdCBkaWRuJ3QgY3Jhc2gKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tY2FsbGJhY2stbm9u
LWVsZW1lbnQtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24t
Y2FsbGJhY2stbm9uLWVsZW1lbnQtY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggZGFmMzY1YTZhNjg5YjI1MTBiNjcyMDY2MzMwZDM2MDY2MDUxYTBkMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL211dGF0aW9uLWNhbGxiYWNrLW5vbi1lbGVtZW50LWNyYXNoLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGJvZHk+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotCi1mdW5jdGlvbiBtdXRhdGlvbkNhbGxiYWNrKG11dGF0aW9ucywgb2JzZXJ2ZXIpIHsK
LSAgICBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1stMV07Ci19Ci0KLXZhciBtdXRhdGlvbk9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25DYWxsYmFjayk7Ci1tdXRh
dGlvbk9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2NoaWxkTGlzdDogdHJ1ZX0pOwot
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUEFTUy4g
V2ViS2l0IGRpZG4ndCBjcmFzaCIpKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9u
LW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmJlYjNlODZlNzBlMjQ4NWE3NzIwMTgwNzc2NDI4NTkxNzkyNzQ5ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVRlc3QgdGhlIGNvbnN0cnVjdG9yIG9mIFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mg
d2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIgaXMgbm9uLW51bGwuCi1QQVNTIHR5cGVvZiBX
ZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlIGlzICJmdW5jdGlvbiIKLVBB
U1MgdHlwZW9mIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLmRpc2Nvbm5lY3QgaXMg
ImZ1bmN0aW9uIgotUEFTUyB0eXBlb2Ygb2JzZXJ2ZXIub2JzZXJ2ZSBpcyAiZnVuY3Rpb24iCi1Q
QVNTIHR5cGVvZiBvYnNlcnZlci5kaXNjb25uZWN0IGlzICJmdW5jdGlvbiIKLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9y
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNDBmNzBlZDczNjhmNTM4NWEx
ZjQ5ZDg1ZDM5ZTRhNjBhZTM3Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1j
b25zdHJ1Y3Rvci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08dGl0bGU+PC90
aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgIHNo
b3VsZEJlTm9uTnVsbCgnd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXInKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlw
ZS5vYnNlcnZlJywgJ2Z1bmN0aW9uJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBl
b2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCcsICdmdW5jdGlv
bicpOwotICAgIHdpbmRvdy5vYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG11dGF0aW9ucykgeyB9KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVv
ZiBvYnNlcnZlci5vYnNlcnZlJywgJ2Z1bmN0aW9uJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd0eXBlb2Ygb2JzZXJ2ZXIuZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOwotfQotCi1kZXNj
cmlwdGlvbignVGVzdCB0aGUgY29uc3RydWN0b3Igb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlcicp
OwotCi1pZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyKQotICAgIHRlc3RGYWlsZWQo
J1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOwotZWxzZQot
ICAgIHJ1blRlc3QoKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxp
dHktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjA1NjY0ZTFl
MzViOTg3ZjNmNjVkYWEzZTBiYjY4NzdhOTM4ZGQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24t
cmVjb3JkLW51bGxpdHktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBA
QAotTm9uLXJlbGV2YW50IHByb3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUg
bnVsbCwgZXhjZXB0IGZvciBOb2RlTGlzdHMsIHdoaWNoIHNob3VsZCBiZSBlbXB0eQotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotY2hhcmFjdGVyRGF0YSByZWNvcmQ6Ci1QQVNTIHJl
Y29yZC5hdHRyaWJ1dGVOYW1lIGlzIG51bGwKLVBBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFj
ZSBpcyBudWxsCi1QQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCi1QQVNTIHJlY29yZC5wcmV2
aW91c1NpYmxpbmcgaXMgbnVsbAotUEFTUyByZWNvcmQubmV4dFNpYmxpbmcgaXMgbnVsbAotUEFT
UyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAotUEFTUyByZWNvcmQucmVtb3ZlZE5vZGVz
Lmxlbmd0aCBpcyAwCi0KLWNoaWxkTGlzdCByZWNvcmQ6Ci1QQVNTIHJlY29yZC5hdHRyaWJ1dGVO
YW1lIGlzIG51bGwKLVBBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNT
IHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCi0KLWF0dHJpYnV0ZXMgcmVjb3JkOgotUEFTUyByZWNv
cmQuYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgcmVjb3JkLm9sZFZhbHVlIGlzIG51
bGwKLVBBU1MgcmVjb3JkLnByZXZpb3VzU2libGluZyBpcyBudWxsCi1QQVNTIHJlY29yZC5uZXh0
U2libGluZyBpcyBudWxsCi1QQVNTIHJlY29yZC5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNT
IHJlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFmNDhmZGM1ZGVhYzlhYTgwM2YwODNhOWNlZGEzMDc0YmUxNWE5ZjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbign
Tm9uLXJlbGV2YW50IHByb3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVs
bCwgZXhjZXB0IGZvciBOb2RlTGlzdHMsIHdoaWNoIHNob3VsZCBiZSBlbXB0eScpOwotdmFyIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSk7Ci0KLXZh
ciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3NvbWV0aGluZycpOwotb2JzZXJ2ZXIu
b2JzZXJ2ZSh0ZXh0LCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOwotdGV4dC5kYXRhID0gJ3NvbWV0
aGluZyBlbHNlJzsKLXZhciByZWNvcmQgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpWzBdOwotZGVi
dWcoJ2NoYXJhY3RlckRhdGEgcmVjb3JkOicpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQuYXR0cmli
dXRlTmFtZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlJyk7Ci1z
aG91bGRCZU51bGwoJ3JlY29yZC5vbGRWYWx1ZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQucHJl
dmlvdXNTaWJsaW5nJyk7Ci1zaG91bGRCZU51bGwoJ3JlY29yZC5uZXh0U2libGluZycpOwotc2hv
dWxkQmUoJ3JlY29yZC5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7Ci1zaG91bGRCZSgncmVjb3Jk
LnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwotCi12YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Ci1vYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0p
OwotZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Ci1yZWNv
cmQgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpWzBdOwotZGVidWcoJ1xuY2hpbGRMaXN0IHJlY29y
ZDonKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0ZU5hbWUnKTsKLXNob3VsZEJlTnVs
bCgncmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFjZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQub2xk
VmFsdWUnKTsKLQotb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlfSk7Ci1k
aXYuc2V0QXR0cmlidXRlKCdkYXRhLWZvbycsICdiYXInKTsKLXJlY29yZCA9IG9ic2VydmVyLnRh
a2VSZWNvcmRzKClbMF07Ci1kZWJ1ZygnXG5hdHRyaWJ1dGVzIHJlY29yZDonKTsKLXNob3VsZEJl
TnVsbCgncmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFjZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQu
b2xkVmFsdWUnKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLnByZXZpb3VzU2libGluZycpOwotc2hv
dWxkQmVOdWxsKCdyZWNvcmQubmV4dFNpYmxpbmcnKTsKLXNob3VsZEJlKCdyZWNvcmQuYWRkZWRO
b2Rlcy5sZW5ndGgnLCAnMCcpOwotc2hvdWxkQmUoJ3JlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3Ro
JywgJzAnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkN2Y2MzE2ZmU1ZGQ1NjBkOWI1ZDUxYjcyYWZiNGQxZjhhYjA2ZWY5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDIzNiArMCwwIEBACi1UZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBv
biBhdHRyaWJ1dGVzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0aW5nIGJh
c2ljIGFzcGVjdHMgb2YgYXR0cmlidXRlIG9ic2VydmF0aW9uLgotLi4uY2FuIGF0dHJpYnV0ZSBj
aGFuZ2VzIGJlIG9ic2VydmVkIGF0IGFsbAotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBB
U1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UgaXMgbnVsbAotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1Mg
bXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImJhciIKLVBBU1MgbXV0YXRpb25zWzFdLmF0
dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi0uLi5vYnNlcnZlci5kaXNjb25uZWN0KCkgc2hvdWxk
IHByZXZlbnQgZnVydGhlciBkZWxpdmVyeSBvZiBtdXRhdGlvbnMuCi1QQVNTIG11dGF0aW9ucyBp
cyBudWxsCi0uLi5yZS1vYnNlcnZpbmcgYWZ0ZXIgZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBz
YW1lIG9ic2VydmVyLgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25z
WzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
IGlzICJmb28iCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAot
UEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzFd
LmF0dHJpYnV0ZU5hbWUgaXMgImJhciIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVz
cGFjZSBpcyBudWxsCi0KLVRlc3RpbmcgdGhhdCBvYnNlcnZpbmcgd2l0aG91dCBzcGVjaWZ5aW5n
ICJhdHRyaWJ1dGVzIiBkb2VzIG5vdCByZXN1bHQgaW4gaGVhcmluZyBhYm91dCBhdHRyaWJ1dGUg
Y2hhbmdlcy4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLQotVGVzdGluZyB0aGF0IHJlLW9ic2Vy
dmluZyB0aGUgc2FtZSBub2RlIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIgaGFzIHRoZSBlZmZlY3Qg
b2YgcmVzZXR0aW5nIHRoZSBvcHRpb25zLgotUEFTUyBjYWxscyBpcyAxCi1QQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBB
U1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25zIGlz
IG51bGwKLQotVGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJl
ZCB0byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuCi1QQVNTIG11dGF0
aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIK
LVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBBU1MgbXV0YXRpb25z
Mi5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnMyWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1Q
QVNTIG11dGF0aW9uczJbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotCi1UZXN0aW5nIHRoYXQg
ImF0dHJpYnV0ZU5hbWVzcGFjZSIgdmFsdWUgaXMgZGVsaXZlcmVkIHByb3Blcmx5LgotUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgImh0dHA6Ly93d3cuZm9vLmNvbS9iYXIiCi0K
LVRlc3RpbmcgdGhhdCBtb2RpZmljYXRpb25zIHRvIG5vZGUgcHJvcGVydGllcyB3aGljaCBkZWxl
Z2F0ZSB0byBhdHRyaWJ1dGUgc3RvcmFnZSBkZWxpdmVyIG11dGF0aW9ucy4KLVBBU1MgbXV0YXRp
b25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgot
UEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAic3JjIgotUEFTUyBtdXRhdGlvbnNb
MV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUg
aXMgImhyZWYiCi0KLVRlc3RpbmcgbXV0YXRpb24gcmVjb3JkcyBhcmUgZW5xdWV1ZWQgZm9yIGF0
dHJpYnV0ZXMgYmVmb3JlIERPTVN1YnRyZWVNb2RpZmllZCBpcyBkaXNwYXRjaGVkLgotUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0
aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRl
TmFtZSBpcyAiYmF6IgotCi1UZXN0aW5nIGJhc2ljIG9sZFZhbHVlIGRlbGl2ZXJ5LgotUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDMKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0
aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxsCi1QQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRy
aWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBt
dXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgImJhciIKLVBBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIiCi1Q
QVNTIG11dGF0aW9uc1syXS5vbGRWYWx1ZSBpcyAiYm9vIgotCi1UZXN0aW5nIHRoYXQgb2xkVmFs
dWUgaXMgZGVsaXZlcmVkIGFzIHJlcXVlc3RlZCAob3Igbm90KS4KLVBBU1MgbXV0YXRpb25zV2l0
aE9sZFZhbHVlLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0uYXR0cmlidXRl
TmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0ub2xkVmFsdWUgaXMg
ImJhciIKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9v
IgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgbnVsbAotCi1BbiBvYnNlcnZlciB3aXRo
IG11bHRpcGxlIG9ic2VydmF0aW9ucyB3aWxsIGdldCBhdHRyaWJ1dGVPbGRWYWx1ZSBpZiBhbnkg
ZW50cmllcyByZXF1ZXN0IGl0LgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0
YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiYmFyIgotCi1U
ZXN0aW5nIHNldHRpbmcgYW4gYXR0cmlidXRlIHZpYSByZWZsZWN0ZWQgSURMIGF0dHJpYnV0ZS4K
LVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJh
dHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCi1QQVNT
IG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxsCi1QQVNTIG11dGF0aW9uc1sxXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCi1Q
QVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMl0udHlw
ZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImlk
IgotUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgImJhciIKLQotVGVzdGluZyB0aGF0IGF0
dHJpYnV0ZUZpbHRlciB3b3JrcyBhcyBleHBlY3RlZCBhbmQgb2JzZXJ2ZXMgY2FzZSB3aXRoIEhU
TUwgZWxlbWVudHMuCi0uLi5vbmx5IGZvbyBhbmQgYmFyIHNob3VsZCBiZSByZWNlaXZlZC4KLVBB
U1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRy
aWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0YXRpb25zWzFd
LnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlz
ICJiYXIiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotCi1U
ZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBhdHRyaWJ1dGVGaWx0ZXIgd2hlbiB0aGUgc2FtZSBvYnNl
cnZlciBvYnNlcnZlcyBhdCBtdWx0aXBsZSBub2RlcyBpbiBhIHN1YnRyZWUgd2l0aCBkaWZmZXJl
bnQgZmlsdGVyIG9wdGlvbnMuCi0uLi5vbmx5IGZvbywgYmFyICYgYmF0IHNob3VsZCBiZSByZWNl
aXZlZC4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9v
IgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0
YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1
dGVOYW1lIGlzICJiYXIiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMg
bnVsbAotUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRp
b25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImJhdCIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0
ZU5hbWVzcGFjZSBpcyBudWxsCi0uLi5iYXIsIGJhdCAmIGJheiBzaG91bGQgYWxsIGJlIHJlY2Vp
dmVkLgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUg
aXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJiYXIi
Ci1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotUEFTUyBtdXRh
dGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0
ZU5hbWUgaXMgImJhdCIKLVBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBu
dWxsCi1QQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlv
bnNbMl0uYXR0cmlidXRlTmFtZSBpcyAiYmF6IgotUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRl
TmFtZXNwYWNlIGlzIG51bGwKLQotVGVzdGluZyB0aGF0IHNldHRpbmcgYW4gYXR0cmlidXRlRmls
dGVyIGZpbHRlcnMgb3V0IG5hbWVzcGFjZWQgYXR0cmlidXRlcy4KLS4uLnBhdGhMZW5ndGggc2hv
dWxkIG5vdCBiZSByZWNlaXZlZC4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLQotVGVzdGluZyB0
aGF0IGF0dHJpYnV0ZUZpbHRlciByZXNwZWN0cyBjYXNlIHdpdGggbm9uLUhUTUwgZWxlbWVudHMu
Ci0uLi5vbmx5IElELCBpZCwgYm9vTSBzaG91bGQgYmUgcmVjZWl2ZWQuCi1QQVNTIG11dGF0aW9u
cy5sZW5ndGggaXMgMwotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBB
U1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgIklEIgotUEFTUyBtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKLVBBU1Mg
bXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi1QQVNTIG11dGF0aW9uc1sy
XS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBp
cyAiYm9vTSIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCi0K
LVRlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0
Y2hlcyBNdXRhdGlvbiBSZWNvcmRzLgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKLVBBU1Mg
bXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lIGlzICJzdHlsZSIKLVBBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzIG51bGwK
LVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sx
XS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKLVBBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVlIGlz
IG51bGwKLVBBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0
aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKLVBBU1MgbXV0YXRpb25zWzJdLm9sZFZh
bHVlIGlzIG51bGwKLS4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLgotUEFTUyBtdXRhdGlvbnMg
aXMgbnVsbAotCi1UZXN0aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1lbnRzIHN0eWxlIHByb3Bl
cnR5IGRpc3BhdGNoZXMgTXV0YXRpb24gUmVjb3JkcyB3aXRoIGNvcnJlY3Qgb2xkVmFsdWVzLgot
UEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKLVBB
U1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJjb2xvcjogeWVsbG93OyB3aWR0aDogMTAwcHg7
IgotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25z
WzFdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgotUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUg
aXMgImNvbG9yOiByZWQ7IHdpZHRoOiAxMDBweDsiCi1QQVNTIG11dGF0aW9uc1syXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZSBpcyAic3R5bGUi
Ci1QQVNTIG11dGF0aW9uc1syXS5vbGRWYWx1ZSBpcyAiY29sb3I6IHJlZDsgd2lkdGg6IDIwMHB4
OyIKLS4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLgotUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAot
Ci1UZXN0aW5nIHRoYXQgYSBuby1vcCBzdHlsZSBwcm9wZXJ0eSBtdXRhdGlvbiBkb2VzIG5vdCBj
cmVhdGUgTXV0YXRpb24gUmVjb3Jkcy4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLQotVGVzdCB0
aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSB0aHJvdWdoIGFuIGF0dHIgbm9kZSBkZWxpdmVycyBt
dXRhdGlvbiByZWNvcmRzCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlv
bnNbMF0udGFyZ2V0IGlzIGRpdgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRl
cyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKLVBBU1Mg
bXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCi0KLVRlc3QgdGhhdCBtdXRhdGluZyBhbiBh
dHRyaWJ1dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQgdG8gYW4gYXR0ciBub2RlIGRlbGl2ZXJzIG11
dGF0aW9uIHJlY29yZHMKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9u
c1swXS50YXJnZXQgaXMgZGl2Ci1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVz
IgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0IgotUEFTUyBt
dXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKLQotVGVzdCB0aGF0IG11dGF0aW5nIHZpYSBz
ZXRBdHRyaWJ1dGVOb2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMKLVBBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2Ci1QQVNTIG11dGF0
aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZSBpcyAiZGF0YS10ZXN0IgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIK
LVBBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBkaXYKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUg
aXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRh
LW90aGVyIgotUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgbnVsbAotUEFTUyBtdXRhdGlv
bnNbMl0udGFyZ2V0IGlzIGRpdgotUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRl
cyIKLVBBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgotUEFTUyBtdXRhdGlv
bnNbMl0ub2xkVmFsdWUgaXMgIm15SWQiCi0KLVRlc3QgdGhhdCBzZXRBdHRyaWJ1dGUgb24gYW4g
YXR0cmlidXRlIHdpdGggYW4gZXhpc3RpbmcgQXR0ciBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRz
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlz
IGRpdgotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRp
b25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKLVBBU1MgbXV0YXRpb25zWzBdLm9s
ZFZhbHVlIGlzICJmb28iCi0KLVRlc3QgdGhhdCBzZXROYW1lZEl0ZW0gYW5kIHJlbW92ZU5hbWVk
SXRlbSBkZWxpdmVyIG11dGF0aW9uIHJlY29yZHMKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAy
Ci1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2Ci1QQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZGF0
YS10ZXN0IgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKLVBBU1MgbXV0YXRp
b25zWzFdLnRhcmdldCBpcyBkaXYKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCi1QQVNT
IG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiYmFyIgotCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY0NzZlMGE4OGY4YzFlOWY1MjA0YTJmYzEwY2ZjMjZhMzJjZjcxMTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMDggKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLXZhciBtdXRhdGlvbnMsIG11dGF0aW9uczIsIG11dGF0aW9uc1dpdGhPbGRWYWx1ZTsK
LXZhciBjYWxsczsKLXZhciBkaXY7Ci0KLWZ1bmN0aW9uIHRlc3RCYXNpYygpIHsKLSAgICB2YXIg
ZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAg
ICBkZWJ1ZygnVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGF0dHJpYnV0ZSBvYnNlcnZhdGlvbi4n
KTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmFyJywgJ2Zv
bycpOwotCi0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVy
RGF0YTogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwot
ICAgICAgICBkaXYucmVtb3ZlQXR0cmlidXRlKCdiYXInKTsKLSAgICAgICAgc2V0VGltZW91dChj
aGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNr
RGlzY29ubmVjdEFuZE11dGF0ZSgpIHsKLSAgICAgICAgZGVidWcoJy4uLmNhbiBhdHRyaWJ1dGUg
Y2hhbmdlcyBiZSBvYnNlcnZlZCBhdCBhbGwnKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScs
ICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50
eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0
dHJpYnV0ZU5hbWUnLCAnImJhciInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5h
dHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7
Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0
ZSgnZm9vJywgJ2JheicpOwotICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVkQW5k
TXV0YXRlTXVsdGlwbGUsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZl
cmVkQW5kTXV0YXRlTXVsdGlwbGUoKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5vYnNlcnZlci5kaXNj
b25uZWN0KCkgc2hvdWxkIHByZXZlbnQgZnVydGhlciBkZWxpdmVyeSBvZiBtdXRhdGlvbnMuJyk7
Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7Ci0gICAgICAgIG9ic2Vy
dmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5zZXRB
dHRyaWJ1dGUoJ2ZvbycsICdiYXQnKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYmFyJywg
J2ZvbycpOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCk7Ci0gICAgfQotCi0gICAgZnVuY3Rp
b24gZmluaXNoKCkgewotICAgICAgICBkZWJ1ZygnLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nv
bm5lY3Qgd29ya3Mgd2l0aCB0aGUgc2FtZSBvYnNlcnZlci4nKTsKLQotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImJhciInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5k
aXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsK
LSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0V3JvbmdUeXBlKCkgewot
ICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7
Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgb2JzZXJ2aW5nIHdpdGhvdXQgc3BlY2lmeWlu
ZyAiYXR0cmlidXRlcyIgZG9lcyBub3QgcmVzdWx0IGluIGhlYXJpbmcgYWJvdXQgYXR0cmlidXRl
IGNoYW5nZXMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25z
ID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hp
bGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOwotICAgICAgICBkaXYuc2V0QXR0
cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMnLCAnbnVsbCcpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRl
YnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwot
fQotCi1mdW5jdGlvbiB0ZXN0TXVsdGlwbGVSZWdpc3RyYXRpb24oKSB7Ci0gICAgdmFyIGRpdjsK
LSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVi
dWcoJ1Rlc3RpbmcgdGhhdCByZS1vYnNlcnZpbmcgdGhlIHNhbWUgbm9kZSB3aXRoIHRoZSBzYW1l
IG9ic2VydmVyIGhhcyB0aGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgb3B0aW9ucy4nKTsKLQot
CQljYWxscyA9IDA7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9
IG07Ci0JCQljYWxscysrOwotICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZl
KGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOwotICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAgICBk
aXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIHNldFRpbWVvdXQoY2hlY2tE
aXNjb25uZWN0QW5kTXV0YXRlLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja0Rpc2Nv
bm5lY3RBbmRNdXRhdGUoKSB7Ci0gICAgICAgIHNob3VsZEJlKCdjYWxscycsICcxJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKLSAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1
ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYs
IHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdmb28nLCAn
YmF6Jyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOwot
ICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0
ZXN0TXVsdGlwbGVPYnNlcnZlcnMoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7
Ci0gICAgdmFyIG9ic2VydmVyMjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBk
ZWJ1ZygnVGVzdGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0
byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuJyk7Ci0gICAgICAgIG11
dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotICAgICAg
ICBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0g
ICAgICAgICAgICBtdXRhdGlvbnMyID0gbTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVy
Lm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgICAgIG9ic2VydmVyMi5v
YnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAgICBkaXYuc2V0QXR0cmli
dXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMu
bGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJh
dHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUnLCAnImZvbyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczIubGVuZ3RoJywgJzEn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJbMF0uYXR0cmlidXRlTmFtZScsICciZm9v
IicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIG9ic2VydmVyMi5k
aXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsK
LSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0TmFtZXNwYWNlVVJJKCkg
ewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQo
KSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgImF0dHJpYnV0ZU5hbWVzcGFjZSIgdmFs
dWUgaXMgZGVsaXZlcmVkIHByb3Blcmx5LicpOwotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwot
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgb2Jz
ZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAg
ICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNl
cnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUgfSk7Ci0gICAgICAg
IGRpdi5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy5mb28uY29tL2JhcicsICdmb28nLCAnYmFy
Jyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsgICAgCi0gICAgfQotCi0gICAgZnVu
Y3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcx
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28i
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywg
JyJodHRwOi8vd3d3LmZvby5jb20vYmFyIicpOyAgICAgICAgCi0gICAgICAgIG9ic2VydmVyLmRp
c2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwot
ICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQcm9wZXJ0eUFjY2Vzcygp
IHsKLSAgICB2YXIgaW1nLCBhOwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG1vZGlmaWNhdGlvbnMgdG8gbm9k
ZSBwcm9wZXJ0aWVzIHdoaWNoIGRlbGVnYXRlIHRvIGF0dHJpYnV0ZSBzdG9yYWdlIGRlbGl2ZXIg
bXV0YXRpb25zLicpOwotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBpbWcgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICAgICAgYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsKLQotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoaW1nLCB7IGF0dHJpYnV0ZXM6IHRydWUg
fSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoYSwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwot
Ci0gICAgICAgIGltZy5zcmMgPSAnYmF6LnBuZyc7Ci0gICAgICAgIGEuaHJlZiA9ICdmb28uaHRt
bCc7Ci0KLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICcic3JjIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaHJlZiIn
KTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0g
ICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rp
b24gdGVzdE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkKCkgewotICAgIHZhciBkaXYsIGRp
djIsIHN1YkRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0gICAgdmFyIGxpc3RlbmVyOwotCi0gICAg
ZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIG11dGF0aW9uIHJlY29y
ZHMgYXJlIGVucXVldWVkIGZvciBhdHRyaWJ1dGVzIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZpZWQg
aXMgZGlzcGF0Y2hlZC4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBk
aXYgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKLSAgICAgICAgZGl2MiA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykpOwotCi0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRh
dGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBsaXN0ZW5lciA9IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIGRpdjIuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF0Jyk7Ci0gICAgICAg
IH0KLQotICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywg
bGlzdGVuZXIpOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHN1YkRpdiwgeyBhdHRyaWJ1dGVz
OiB0cnVlIH0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdjIsIHsgYXR0cmlidXRlczog
dHJ1ZSB9KTsKLQotICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0K
LSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZp
bmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmF6IicpOwotICAg
ICAgICBkaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgbGlzdGVu
ZXIpOwotICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7Ci0gICAgICAgIG9i
c2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0
VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPbGRWYWx1
ZSgpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyBiYXNpYyBvbGRWYWx1ZSBkZWxpdmVyeS4n
KTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JhcicsICdib28n
KTsKLSAgICAgICAgCi0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0g
bXV0YXRpb25zOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsg
YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIGRp
di5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgn
Zm9vJywgJ2JheicpOwotICAgICAgICBkaXYucmVtb3ZlQXR0cmlidXRlKCdiYXInKTsKLSAgICAg
ICAgZGl2LnJlbW92ZUF0dHJpYnV0ZSgnbm9uLWV4aXN0YW50Jyk7Ci0gICAgICAgIHNldFRpbWVv
dXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0ub2xkVmFsdWUnLCAnImJhciInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sy
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJd
LmF0dHJpYnV0ZU5hbWUnLCAnImJhciInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sy
XS5vbGRWYWx1ZScsICciYm9vIicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0g
ICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBz
dGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCgpIHsKLSAgICB2
YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcldpdGhPbGRWYWx1ZTsKLSAgICB2YXIgb2JzZXJ2ZXI7
Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBv
bGRWYWx1ZSBpcyBkZWxpdmVyZWQgYXMgcmVxdWVzdGVkIChvciBub3QpLicpOwotICAgICAgICBt
dXRhdGlvbnNXaXRoT2xkVmFsdWUgPSBudWxsOwotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwot
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2
LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBvYnNlcnZlcldpdGhPbGRWYWx1
ZSA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAg
ICAgICAgICAgd2luZG93Lm11dGF0aW9uc1dpdGhPbGRWYWx1ZSA9IG11dGF0aW9uczsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRp
b25zOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXJXaXRoT2xkVmFsdWUub2JzZXJ2ZShk
aXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAg
ICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgICAg
IGRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXonKTsKLSAgICAgICAgc2V0VGltZW91dChmaW5p
c2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1dpdGhPbGRWYWx1ZS5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNXaXRoT2xkVmFsdWVbMF0uYXR0cmlidXRlTmFtZScsICci
Zm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLm9sZFZh
bHVlJywgJyJiYXIiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7Ci0g
ICAgICAgIG9ic2VydmVyV2l0aE9sZFZhbHVlLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgb2JzZXJ2
ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0
KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9sZFZhbHVlVW5p
b25NdWx0aXBsZU9ic2VydmF0aW9ucygpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBzcGFuOwot
ICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1
ZygnQW4gb2JzZXJ2ZXIgd2l0aCBtdWx0aXBsZSBvYnNlcnZhdGlvbnMgd2lsbCBnZXQgYXR0cmli
dXRlT2xkVmFsdWUgaWYgYW55IGVudHJpZXMgcmVxdWVzdCBpdC4nKTsKLSAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgICAgIHNwYW4gPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3BhbicpKTsKLSAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAg
ICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlv
bnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgICAg
IH0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBh
dHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKLSAgICAgICAgb2JzZXJ2
ZXIub2JzZXJ2ZShzcGFuLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7Ci0gICAgICAgIHNwYW4uc2V0
QXR0cmlidXRlKCdmb28nLCAnYmF6Jyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBl
JywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJp
YnV0ZU5hbWUnLCAnImZvbyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRW
YWx1ZScsICciYmFyIicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAg
IGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgp
OwotfQotCi1mdW5jdGlvbiB0ZXN0SURMQXR0cmlidXRlKCkgewotICAgIHZhciBkaXY7Ci0gICAg
dmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdU
ZXN0aW5nIHNldHRpbmcgYW4gYXR0cmlidXRlIHZpYSByZWZsZWN0ZWQgSURMIGF0dHJpYnV0ZS4n
KTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRp
b25zID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShk
aXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAg
ICAgIGRpdi5pZCA9ICdmb28nOwotICAgICAgICBkaXYuaWQgPSAnYmFyJzsKLSAgICAgICAgZGl2
LmlkID0gbnVsbDsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgn
LCAnMycpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0
ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICci
aWQiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnImZvbyInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLm9sZFZhbHVlJywgJyJiYXIiJyk7Ci0gICAgICAg
IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5O
ZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RBdHRy
aWJ1dGVGaWx0ZXIoKSB7Ci0gICAgdmFyIGRpdiwgcGF0aDsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0K
LSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBhdHRy
aWJ1dGVGaWx0ZXIgd29ya3MgYXMgZXhwZWN0ZWQgYW5kIG9ic2VydmVzIGNhc2Ugd2l0aCBIVE1M
IGVsZW1lbnRzLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAg
ICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0
dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydmb28nLCAnYmFyJywgJ2Jvb00nXSB9
KTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2ZvbycpOwotICAgICAgICBkaXYu
c2V0QXR0cmlidXRlKCdiYXInLCAnYmFyJyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2Jh
eicsICdiYXonKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnQk9PbScsICdib29tJyk7Ci0K
LSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZp
bmlzaCgpIHsKLSAgICAgICAgZGVidWcoJy4uLm9ubHkgZm9vIGFuZCBiYXIgc2hvdWxkIGJlIHJl
Y2VpdmVkLicpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVs
bCcpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciYmFy
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWVzcGFjZScs
ICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWco
JycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RBdHRyaWJ1dGVGaWx0ZXJTdWJ0cmVlKCkgewotICAgIHZhciBkaXYsIGRp
djIsIGRpdjM7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0g
ICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBhdHRyaWJ1dGVGaWx0ZXIgd2hl
biB0aGUgc2FtZSBvYnNlcnZlciBvYnNlcnZlcyBhdCBtdWx0aXBsZSBub2RlcyBpbiBhIHN1YnRy
ZWUgd2l0aCBkaWZmZXJlbnQgZmlsdGVyIG9wdGlvbnMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQot
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2
MiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAg
ICAgIGRpdjMgPSBkaXYyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBz
dWJ0cmVlOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnZm9vJywgJ2JhciddIH0pOwotICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGRpdjIsIHsgYXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1
ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2JhcicsICdiYXQnXSB9KTsKLQotICAgICAgICBkaXYzLnNl
dEF0dHJpYnV0ZSgnZm9vJywgJ2ZvbycpOwotICAgICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmFy
JywgJ2JhcicpOwotICAgICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmF0JywgJ2JhdCcpOwotICAg
ICAgICBkaXYzLnNldEF0dHJpYnV0ZSgnYmF6JywgJ2JheicpOwotCi0gICAgICAgIHNldFRpbWVv
dXQoY2hlY2tBbmRPYnNlcnZlQWxsLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja0Fu
ZE9ic2VydmVBbGwoKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5vbmx5IGZvbywgYmFyICYgYmF0IHNo
b3VsZCBiZSByZWNlaXZlZC4nKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0
aCcsICczJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmli
dXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywg
JyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNw
YWNlJywgJ251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJh
dHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5h
bWUnLCAnImJhciInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVO
YW1lc3BhY2UnLCAnbnVsbCcpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmli
dXRlTmFtZScsICciYmF0IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJp
YnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYy
LCB7IGF0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7Ci0gICAgICAgIGRpdjMuc2V0
QXR0cmlidXRlKCdiYXInLCAnYmFyJyk7Ci0gICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdiYXQn
LCAnYmF0Jyk7Ci0gICAgICAgIGRpdjMuc2V0QXR0cmlidXRlKCdiYXonLCAnYmF6Jyk7Ci0KLSAg
ICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlz
aCgpIHsKLSAgICAgICAgZGVidWcoJy4uLmJhciwgYmF0ICYgYmF6IHNob3VsZCBhbGwgYmUgcmVj
ZWl2ZWQuJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYmFyIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxs
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJiYXQi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlJywg
J251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAn
ImJheiInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UnLCAnbnVsbCcpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAg
ZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRWxlbWVudCgpIHsKLSAg
ICB2YXIgcGF0aDsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsK
LSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBzZXR0aW5nIGFuIGF0dHJpYnV0ZUZpbHRlciBm
aWx0ZXJzIG91dCBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQot
ICAgICAgICBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZycsICdwYXRoJyk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUocGF0aCwgeyBh
dHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsncGF0aExlbmd0aCddIH0pOwotICAg
ICAgICBwYXRoLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdw
YXRoTGVuZ3RoJywgJzIwMCcpOwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5wYXRoTGVu
Z3RoIHNob3VsZCBub3QgYmUgcmVjZWl2ZWQuJyk7Ci0KLSAgICAgICAgc2hvdWxkQmVOdWxsKCdt
dXRhdGlvbnMnKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1
ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0K
LQotZnVuY3Rpb24gdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxEb2N1bWVudCgpIHsKLSAgICB2
YXIgc3ZnRG9jLCBkaXYsIHBhdGg7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24g
c3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgYXR0cmlidXRlRmlsdGVyIHJl
c3BlY3RzIGNhc2Ugd2l0aCBub24tSFRNTCBlbGVtZW50cy4nKTsKLQotICAgICAgICBzdmdEb2Mg
PSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnLCAnc3ZnJywgJ3N2ZycpOwotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwot
ICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0p
IHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRp
diA9IHN2Z0RvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ0lEJywgJ2lkJywg
J2Jvb00nXSB9KTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnSUQnLCAnSUQnKTsKLSAgICAg
ICAgZGl2LnNldEF0dHJpYnV0ZSgnaWQnLCAnaWQnKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0
ZSgnYmF6JywgJ2JheicpOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdib29NJywgJ2Jvb20n
KTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnQk9PbScsICdib29tJyk7Ci0KLSAgICAgICAg
c2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsK
LSAgICAgICAgZGVidWcoJy4uLm9ubHkgSUQsIGlkLCBib29NIHNob3VsZCBiZSByZWNlaXZlZC4n
KTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJJRCInKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImJvb00iJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251
bGwnKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcn
KTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1m
dW5jdGlvbiB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcygpIHsKLSAgICB2YXIgZGl2
LCBwYXRoOwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAg
ICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBwcm9w
ZXJ0eSBkaXNwYXRjaGVzIE11dGF0aW9uIFJlY29yZHMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQot
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2
LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OycpOwot
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAg
ICAgICBkaXYuc3R5bGUuY29sb3IgPSAncmVkJzsKLSAgICAgICAgZGl2LnN0eWxlLndpZHRoID0g
JzIwMHB4JzsKLSAgICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJ2JsdWUnOwotCi0gICAgICAgIHNl
dFRpbWVvdXQoY2hlY2tBbmRDb250aW51ZSwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hl
Y2tBbmRDb250aW51ZSgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAn
MycpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICcic3R5
bGUiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICcic3R5bGUi
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnbnVsbCcpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0ub2xkVmFsdWUnLCAnbnVsbCcpOwotCi0g
ICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIGRpdi5nZXRBdHRyaWJ1dGUoJ3N0eWxl
Jyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBmaW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5tdXRhdGlvbiByZWNvcmQgY3JlYXRlZC4n
KTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsKLQotICAgICAgICBv
YnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4
dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0U3R5bGVB
dHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlKCkgewotICAgIHZhciBkaXYsIHBhdGg7Ci0g
ICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVn
KCdUZXN0aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1lbnRzIHN0eWxlIHByb3BlcnR5IGRpc3Bh
dGNoZXMgTXV0YXRpb24gUmVjb3JkcyB3aXRoIGNvcnJlY3Qgb2xkVmFsdWVzLicpOwotCi0gICAg
ICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiB5ZWxsb3c7IHdpZHRo
OiAxMDBweDsnKTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczog
dHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5zdHlsZS5jb2xv
ciA9ICdyZWQnOwotICAgICAgICBkaXYuc3R5bGUud2lkdGggPSAnMjAwcHgnOwotICAgICAgICBk
aXYuc3R5bGUuY29sb3IgPSAnYmx1ZSc7Ci0KLSAgICAgICAgc2V0VGltZW91dChjaGVja0FuZENv
bnRpbnVlLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja0FuZENvbnRpbnVlKCkgewot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciY29sb3I6IHllbGxvdzsgd2lkdGg6IDEw
MHB4OyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAn
InN0eWxlIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJj
b2xvcjogcmVkOyB3aWR0aDogMTAwcHg7IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
Ml0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMl0ub2xkVmFsdWUnLCAnImNvbG9yOiByZWQ7IHdpZHRoOiAyMDBweDsiJyk7Ci0KLSAgICAg
ICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTsK
LSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZp
bmlzaCgpIHsKLSAgICAgICAgZGVidWcoJy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLicpOwot
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOwotCi0gICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVz
dCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTdHlsZUF0dHJp
YnV0ZVByb3BlcnR5QWNjZXNzSWdub3JlTm9vcCgpIHsKLSAgICB2YXIgZGl2LCBwYXRoOwotICAg
IHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1Zygn
VGVzdGluZyB0aGF0IGEgbm8tb3Agc3R5bGUgcHJvcGVydHkgbXV0YXRpb24gZG9lcyBub3QgY3Jl
YXRlIE11dGF0aW9uIFJlY29yZHMuJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAg
ICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7
Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0
ZSgnc3R5bGUnLCAnY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OycpOwotICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOwotICAgICAgICBkaXYuc3R5
bGUucmVtb3ZlUHJvcGVydHkoJ2hlaWdodCcpOwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNo
LCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMnLCAnbnVsbCcpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsK
LSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAg
IHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSgp
IHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAg
ZGVidWcoJ1Rlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgdGhyb3VnaCBhbiBhdHRyIG5v
ZGUgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcycpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51
bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rp
b24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25z
OwotICAgICAgICB9KTsKLQotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOwotICAg
ICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVP
bGRWYWx1ZTogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LmF0dHJpYnV0ZXNbJ2RhdGEtdGVzdCddLnZh
bHVlID0gJ2Jhcic7Ci0KLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5n
dGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEt
dGVzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9v
IicpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycp
OwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVDaGlsZCgpIHsKLSAgICB2YXIgb2JzZXJ2
ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBt
dXRhdGluZyBhbiBhdHRyaWJ1dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQgdG8gYW4gYXR0ciBub2Rl
IGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMnKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxs
OwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9u
KG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28nKTsKLSAgICAg
ICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xk
VmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5hdHRyaWJ1dGVzWydkYXRhLXRlc3QnXS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYmFyJykpOwotCi0gICAgICAgIHNldFRp
bWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKLQotICAgICAgICBvYnNlcnZlci5kaXNj
b25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAg
ICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0QW5kUmVtb3ZlQXR0cmli
dXRlTm9kZSgpIHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsK
LSAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBtdXRhdGluZyB2aWEgc2V0QXR0cmlidXRlTm9kZSBk
ZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
LSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
dXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotICAgICAgICBkaXYuaWQgPSAnbXlJZCc7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2Rh
dGEtdGVzdCcsICdmb28nKTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmli
dXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIHZhciBhdHRy
ID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdkYXRhLXRlc3QnKTsKLSAgICAgICAgYXR0ci52
YWx1ZSA9ICdiYXInOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKLSAgICAg
ICAgYXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS1vdGhlcicpOwotICAgICAg
ICBhdHRyLnZhbHVlID0gJ2Jheic7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIp
OwotICAgICAgICBkaXYucmVtb3ZlQXR0cmlidXRlTm9kZShkaXYuYXR0cmlidXRlc1snaWQnXSk7
Ci0KLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOwotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtb3RoZXIiJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnbnVsbCcpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzJdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzJdLm9sZFZhbHVlJywgJyJteUlkIicpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nv
bm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAg
IH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RNaXhlZE5vZGVBbmRFbGVtZW50
T3BlcmF0aW9ucygpIHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgp
IHsKLSAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBzZXRBdHRyaWJ1dGUgb24gYW4gYXR0cmlidXRl
IHdpdGggYW4gZXhpc3RpbmcgQXR0ciBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7Ci0KLSAg
ICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0
YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5t
dXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICB2YXIgYXR0ciA9IGRvY3VtZW50LmNy
ZWF0ZUF0dHJpYnV0ZSgnZGF0YS10ZXN0Jyk7Ci0gICAgICAgIGF0dHIudmFsdWUgPSAnZm9vJzsK
LSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7Ci0gICAgICAgIG9ic2VydmVyLm9i
c2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0p
OwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRlc3QnLCAnYmFyJyk7Ci0KLSAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOwotCi0gICAgICAgIG9ic2Vy
dmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVz
dCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROYW1lZE5vZGVN
YXBPcGVyYXRpb25zKCkgewotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1bmN0aW9uIHN0YXJ0
KCkgewotICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IHNldE5hbWVkSXRlbSBhbmQgcmVtb3ZlTmFt
ZWRJdGVtIGRlbGl2ZXIgbXV0YXRpb24gcmVjb3JkcycpOwotCi0gICAgICAgIG11dGF0aW9ucyA9
IG51bGw7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRp
b25zOwotICAgICAgICB9KTsKLQotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOwot
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1
dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKLSAgICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGUoJ2RhdGEtdGVzdCcpOwotICAgICAgICBhdHRyLnZhbHVlID0gJ2Jhcic7Ci0gICAg
ICAgIGRpdi5hdHRyaWJ1dGVzLnNldE5hbWVkSXRlbShhdHRyKTsKLSAgICAgICAgZGl2LmF0dHJp
YnV0ZXMucmVtb3ZlTmFtZWRJdGVtKCdkYXRhLXRlc3QnKTsKLQotICAgICAgICBzZXRUaW1lb3V0
KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0udGFyZ2V0JywgJ2RpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZScsICciZGF0YS10ZXN0IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MV0udGFyZ2V0JywgJ2RpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmli
dXRlTmFtZScsICciZGF0YS10ZXN0IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFd
Lm9sZFZhbHVlJywgJyJiYXIiJyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwot
ICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAg
c3RhcnQoKTsKLX0KLQotdmFyIHRlc3RzID0gWwotICAgIHRlc3RCYXNpYywKLSAgICB0ZXN0V3Jv
bmdUeXBlLAotICAgIHRlc3RNdWx0aXBsZVJlZ2lzdHJhdGlvbiwKLSAgICB0ZXN0TXVsdGlwbGVP
YnNlcnZlcnMsCi0gICAgdGVzdE5hbWVzcGFjZVVSSSwKLSAgICB0ZXN0UHJvcGVydHlBY2Nlc3Ms
Ci0gICAgdGVzdE9yZGVyaW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkLAotICAgIHRlc3RPbGRWYWx1
ZSwKLSAgICB0ZXN0T2xkVmFsdWVBc1JlcXVlc3RlZCwKLSAgICB0ZXN0T2xkVmFsdWVVbmlvbk11
bHRpcGxlT2JzZXJ2YXRpb25zLAotICAgIHRlc3RJRExBdHRyaWJ1dGUsCi0gICAgdGVzdEF0dHJp
YnV0ZUZpbHRlciwKLSAgICB0ZXN0QXR0cmlidXRlRmlsdGVyU3VidHJlZSwKLSAgICB0ZXN0QXR0
cmlidXRlRmlsdGVyTm9uSFRNTEVsZW1lbnQsCi0gICAgdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhU
TUxEb2N1bWVudCwKLSAgICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcywKLSAgICB0
ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlLAotICAgIHRlc3RTdHlsZUF0
dHJpYnV0ZVByb3BlcnR5QWNjZXNzSWdub3JlTm9vcCwKLSAgICB0ZXN0TXV0YXRlVGhyb3VnaEF0
dHJOb2RlVmFsdWUsCi0gICAgdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZUNoaWxkLAotICAgIHRl
c3RTZXRBbmRSZW1vdmVBdHRyaWJ1dGVOb2RlLAotICAgIHRlc3RNaXhlZE5vZGVBbmRFbGVtZW50
T3BlcmF0aW9ucywKLSAgICB0ZXN0TmFtZWROb2RlTWFwT3BlcmF0aW9ucwotXTsKLXZhciB0ZXN0
SW5kZXggPSAwOwotCi1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsKLSAgICBpZiAodGVzdEluZGV4
IDwgdGVzdHMubGVuZ3RoKQotICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKLSAgICBlbHNl
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1kZXNjcmlwdGlvbignVGVzdCBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyLm9ic2VydmUgb24gYXR0cmlidXRlcycpOwotCi1pZiAoIXdpbmRvdy5X
ZWJLaXRNdXRhdGlvbk9ic2VydmVyKQotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKScpOwotZWxzZQotICAgIHJ1bk5leHRUZXN0KCk7
Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNl
cnZlLWNoYXJhY3RlcmRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9vYnNlcnZlLWNoYXJhY3RlcmRhdGEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZGZmM2I1NWQyNzZjYzE1YTY4MzliZWQ3ZDk3YjM4MmM2ZjdhZGZiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDYxICswLDAgQEAKLVRlc3QgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5vYnNlcnZl
IG9uIENoYXJhY3RlckRhdGEgbm9kZXMKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0K
LVRlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjaGFyYWN0ZXJEYXRhIG9ic2VydmF0aW9uLgotLi4u
Y2FuIGNoYXJhY3RlckRhdGEgY2hhbmdlcyBiZSBvYnNlcnZlZCBhdCBhbGwKLVBBU1MgbXV0YXRp
b25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRh
IgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGNoYXJEYXRhTm9kZQotLi4ub2JzZXJ2ZXIu
ZGlzY29ubmVjdCgpIHNob3VsZCBwcmV2ZW50IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRpb25z
LgotUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAotLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nvbm5l
Y3Qgd29ya3Mgd2l0aCB0aGUgc2FtZSBvYnNlcnZlci4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBp
cyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRh
dGlvbnNbMF0udGFyZ2V0IGlzIGNoYXJEYXRhTm9kZQotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBp
cyAiY2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBjaGFyRGF0YU5v
ZGUKLQotVGVzdGluZyB0aGF0IG9ic2VydmluZyB3aXRob3V0IHNwZWNpZnlpbmcgImNoYXJhY3Rl
ckRhdGEiIGRvZXMgbm90IHJlc3VsdCBpbiBoZWFyaW5nIGFib3V0IGNoYXJhY3RlckRhdGEgY2hh
bmdlcy4KLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLQotVGVzdGluZyB0aGF0IG11bHRpcGxlIG9i
c2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdpdmVuIG5vZGUgYW5kIGJvdGggcmVjZWl2
ZSBtdXRhdGlvbnMuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNb
MF0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBj
aGFyRGF0YU5vZGUKLVBBU1MgbXV0YXRpb25zMi5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnMy
WzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uczJbMF0udGFyZ2V0IGlz
IGNoYXJEYXRhTm9kZQotCi1UZXN0aW5nIG11dGF0aW9uIHJlY29yZHMgYXJlIGVucXVldWVkIGZv
ciBjaGFyYWN0ZXJEYXRhIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZpZWQgaXMgZGlzcGF0Y2hlZC4K
LVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJj
aGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLQot
VGVzdGluZyB0aGF0IG9sZFZhbHVlIGlzIHJldHVybmVkIHdoZW4gcmVxdWVzdGVkLgotUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoYXJhY3Rl
ckRhdGEiCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgY2hhckRhdGFOb2RlCi1QQVNTIG11
dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAi
Y2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBjaGFyRGF0YU5vZGUK
LVBBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVlIGlzICJiYXIiCi0KLVRlc3RpbmcgdGhhdCBvbGRW
YWx1ZSBpcyBkZWxpdmVyZWQgYXMgcmVxdWVzdGVkIChvciBub3QpLgotUEFTUyBtdXRhdGlvbnNX
aXRoT2xkVmFsdWUubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLnR5
cGUgaXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1dpdGhPbGRWYWx1ZVswXS5vbGRW
YWx1ZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25z
WzBdLnR5cGUgaXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBp
cyBudWxsCi0KLUFuIG9ic2VydmVyIHdpdGggbXVsdGlwbGUgb2JzZXJ2YXRpb25zIHdpbGwgZ2V0
IGNoYXJhY3RlckRhdGFPbGRWYWx1ZSBpZiBhbnkgZW50cmllcyByZXF1ZXN0IGl0LgotUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImNoYXJhY3Rl
ckRhdGEiCi1QQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgotCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWNoYXJhY3RlcmRhdGEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGFyYWN0ZXJkYXRhLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxY2FlYTIxZWE0MzA2YjZmY2ZmMmU0OWZkMGUzOTczN2Ex
MjY0NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWNoYXJhY3RlcmRhdGEuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDMyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ZGVzY3JpcHRp
b24+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi13aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci12YXIgbXV0YXRpb25zOwotdmFyIG11dGF0aW9uczI7Ci12YXIg
bXV0YXRpb25zV2l0aE9sZFZhbHVlOwotdmFyIGNhbGxzOwotdmFyIGNoYXJEYXRhTm9kZTsKLQot
ZnVuY3Rpb24gdGVzdEJhc2ljKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwot
Ci0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFz
cGVjdHMgb2YgY2hhcmFjdGVyRGF0YSBvYnNlcnZhdGlvbi4nKTsKLQotICAgICAgICBtdXRhdGlv
bnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
LSAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2Zvbyc7Ci0gICAgICAgIGNoYXJEYXRhTm9kZSA9
IGRpdi5maXJzdENoaWxkOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7Y2hhcmFjdGVy
RGF0YTogdHJ1ZX0pOwotICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQgPSAnYmFyJzsK
LSAgICAgICAgc2V0VGltZW91dChjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUsIDApOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIGNoZWNrRGlzY29ubmVjdEFuZE11dGF0ZSgpIHsKLSAgICAgICAgZGVi
dWcoJy4uLmNhbiBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsJyk7Ci0K
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2NoYXJEYXRhTm9kZScpOwotCi0gICAgICAg
IG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAg
ICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jheic7Ci0gICAgICAgIHNldFRpbWVvdXQo
Y2hlY2tOb3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0aXBsZSwgMCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gY2hlY2tOb3REZWxpdmVyZWRBbmRNdXRhdGVNdWx0aXBsZSgpIHsKLSAgICAgICAgZGVi
dWcoJy4uLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSBzaG91bGQgcHJldmVudCBmdXJ0aGVyIGRlbGl2
ZXJ5IG9mIG11dGF0aW9ucy4nKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251
bGwnKTsKLSAgICAgICAgY2hhckRhdGFOb2RlID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgpOwot
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0
cnVlIH0pOwotICAgICAgICBjaGFyRGF0YU5vZGUudGV4dENvbnRlbnQgPSAnZm9vJzsKLSAgICAg
ICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7Ci0gICAgICAgIHNldFRpbWVvdXQo
ZmluaXNoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIGRlYnVn
KCcuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIgZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9i
c2VydmVyLicpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsK
LSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdjaGFyRGF0YU5vZGUn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRh
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdjaGFyRGF0YU5v
ZGUnKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7
Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFdyb25nVHlwZSgpIHsKLSAgICB2YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsK
LQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9i
c2VydmluZyB3aXRob3V0IHNwZWNpZnlpbmcgImNoYXJhY3RlckRhdGEiIGRvZXMgbm90IHJlc3Vs
dCBpbiBoZWFyaW5nIGFib3V0IGNoYXJhY3RlckRhdGEgY2hhbmdlcy4nKTsKLQotICAgICAgICBt
dXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2hlbGxvJzsKLSAgICAgICAgY2hhckRh
dGFOb2RlID0gZGl2LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtj
aGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZXM6IHRydWV9KTsKLSAgICAgICAgY2hhckRhdGFOb2Rl
ID0gJ2dvb2RieWUnOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251
bGwnKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7
Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdE11bHRpcGxlT2JzZXJ2ZXJzKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9i
c2VydmVyOwotICAgIHZhciBvYnNlcnZlcjI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAg
ICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtdWx0aXBsZSBvYnNlcnZlcnMgY2FuIGJlIHJlZ2lz
dGVyZWQgdG8gYSBnaXZlbiBub2RlIGFuZCBib3RoIHJlY2VpdmUgbXV0YXRpb25zLicpOwotICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LnRleHRDb250ZW50ID0gJ2Zvbyc7Ci0gICAgICAgIGNo
YXJEYXRhTm9kZSA9IGRpdi5maXJzdENoaWxkOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9
IG07Ci0gICAgICAgIH0pOwotICAgICAgICBvYnNlcnZlcjIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMyID0gbTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7Y2hhcmFjdGVy
RGF0YTogdHJ1ZX0pOwotICAgICAgICBvYnNlcnZlcjIub2JzZXJ2ZShjaGFyRGF0YU5vZGUsIHtj
aGFyYWN0ZXJEYXRhOiB0cnVlfSk7Ci0gICAgICAgIGNoYXJEYXRhTm9kZS50ZXh0Q29udGVudCA9
ICdiYXInOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcx
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hhcmFjdGVyRGF0
YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnY2hhckRhdGFO
b2RlJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyLmxlbmd0aCcsICcxJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBdLnRhcmdldCcsICdjaGFyRGF0YU5vZGUnKTsK
LSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBvYnNlcnZlcjIuZGlzY29u
bmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAg
fQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE9yZGVyaW5nV3J0RE9NU3VidHJl
ZU1vZGlmaWVkKCkgewotICAgIHZhciBkaXYsIGRpdjIsIHN1YkRpdjsKLSAgICB2YXIgb2JzZXJ2
ZXI7Ci0gICAgdmFyIGxpc3RlbmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAg
IGRlYnVnKCdUZXN0aW5nIG11dGF0aW9uIHJlY29yZHMgYXJlIGVucXVldWVkIGZvciBjaGFyYWN0
ZXJEYXRhIGJlZm9yZSBET01TdWJ0cmVlTW9kaWZpZWQgaXMgZGlzcGF0Y2hlZC4nKTsKLQotICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgZGl2MiA9IGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwot
Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKSk7Ci0gICAgICAgIHN1YkRpdi50ZXh0Q29udGVudCA9ICdmb28nOwotICAgICAgICBj
aGFyRGF0YU5vZGUgPSBzdWJEaXYuZmlyc3RDaGlsZDsKLQotICAgICAgICBvYnNlcnZlciA9IG5l
dyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0
aW9ucyA9IG07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGxpc3RlbmVyID0gZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgZGl2Mi5zZXRBdHRyaWJ1dGUoJ2JheicsICdiYXQnKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCBs
aXN0ZW5lcik7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoY2hhckRhdGFOb2RlLCB7Y2hhcmFj
dGVyRGF0YTogdHJ1ZX0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdjIsIHthdHRyaWJ1
dGVzOiB0cnVlfSk7Ci0KLSAgICAgICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7
Ci0KLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOwot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoYXJhY3RlckRhdGEiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsK
LSAgICAgICAgZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIGxp
c3RlbmVyKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOwotICAgICAg
ICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVu
TmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0T2xk
VmFsdWUoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlv
biBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBvbGRWYWx1ZSBpcyByZXR1
cm5lZCB3aGVuIHJlcXVlc3RlZC4nKTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAg
ICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi50ZXh0
Q29udGVudCA9ICdmb28nOwotICAgICAgICBjaGFyRGF0YU5vZGUgPSBkaXYuZmlyc3RDaGlsZDsK
LSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
dXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0g
ICAgICAgIH0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJh
Y3RlckRhdGE6IHRydWUsIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0pOwotICAgICAgICBj
aGFyRGF0YU5vZGUudGV4dENvbnRlbnQgPSAnYmFyJzsKLSAgICAgICAgY2hhckRhdGFOb2RlLnRl
eHRDb250ZW50ID0gJ2Jheic7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMu
bGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJj
aGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcs
ICdjaGFyRGF0YU5vZGUnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1
ZScsICciZm9vIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImNo
YXJhY3RlckRhdGEiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFyZ2V0Jywg
J2NoYXJEYXRhTm9kZScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVl
JywgJyJiYXIiJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVi
dWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RPbGRWYWx1ZUFzUmVxdWVzdGVkKCkgewotICAgIHZhciBkaXY7Ci0g
ICAgdmFyIG9ic2VydmVyV2l0aE9sZFZhbHVlOwotICAgIHZhciBvYnNlcnZlcjsKLQotICAgIGZ1
bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IG9sZFZhbHVlIGlz
IGRlbGl2ZXJlZCBhcyByZXF1ZXN0ZWQgKG9yIG5vdCkuJyk7Ci0gICAgICAgIG11dGF0aW9ucyA9
IG51bGw7Ci0gICAgICAgIG11dGF0aW9uc1dpdGhPbGRWYWx1ZSA9IG51bGw7Ci0gICAgICAgIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkaXYudGV4dENvbnRl
bnQgPSAnZm9vJzsKLSAgICAgICAgY2hhckRhdGFOb2RlID0gZGl2LmZpcnN0Q2hpbGQ7Ci0gICAg
ICAgIG9ic2VydmVyV2l0aE9sZFZhbHVlID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zV2l0aE9sZFZh
bHVlID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdp
bmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgICAgIH0pOwotICAgICAgICBvYnNlcnZl
cldpdGhPbGRWYWx1ZS5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWUs
IGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZX0pOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZl
KGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsKLSAgICAgICAgY2hhckRhdGFO
b2RlLnRleHRDb250ZW50ID0gJ2Jhcic7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNXaXRoT2xkVmFsdWUubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1dpdGhPbGRWYWx1ZVswXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zV2l0aE9sZFZhbHVlWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJ251bGwnKTsKLSAgICAgICAgb2JzZXJ2ZXJX
aXRoT2xkVmFsdWUuZGlzY29ubmVjdCgpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7
Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAg
ICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0T2xkVmFsdWVVbmlvbk11bHRpcGxlT2JzZXJ2
YXRpb25zKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rp
b24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdBbiBvYnNlcnZlciB3aXRoIG11bHRpcGxlIG9i
c2VydmF0aW9ucyB3aWxsIGdldCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgaWYgYW55IGVudHJpZXMg
cmVxdWVzdCBpdC4nKTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi50ZXh0Q29udGVudCA9
ICdmb28nOwotICAgICAgICBjaGFyRGF0YU5vZGUgPSBkaXYuZmlyc3RDaGlsZDsKLSAgICAgICAg
b2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMp
IHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgICAgIH0p
OwotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoYXJhY3RlckRhdGE6IHRydWUsIGNo
YXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwotICAgICAgICBvYnNl
cnZlci5vYnNlcnZlKGNoYXJEYXRhTm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsKLSAgICAg
ICAgY2hhckRhdGFOb2RlLnRleHRDb250ZW50ID0gJ2Jhcic7Ci0gICAgICAgIHNldFRpbWVvdXQo
ZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0K
LQotICAgIHN0YXJ0KCk7Ci19Ci0KLXZhciB0ZXN0cyA9IFsKLSAgICB0ZXN0QmFzaWMsCi0gICAg
dGVzdFdyb25nVHlwZSwKLSAgICB0ZXN0TXVsdGlwbGVPYnNlcnZlcnMsCi0gICAgdGVzdE9yZGVy
aW5nV3J0RE9NU3VidHJlZU1vZGlmaWVkLAotICAgIHRlc3RPbGRWYWx1ZSwKLSAgICB0ZXN0T2xk
VmFsdWVBc1JlcXVlc3RlZCwKLSAgICB0ZXN0T2xkVmFsdWVVbmlvbk11bHRpcGxlT2JzZXJ2YXRp
b25zCi1dOwotdmFyIHRlc3RJbmRleCA9IDA7Ci0KLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgewot
ICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpCi0gICAgICAgIHRlc3RzW3Rlc3RJbmRl
eCsrXSgpOwotICAgIGVsc2UKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWRlc2NyaXB0
aW9uKCdUZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBDaGFyYWN0ZXJEYXRh
IG5vZGVzJyk7Ci0KLWlmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCi0gICAgdGVz
dEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7
Ci1lbHNlCi0gICAgcnVuTmV4dFRlc3QoKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hpbGRMaXN0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGlsZExp
c3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2JiMjc2NDJm
MWQ0NmJlZmJjMmQwMGZiMWFlNTlkOGUwNzdkMjBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1j
aGlsZExpc3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotVGVz
dCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9ic2VydmUgb24gYXR0cmlidXRlcy4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVRlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjaGlsZExp
c3Qgb2JzZXJ2YXRpb24uCi0uLi5jYW4gY2hpbGRMaXN0IGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQg
YWxsCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBp
cyAiY2hpbGRMaXN0IgotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQot
UEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MQotLi4ub2JzZXJ2
ZXIuZGlzY29ubmVjdCgpIHNob3VsZCBwcmV2ZW50IGZ1cnRoZXIgZGVsaXZlcnkgb2YgbXV0YXRp
b25zLgotUEFTUyBtdXRhdGlvbnMgaXMgbnVsbAotLi4ucmUtb2JzZXJ2aW5nIGFmdGVyIGRpc2Nv
bm5lY3Qgd29ya3Mgd2l0aCB0aGUgc2FtZSBvYnNlcnZlci4KLVBBU1MgbXV0YXRpb25zLmxlbmd0
aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCi1QQVNTIG11dGF0
aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnJlbW92
ZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MQotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hp
bGRMaXN0IgotUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNT
IG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0gaXMgcmVtb3ZlZERpdjIKLQotVGVzdGluZyB0
aGF0IG9ic2VydmluZyB3aXRob3V0IHNwZWNpZnlpbmcgImNoaWxkTGlzdCIgZG9lcyBub3QgcmVz
dWx0IGluIGhlYXJpbmcgYWJvdXQgY2hpbGRMaXN0IGNoYW5nZXMuCi1QQVNTIG11dGF0aW9ucyBp
cyBudWxsCi0KLVRlc3RpbmcgdGhhdCByZS1vYnNlcnZpbmcgdGhlIHNhbWUgbm9kZSB3aXRoIHRo
ZSBzYW1lIG9ic2VydmVyIGhhcyB0aGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgb3B0aW9ucy4K
LVBBU1MgY2FsbHMgaXMgMQotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRp
b25zWzBdLnR5cGUgaXMgImNoaWxkTGlzdCIKLVBBU1MgbXV0YXRpb25zIGlzIG51bGwKLQotVGVz
dGluZyB0aGF0IG11bHRpcGxlIG9ic2VydmVycyBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhIGdpdmVu
IG5vZGUgYW5kIGJvdGggcmVjZWl2ZSBtdXRhdGlvbnMuCi1QQVNTIG11dGF0aW9ucy5sZW5ndGgg
aXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgotUEFTUyBtdXRhdGlv
bnMyLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uczJbMF0udHlwZSBpcyAiY2hpbGRMaXN0Igot
Ci1UZXN0aW5nIHRoYXQgaW5uZXJUZXh0IGFuZCBpbm5lckhUTUwgYWx3YXlzIHJlc3VsdCBpbiBh
IHNpbmdsZSBjaGlsZExpc3QgbXV0YXRpb24uCi0uLi5pbm5lckhUTUwKLVBBU1MgbXV0YXRpb25z
Lmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCi1QQVNT
IG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS5h
ZGRlZE5vZGVzWzBdIGlzIGFkZGVkRGl2MQotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sx
XSBpcyBhZGRlZERpdjIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMl0gaXMgYWRkZWRE
aXYzCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXSBpcyByZW1vdmVkRGl2MQotUEFTUyBtdXRhdGlvbnNb
MF0ucmVtb3ZlZE5vZGVzWzFdIGlzIHJlbW92ZWREaXYyCi0uLi5pbm5lclRleHQKLVBBU1MgbXV0
YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3Qi
Ci1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9u
c1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDMKLQotVGVzdGluZyB0aGF0IHJlcGxhY2VDaGls
ZCByZXN1bHRzIGluIG1pbmltYWwgY2hpbGRMaXN0IG11dGF0aW9ucy4KLS4uLnNpbXBsZSByZXBs
YWNlIGNoaWxkCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0u
dHlwZSBpcyAiY2hpbGRMaXN0IgotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgg
aXMgMQotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXSBpcyBhZGRlZERpdjEKLVBBU1Mg
bXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzWzBdIGlzIHJlbW92ZWREaXYxCi0uLi5yZXBsYWNlIHdpdGggRG9jdW1lbnRG
cmFnbWVudAotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5
cGUgaXMgImNoaWxkTGlzdCIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlz
IDIKLVBBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0gaXMgYWRkZWREaXYxCi1QQVNTIG11
dGF0aW9uc1swXS5hZGRlZE5vZGVzWzFdIGlzIGFkZGVkRGl2MgotUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNb
MF0gaXMgcmVtb3ZlZERpdjEKLQotVGVzdGluZyB0aGF0IGluc2VydEJlZm9yZSByZXN1bHRzIGlu
IG1pbmltYWwgY2hpbGRMaXN0IG11dGF0aW9ucy4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAx
Ci1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCi1QQVNTIG11dGF0aW9uc1sw
XS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBd
IGlzIGFkZGVkRGl2MQotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sxXSBpcyBhZGRlZERp
djIKLVBBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAotCi1UZXN0aW5n
IHRoYXQgYXBwZW5kQ2hpbGQgcmVzdWx0cyBpbiBtaW5pbWFsIGNoaWxkTGlzdCBtdXRhdGlvbnMu
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
Y2hpbGRMaXN0IgotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgotUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXSBpcyBhZGRlZERpdjEKLVBBU1MgbXV0YXRpb25z
WzBdLmFkZGVkTm9kZXNbMV0gaXMgYWRkZWREaXYyCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVk
Tm9kZXMubGVuZ3RoIGlzIDAKLQotU2V0dGluZyBhbiBlbXB0eSBjaGlsZGxpc3QgdG8gdGhlIGVt
cHR5IHN0cmluZyB3aXRoIGlubmVySFRNTCBzaG91bGQgbm90IGFzc2VydC4KLVBBU1MgbXV0YXRp
b25zIGlzIG51bGwKLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1j
aGlsZExpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1jaGlsZExp
c3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNhODRkNDQzODg2NGFlNzJi
MjljNjg5OGM0NDBlMDk4ZDI4ZDkxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtY2hpbGRMaXN0
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MjcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08dGl0bGU+PC90aXRsZT4KLTwv
aGVhZD4KLTxib2R5PgotPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0PgotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci12YXIgbXV0
YXRpb25zLCBtdXRhdGlvbnMyOwotdmFyIGNhbGxzOwotdmFyIGRpdiwgcmVtb3ZlZERpdjEsIHJl
bW92ZWREaXYyLCBhZGRlZERpdjEsIGFkZGVkRGl2MiwgYWRkZWREaXYzOwotCi1mdW5jdGlvbiB0
ZXN0QmFzaWMoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5j
dGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBj
aGlsZExpc3Qgb2JzZXJ2YXRpb24uJyk7Ci0KLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAg
ICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAg
ICAgbXV0YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAgICByZW1vdmVkRGl2MSA9IGRpdi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHNldFRp
bWVvdXQoY2hlY2tEaXNjb25uZWN0QW5kTXV0YXRlLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBjaGVja0Rpc2Nvbm5lY3RBbmRNdXRhdGUoKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5jYW4gY2hp
bGRMaXN0IGNoYW5nZXMgYmUgb2JzZXJ2ZWQgYXQgYWxsJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5h
ZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlc1swXScsICdyZW1vdmVkRGl2MScpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51
bGw7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgcmVtb3ZlZERpdjEg
PSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAg
ICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVkQW5kTXV0YXRlTXVsdGlwbGUsIDApOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZlcmVkQW5kTXV0YXRlTXVsdGlwbGUoKSB7
Ci0gICAgICAgIGRlYnVnKCcuLi5vYnNlcnZlci5kaXNjb25uZWN0KCkgc2hvdWxkIHByZXZlbnQg
ZnVydGhlciBkZWxpdmVyeSBvZiBtdXRhdGlvbnMuJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9ucycsICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxk
TGlzdDogdHJ1ZSB9KTsKLSAgICAgICAgcmVtb3ZlZERpdjEgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2
LmZpcnN0Q2hpbGQpOwotICAgICAgICByZW1vdmVkRGl2MiA9IGRpdi5yZW1vdmVDaGlsZChkaXYu
Zmlyc3RDaGlsZCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5yZS1vYnNlcnZpbmcgYWZ0ZXIg
ZGlzY29ubmVjdCB3b3JrcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLicpOwotCi0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdJywgJ3JlbW92ZWREaXYxJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1swXScsICdyZW1vdmVkRGl2MicpOwotICAg
ICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAg
cnVuTmV4dFRlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0
V3JvbmdUeXBlKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVu
Y3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgb2JzZXJ2aW5nIHdp
dGhvdXQgc3BlY2lmeWluZyAiY2hpbGRMaXN0IiBkb2VzIG5vdCByZXN1bHQgaW4gaGVhcmluZyBh
Ym91dCBjaGlsZExpc3QgY2hhbmdlcy4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwot
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgb2Jz
ZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAg
ICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNl
cnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOwotICAg
ICAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAg
ICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNo
KCkgewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zJywgJ251bGwnKTsKLSAgICAgICAgb2Jz
ZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRU
ZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdE11bHRpcGxl
UmVnaXN0cmF0aW9uKCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAg
ZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgcmUtb2JzZXJ2
aW5nIHRoZSBzYW1lIG5vZGUgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciBoYXMgdGhlIGVmZmVjdCBv
ZiByZXNldHRpbmcgdGhlIG9wdGlvbnMuJyk7Ci0KLSAgICAgICAgY2FsbHMgPSAwOwotICAgICAg
ICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMgPSBtOwotICAgICAgICAgICAgY2Fs
bHMrKzsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hp
bGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOwotICAgICAgICBvYnNlcnZlci5v
YnNlcnZlKGRpdiwgeyBjaGlsZExpc3Q6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHNldFRpbWVvdXQoY2hl
Y2tEaXNjb25uZWN0QW5kTXV0YXRlLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja0Rp
c2Nvbm5lY3RBbmRNdXRhdGUoKSB7Ci0gICAgICAgIHNob3VsZEJlKCdjYWxscycsICcxJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIG11dGF0aW9u
cyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1
ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYs
IHsgYXR0cmlidXRlczogdHJ1ZSB9KTsKLSAgICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9ucycsICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAg
ZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RNdWx0aXBsZU9ic2VydmVycygpIHsKLSAgICB2YXIgZGl2Owot
ICAgIHZhciBvYnNlcnZlcjsKLSAgICB2YXIgb2JzZXJ2ZXIyOwotCi0gICAgZnVuY3Rpb24gc3Rh
cnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgbXVsdGlwbGUgb2JzZXJ2ZXJzIGNh
biBiZSByZWdpc3RlcmVkIHRvIGEgZ2l2ZW4gbm9kZSBhbmQgYm90aCByZWNlaXZlIG11dGF0aW9u
cy4nKTsKLSAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIG9ic2VydmVyMiA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9uczIgPSBtOwotICAgICAgICB9KTsK
LSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAg
ICAgICBvYnNlcnZlcjIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAg
ICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAg
ICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkg
ewotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zMi5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zMlswXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKLSAgICAgICAgb2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycp
OwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RJbm5lckhUTUxBbmRJbm5lclRleHQoKSB7Ci0gICAgdmFyIGRpdjsKLSAgICB2
YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rl
c3RpbmcgdGhhdCBpbm5lclRleHQgYW5kIGlubmVySFRNTCBhbHdheXMgcmVzdWx0IGluIGEgc2lu
Z2xlIGNoaWxkTGlzdCBtdXRhdGlvbi4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwot
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2
LmlubmVySFRNTCA9ICc8c3Bhbj5Gb288L3NwYW4+PGRpdj5CYXI8L2Rpdj4nOwotICAgICAgICBy
ZW1vdmVkRGl2MSA9IGRpdi5maXJzdENoaWxkOwotICAgICAgICByZW1vdmVkRGl2MiA9IHJlbW92
ZWREaXYxLm5leHRTaWJsaW5nOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIG11dGF0aW9ucyA9IG07Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGNoaWxkTGlzdDogdHJ1
ZSB9KTsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICdmb288aW1nIHNyYz0iYmFyLnBuZyI+PHA+
QmF6PC9wPic7Ci0gICAgICAgIGFkZGVkRGl2MSA9IGRpdi5jaGlsZE5vZGVzWzBdOwotICAgICAg
ICBhZGRlZERpdjIgPSBkaXYuY2hpbGROb2Rlc1sxXTsKLSAgICAgICAgYWRkZWREaXYzID0gZGl2
LmNoaWxkTm9kZXNbMl07Ci0gICAgICAgIHNldFRpbWVvdXQoY2hlY2tJbm5lckhUTUwsIDApOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrSW5uZXJIVE1MKCkgewotICAgICAgICBkZWJ1Zygn
Li4uaW5uZXJIVE1MJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAn
MScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImNoaWxkTGlzdCIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcz
Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1swXScsICdhZGRl
ZERpdjEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzFdJywg
J2FkZGVkRGl2MicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNb
Ml0nLCAnYWRkZWREaXYzJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVt
b3ZlZE5vZGVzWzBdJywgJ3JlbW92ZWREaXYxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzWzFdJywgJ3JlbW92ZWREaXYyJyk7Ci0KLSAgICAgICAgbXV0YXRp
b25zID0gbnVsbDsKLSAgICAgICAgZGl2LmlubmVyVGV4dCA9ICdmb28nOwotICAgICAgICBzZXRU
aW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAg
ICAgICBkZWJ1ZygnLi4uaW5uZXJUZXh0Jyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVz
Lmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5v
ZGVzLmxlbmd0aCcsICczJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAg
ICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0
KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZXBsYWNlQ2hpbGQoKSB7Ci0gICAgdmFyIGRpdjsKLSAg
ICB2YXIgb2JzZXJ2ZXI7Ci0gICAgdmFyIGZyYWdtZW50OwotCi0gICAgZnVuY3Rpb24gc3RhcnQo
KSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgcmVwbGFjZUNoaWxkIHJlc3VsdHMgaW4g
bWluaW1hbCBjaGlsZExpc3QgbXV0YXRpb25zLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51
bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAg
ICBkaXYuaW5uZXJIVE1MID0gJzxzcGFuPkZvbzwvc3Bhbj48ZGl2PkJhcjwvZGl2Pic7Ci0gICAg
ICAgIHJlbW92ZWREaXYxID0gZGl2LmZpcnN0Q2hpbGQ7Ci0KLSAgICAgICAgb2JzZXJ2ZXIgPSBu
ZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRh
dGlvbnMgPSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwg
eyBjaGlsZExpc3Q6IHRydWUgfSk7Ci0gICAgICAgIGFkZGVkRGl2MSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkaXYucmVwbGFjZUNoaWxkKGFkZGVkRGl2MSwgZGl2
LmZpcnN0Q2hpbGQpOwotICAgICAgICBzZXRUaW1lb3V0KGNoZWNrUmVwbGFjZVdpdGhOb2RlLCAw
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja1JlcGxhY2VXaXRoTm9kZSgpIHsKLSAgICAg
ICAgZGVidWcoJy4uLnNpbXBsZSByZXBsYWNlIGNoaWxkJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5h
ZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
YWRkZWROb2Rlc1swXScsICdhZGRlZERpdjEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0nLCAncmVtb3ZlZERpdjEnKTsKLQotICAgICAgICBtdXRh
dGlvbnMgPSBudWxsOwotICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKLSAgICAgICAgYWRkZWREaXYxID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICBhZGRlZERpdjIgPSBmcmFnbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHJl
bW92ZWREaXYxID0gZGl2LmZpcnN0Q2hpbGQ7Ci0KLSAgICAgICAgZGl2LnJlcGxhY2VDaGlsZChm
cmFnbWVudCwgcmVtb3ZlZERpdjEpOwotCi0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIGRlYnVnKCcuLi5yZXBs
YWNlIHdpdGggRG9jdW1lbnRGcmFnbWVudCcpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywg
JyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
cy5sZW5ndGgnLCAnMicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXNbMF0nLCAnYWRkZWREaXYxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRk
ZWROb2Rlc1sxXScsICdhZGRlZERpdjInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5yZW1vdmVkTm9kZXNbMF0nLCAncmVtb3ZlZERpdjEnKTsKLQotICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW5zZXJ0QmVmb3Jl
KCkgewotICAgIHZhciBkaXY7Ci0gICAgdmFyIG9ic2VydmVyOwotICAgIHZhciBmcmFnbWVudDsK
LQotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IGlu
c2VydEJlZm9yZSByZXN1bHRzIGluIG1pbmltYWwgY2hpbGRMaXN0IG11dGF0aW9ucy4nKTsKLQot
ICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8c3Bhbj5Gb288L3NwYW4+
JzsKLSAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
Ci0gICAgICAgIGFkZGVkRGl2MSA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgYWRkZWREaXYyID0gZnJhZ21lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotCi0gICAgICAgIG9ic2VydmVyID0g
bmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0
YXRpb25zID0gbTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYs
IHsgY2hpbGRMaXN0OiB0cnVlIH0pOwotICAgICAgICBkaXYuaW5zZXJ0QmVmb3JlKGZyYWdtZW50
LCBkaXYuZmlyc3RDaGlsZCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9
Ci0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImNoaWxkTGlzdCInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVz
Lmxlbmd0aCcsICcyJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
c1swXScsICdhZGRlZERpdjEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRl
ZE5vZGVzWzFdJywgJ2FkZGVkRGl2MicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0K
LQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RBcHBlbmRDaGlsZCgpIHsKLSAgICB2
YXIgZGl2OwotICAgIHZhciBvYnNlcnZlcjsKLSAgICB2YXIgZnJhZ21lbnQ7Ci0KLSAgICBmdW5j
dGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBhcHBlbmRDaGlsZCBy
ZXN1bHRzIGluIG1pbmltYWwgY2hpbGRMaXN0IG11dGF0aW9ucy4nKTsKLQotICAgICAgICBtdXRh
dGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8c3Bhbj5Gb288L3NwYW4+JzsKLSAgICAgICAg
ZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIGFk
ZGVkRGl2MSA9IGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKLSAgICAgICAgYWRkZWREaXYyID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykpOwotCi0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgewotICAgICAgICAgICAgbXV0YXRpb25zID0gbTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgY2hpbGRMaXN0
OiB0cnVlIH0pOwotICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpOwotICAgICAgICBz
ZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewot
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdJywgJ2FkZGVkRGl2MScpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMV0nLCAnYWRkZWREaXYyJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7Ci0K
LSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAg
ICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24g
dGVzdElubmVySFRNTEVtcHR5KCkgewotICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBk
ZWJ1ZygnU2V0dGluZyBhbiBlbXB0eSBjaGlsZGxpc3QgdG8gdGhlIGVtcHR5IHN0cmluZyB3aXRo
IGlubmVySFRNTCBzaG91bGQgbm90IGFzc2VydC4nKTsKLQotICAgICAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0g
ICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0
YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotICAg
ICAgICB9KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9
KTsKLSAgICAgICAgZGl2LmlubmVySFRNTCA9ICcnOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlz
aCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBzaG91bGRC
ZU51bGwoJ211dGF0aW9ucycpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRU
ZXN0KCk7Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotdmFyIHRlc3RzID0gW3Rlc3RCYXNp
YywgdGVzdFdyb25nVHlwZSwgdGVzdE11bHRpcGxlUmVnaXN0cmF0aW9uLCB0ZXN0TXVsdGlwbGVP
YnNlcnZlcnMsIHRlc3RJbm5lckhUTUxBbmRJbm5lclRleHQsIHRlc3RSZXBsYWNlQ2hpbGQsIHRl
c3RJbnNlcnRCZWZvcmUsIHRlc3RBcHBlbmRDaGlsZCwgdGVzdElubmVySFRNTEVtcHR5XTsKLXZh
ciB0ZXN0SW5kZXggPSAwOwotIAotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7Ci0gICAgaWYgKHRl
c3RJbmRleCA8IHRlc3RzLmxlbmd0aCkKLSAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7Ci0g
ICAgZWxzZQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3Qg
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5vYnNlcnZlIG9uIGF0dHJpYnV0ZXMuJyk7Ci0KLWlmICgh
d2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCi0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0
IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7Ci1lbHNlCi0gICAgcnVuTmV4
dFRlc3QoKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtZXhjZXB0aW9ucy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtZXhjZXB0aW9ucy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNjgzYWQ4YjYzZGFiZWQ0YjYzM2IwOTUy
N2I5NWQ1ZDEyY2E4ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGVzdCB0aGF0IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSB0aHJvd3MgZXhjZXB0aW9ucyBhcHByb3ByaWF0ZWx5Ci0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG9ic2VydmVyLm9ic2VydmUoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgb2Jz
ZXJ2ZXIub2JzZXJ2ZShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KLVBBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZSh1bmRlZmluZWQpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBvYnNlcnZlci5vYnNl
cnZlKGRvY3VtZW50LmJvZHkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgotUEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIG51bGwpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNT
IG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgotUEFTUyBvYnNlcnZlci5v
YnNlcnZlKG51bGwsIHthdHRyaWJ1dGVzOiB0cnVlfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
b3RGb3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDguCi1QQVNTIG9ic2VydmVyLm9ic2VydmUodW5k
ZWZpbmVkLCB7YXR0cmlidXRlczogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90Rm91
bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4LgotUEFTUyBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50
LmJvZHksIHtzdWJ0cmVlOiB0cnVlfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTeW50YXhFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1Mgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5
LCB7Y2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZX0pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCi1QQVNTIG9ic2VydmVy
Lm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGFP
bGRWYWx1ZTogdHJ1ZX0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBF
eGNlcHRpb24gMTIuCi1QQVNTIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2NoYXJh
Y3RlckRhdGE6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWyJpZCJdfSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMi4KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL29ic2VydmUtZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlLWV4Y2VwdGlvbnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDQ2NTdiNmRkN2MyZTMzMTI4M2UyODkyNWNkZjkwYzVkZjQ2MjA1OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL29ic2VydmUtZXhjZXB0aW9ucy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08dGl0bGU+PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ZGVzY3JpcHRp
b24+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBy
dW5UZXN0KCkgewotICAgIHdpbmRvdy5vYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeyB9KTsKLSAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIu
b2JzZXJ2ZSgpJyk7Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUobnVsbCknKTsK
LSAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZSh1bmRlZmluZWQpJyk7Ci0gICAgc2hv
dWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSknKTsKLSAgICBzaG91bGRU
aHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCBudWxsKScpOwotICAgIHNob3Vs
ZFRocm93KCdvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHVuZGVmaW5lZCknKTsKLSAg
ICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShudWxsLCB7YXR0cmlidXRlczogdHJ1ZX0p
Jyk7Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUodW5kZWZpbmVkLCB7YXR0cmli
dXRlczogdHJ1ZX0pJyk7Ci0gICAgc2hvdWxkVGhyb3coJ29ic2VydmVyLm9ic2VydmUoZG9jdW1l
bnQuYm9keSwge3N1YnRyZWU6IHRydWV9KScpOwotICAgIHNob3VsZFRocm93KCdvYnNlcnZlci5v
YnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVl
OiB0cnVlfSknKTsKLSAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5i
b2R5LCB7YXR0cmlidXRlczogdHJ1ZSwgY2hhcmFjdGVyRGF0YU9sZFZhbHVlOiB0cnVlfSknKTsK
LSAgICBzaG91bGRUaHJvdygnb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hhcmFj
dGVyRGF0YTogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbImlkIl19KScpOwotfQotCi1kZXNjcmlw
dGlvbignVGVzdCB0aGF0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSB0aHJvd3MgZXhj
ZXB0aW9ucyBhcHByb3ByaWF0ZWx5Jyk7Ci0KLWlmICghd2luZG93LldlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIpCi0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpJyk7Ci1lbHNlCi0gICAgcnVuVGVzdCgpOwotCi08L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2
ZS1zdWJ0cmVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2
ZS1zdWJ0cmVlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg5
NGRjZGExYjNmNmQyZDM0OWJkN2M0YTlhNGNkMDY5YTRlNjllZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29i
c2VydmUtc3VidHJlZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBA
Ci1UZXN0IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSBvbiBhIHN1YnRyZWUKLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVRlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBzdWJ0
cmVlIG9ic2VydmF0aW9uLgotLi4uYXR0cmlidXRlIGFuZCBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMg
aW4gc3VidHJlZQotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzBd
LnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgc3ViRGl2
Ci1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBp
cyAiY2hhcmFjdGVyRGF0YSIKLVBBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBzdWJEaXYuZmly
c3RDaGlsZAotCi1UZXN0aW5nIHR3byBvYnNlcnZlcnMgYXQgZGlmZmVyZW50IGRlcHRocy4KLVBB
U1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRy
aWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRl
TmFtZXNwYWNlIGlzIG51bGwKLVBBU1MgbXV0YXRpb25zMi5sZW5ndGggaXMgMQotUEFTUyBtdXRh
dGlvbnMyWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uczJbMF0udGFyZ2V0
IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlvbnMyWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImZvbyIKLVBB
U1MgbXV0YXRpb25zMlswXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAotCi1UZXN0aW5nIG9u
ZSBvYnNlcnZlciBhdCB0d28gZGlmZmVyZW50IGRlcHRocy4KLVBBU1MgY2FsbHMgaXMgMQotUEFT
UyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJp
YnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgc3ViRGl2Ci1QQVNTIG11dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lc3BhY2UgaXMgbnVsbAotCi1UZXN0aW5nIHRoYXQgdHJhbnNpZW50bHkgZGV0YWNoZWQgbm9k
ZXMgYXJlIHN0aWxsIG9ic2VydmVkIHZpYSBzdWJ0cmVlLgotLi4uYm90aCBjaGFuZ2VzIHNob3Vs
ZCBiZSByZWNlaXZlZC4gQ2hhbmdlIGRldGFjaGVkIHN1YkRpdiBhZ2Fpbi4KLVBBU1MgbXV0YXRp
b25zLmxlbmd0aCBpcyAyCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgot
UEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZSBpcyAiZm9vIgotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRl
cyIKLVBBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBzdWJEaXYKLVBBU1MgbXV0YXRpb25zWzFd
LmF0dHJpYnV0ZU5hbWUgaXMgInRlc3QiCi0uLi50cmFuc2llbnQgc3VidHJlZSBvYnNlcnZhdGlv
biB3YXMgc3RvcHBlZCBhZnRlciBkZWxpdmVyeSwgc28gc3ViRGl2IGNoYW5nZSBzaG91bGQgbm90
IGJlIHJlY2VpdmVkLiBSZWF0dGFjaCBhbmQgY2hhbmdlIGFnYWluLgotUEFTUyBtdXRhdGlvbnMg
aXMgbnVsbAotLi4ucmVhdHRhY2hlZCBzdWJ0cmVlIHNob3VsZCBub3cgYmUgb2JzZXJ2YWJsZS4g
VHJ5IGRldGFjaGluZyBhbmQgcmUtb2JzZXJ2aW5nLgotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlz
IDEKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9u
c1swXS50YXJnZXQgaXMgc3ViRGl2Ci1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlz
ICJmb28iCi0uLi5UaGUgY2hhbmdlIG1hZGUgYmVmb3JlIHJlLW9ic2VydmluZyBzaG91bGQgYmUg
cmVjZWl2ZWQsIGJ1dCBub3QgdGhlIG9uZSBhZnRlci4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBp
cyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRh
dGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdi5maXJzdENoaWxkCi0KLVRlc3RpbmcgY29ycmVjdCBi
ZWhhdmlvciBvZiB0cmFuc2llbnQgb2JzZXJ2YXRpb24gd2l0aCBjb21wbGV4IG1vdmVtZW50IC4K
LS4uLkFsbCBjaGFuZ2VzIHNob3VsZCBiZSByZWNlaXZlZCBleGNlcHQgZm9yIHNldHRpbmcgdGhl
ICJkIiBhdHRyaWJ1dGUgb24gc3ViRGl2MyBiZWZvcmUgaXQgd2FzIHJlYWNoYWJsZSBmcm9tIGRp
di4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyA2Ci1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYSIKLVBBU1MgbXV0YXRpb25zWzFdLnR5cGUg
aXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgc3ViRGl2MgotUEFT
UyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiYiIKLVBBU1MgbXV0YXRpb25zWzJdLnR5
cGUgaXMgImNoYXJhY3RlckRhdGEiCi1QQVNTIG11dGF0aW9uc1syXS50YXJnZXQgaXMgdGV4dAot
UEFTUyBtdXRhdGlvbnNbM10udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzNd
LnRhcmdldCBpcyBzdWJEaXYyCi1QQVNTIG11dGF0aW9uc1szXS5hdHRyaWJ1dGVOYW1lIGlzICJl
IgotUEFTUyBtdXRhdGlvbnNbNF0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25z
WzRdLnRhcmdldCBpcyBzdWJEaXYzCi1QQVNTIG11dGF0aW9uc1s0XS5hdHRyaWJ1dGVOYW1lIGlz
ICJmIgotUEFTUyBtdXRhdGlvbnNbNV0udHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRp
b25zWzVdLnRhcmdldCBpcyBzdWJEaXYyCi1QQVNTIG11dGF0aW9uc1s1XS5hdHRyaWJ1dGVOYW1l
IGlzICJnIgotCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLXN1YnRy
ZWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1zdWJ0cmVlLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZTQwMjg1ZTJiOGI3MWQyMjI2ZmQzNjE4
MWRhNGI4NTNhMjA1NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLXN1YnRyZWUuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTx0aXRsZT48L3RpdGxlPgotPC9oZWFkPgotPGJv
ZHk+Ci08cCBpZD1kZXNjcmlwdGlvbj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQ+Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXZhciBtdXRhdGlvbnM7Ci12
YXIgbXV0YXRpb25zMjsKLXZhciBkaXY7Ci12YXIgc3ViRGl2LCBzdWJEaXYyLCBzdWJEaXYzLCB0
ZXh0OwotdmFyIGNhbGxzOwotCi1mdW5jdGlvbiB0ZXN0QmFzaWMoKSB7Ci0gICAgdmFyIG9ic2Vy
dmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIGJh
c2ljIGFzcGVjdHMgb2Ygc3VidHJlZSBvYnNlcnZhdGlvbi4nKTsKLQotICAgICAgICBtdXRhdGlv
bnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
LSAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpKTsKLSAgICAgICAgc3ViRGl2LmlubmVySFRNTCA9ICdoZWxsbywgd29ybGQnOwotICAg
ICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0
aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVl
LCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci0gICAgICAgIHN1YkRpdi5z
ZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAgICAgc3ViRGl2LmZpcnN0Q2hpbGQudGV4
dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOwotICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAgICAgICBkZWJ1ZygnLi4uYXR0cmli
dXRlIGFuZCBjaGFyYWN0ZXJEYXRhIGNoYW5nZXMgaW4gc3VidHJlZScpOwotCi0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOwotICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0TXVsdGlwbGVPYnNl
cnZlcnMoKSB7Ci0gICAgdmFyIG9ic2VydmVyOwotICAgIHZhciBvYnNlcnZlcjI7Ci0KLSAgICBm
dW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdHdvIG9ic2VydmVycyBh
dCBkaWZmZXJlbnQgZGVwdGhzLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAg
ICAgIG11dGF0aW9uczIgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRh
dGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgICAgIH0pOwotICAgICAgICBvYnNlcnZlcjIgPSBuZXcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAg
IHdpbmRvdy5tdXRhdGlvbnMyID0gbXV0YXRpb25zOwotICAgICAgICB9KTsKLQotICAgICAgICBv
YnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsK
LSAgICAgICAgb2JzZXJ2ZXIyLm9ic2VydmUoc3ViRGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOwot
ICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28nLCAnYmFyJyk7Ci0gICAgICAgIHNldFRp
bWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uczIubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJb
MF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uczJb
MF0udGFyZ2V0JywgJ3N1YkRpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zMlswXS5h
dHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMyWzBd
LmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5l
Y3QoKTsKLSAgICAgICAgb2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycp
OwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLQotICAgIHN0YXJ0KCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RNdWx0aXBsZU9ic2VydmF0aW9ucygpIHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0K
LSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3Rpbmcgb25lIG9ic2Vy
dmVyIGF0IHR3byBkaWZmZXJlbnQgZGVwdGhzLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51
bGw7Ci0gICAgICAgIGNhbGxzID0gMDsKLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7Ci0gICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0
YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICAgICAgKytjYWxsczsKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVl
OiB0cnVlfSk7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoc3ViRGl2LCB7YXR0cmlidXRlczog
dHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOwotICAgICAgICBzdWJEaXYuc2V0QXR0cmlidXRlKCdmb28n
LCAnYmFyJyk7Ci0gICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdjYWxscycsICcxJyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKLSAgICAgICAgb2JzZXJ2ZXIu
ZGlzY29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7
Ci0gICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFRyYW5zaWVudERldGFj
aGVkQmFzaWMoKSB7Ci0gICAgdmFyIG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7
Ci0gICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgdHJhbnNpZW50bHkgZGV0YWNoZWQgbm9kZXMg
YXJlIHN0aWxsIG9ic2VydmVkIHZpYSBzdWJ0cmVlLicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9
IG51bGw7Ci0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAg
ICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykpOwotICAgICAgICBzdWJEaXYuaW5uZXJIVE1MID0gJ2hlbGxvLCB3b3JsZCc7Ci0gICAgICAg
IG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25z
KSB7Ci0gICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOwotICAgICAgICB9
KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIGNo
YXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAgICAgc3ViRGl2LnNldEF0
dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBkaXYucmVtb3ZlQ2hpbGQoc3ViRGl2KTsK
LSAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgndGVzdCcsICd0ZXN0Jyk7Ci0gICAgICAgIHNl
dFRpbWVvdXQoY2hlY2tEZWxpdmVyZWRBbmRDaGFuZ2VBZ2FpbiwgMCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gY2hlY2tEZWxpdmVyZWRBbmRDaGFuZ2VBZ2FpbigpIHsKLSAgICAgICAgZGVidWco
Jy4uLmJvdGggY2hhbmdlcyBzaG91bGQgYmUgcmVjZWl2ZWQuIENoYW5nZSBkZXRhY2hlZCBzdWJE
aXYgYWdhaW4uJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImZvbyInKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJ0ZXN0IicpOwotCi0gICAg
ICAgIG11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2Zvbycs
ICdiYXonKTsKLQotICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTm90RGVsaXZlcmVkQW5kUmVhdHRh
Y2gpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrTm90RGVsaXZlcmVkQW5kUmVhdHRhY2go
KSB7Ci0gICAgICAgIGRlYnVnKCcuLi50cmFuc2llbnQgc3VidHJlZSBvYnNlcnZhdGlvbiB3YXMg
c3RvcHBlZCBhZnRlciBkZWxpdmVyeSwgc28gc3ViRGl2IGNoYW5nZSBzaG91bGQgbm90IGJlIHJl
Y2VpdmVkLiBSZWF0dGFjaCBhbmQgY2hhbmdlIGFnYWluLicpOwotCi0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMnLCAnbnVsbCcpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51bGwKLSAgICAg
ICAgZGl2LmFwcGVuZENoaWxkKHN1YkRpdik7Ci0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUo
J2ZvbycsICdiYXQnKTsKLQotICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRGVsaXZlcmVkQW5kUmVv
YnNlcnZlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja0RlbGl2ZXJlZEFuZFJlb2JzZXJ2
ZSgpIHsKLSAgICAgICAgZGVidWcoJy4uLnJlYXR0YWNoZWQgc3VidHJlZSBzaG91bGQgbm93IGJl
IG9ic2VydmFibGUuIFRyeSBkZXRhY2hpbmcgYW5kIHJlLW9ic2VydmluZy4nKTsKLQotICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotCi0gICAgICAgIG11dGF0aW9ucyA9IG51
bGw7Ci0gICAgICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOwotICAgICAgICBzdWJEaXYuZmly
c3RDaGlsZC50ZXh0Q29udGVudCA9ICdiYWRieWUnOwotICAgICAgICBvYnNlcnZlci5vYnNlcnZl
KGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRy
dWV9KTsKLSAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JvbycpOwotCi0gICAg
ICAgIHNldFRpbWVvdXQoZmluaXNoKTsKLSAgICB9Ci0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKLSAgICAgICAgZGVidWcoJy4uLlRoZSBjaGFuZ2UgbWFkZSBiZWZvcmUgcmUtb2JzZXJ2aW5n
IHNob3VsZCBiZSByZWNlaXZlZCwgYnV0IG5vdCB0aGUgb25lIGFmdGVyLicpOwotCi0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRhIicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYuZmlyc3RDaGlsZCcpOwotCi0gICAgICAgIG9i
c2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0
VGVzdCgpOwotICAgIH0KLSAgICBzdGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0VHJhbnNpZW50
RGV0YWNoZWREZXRhaWxlZCgpIHsKLSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBz
dGFydCgpIHsKLSAgICAgICAgZGVidWcoJ1Rlc3RpbmcgY29ycmVjdCBiZWhhdmlvciBvZiB0cmFu
c2llbnQgb2JzZXJ2YXRpb24gd2l0aCBjb21wbGV4IG1vdmVtZW50IC4nKTsKLQotICAgICAgICBt
dXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgc3ViRGl2MiA9IHN1YkRpdi5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHN1YkRpdjIuaW5uZXJIVE1MID0g
J2hlbGxvLCB3b3JsZCc7Ci0gICAgICAgIHN1YkRpdjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLQotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11
dGF0aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHth
dHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7Ci0g
ICAgICAgIGRpdi5yZW1vdmVDaGlsZChzdWJEaXYpOwotICAgICAgICBzdWJEaXYucmVtb3ZlQ2hp
bGQoc3ViRGl2Mik7Ci0gICAgICAgIHRleHQgPSBzdWJEaXYyLnJlbW92ZUNoaWxkKHN1YkRpdjIu
Zmlyc3RDaGlsZCk7Ci0KLSAgICAgICAgc3ViRGl2LnNldEF0dHJpYnV0ZSgnYScsICdhJyk7Ci0g
ICAgICAgIHN1YkRpdjIuc2V0QXR0cmlidXRlKCdiJywgJ2InKTsKLSAgICAgICAgdGV4dC50ZXh0
Q29udGVudCA9ICdjJzsKLSAgICAgICAgc3ViRGl2My5hcHBlbmRDaGlsZChzdWJEaXYyKTsKLSAg
ICAgICAgc3ViRGl2My5zZXRBdHRyaWJ1dGUoJ2QnLCAnZCcpOwotICAgICAgICBzdWJEaXYyLnNl
dEF0dHJpYnV0ZSgnZScsICdlJyk7Ci0gICAgICAgIGRpdi5hcHBlbmRDaGlsZChzdWJEaXYzKTsK
LSAgICAgICAgc3ViRGl2My5zZXRBdHRyaWJ1dGUoJ2YnLCAnZicpOwotICAgICAgICBzdWJEaXYy
LnNldEF0dHJpYnV0ZSgnZycsICdnJyk7Ci0KLSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDAp
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgZGVidWcoJy4uLkFs
bCBjaGFuZ2VzIHNob3VsZCBiZSByZWNlaXZlZCBleGNlcHQgZm9yIHNldHRpbmcgdGhlICJkIiBh
dHRyaWJ1dGUgb24gc3ViRGl2MyBiZWZvcmUgaXQgd2FzIHJlYWNoYWJsZSBmcm9tIGRpdi4nKTsK
LQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc2Jyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYSInKTsKLQotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0udGFyZ2V0JywgJ3N1YkRpdjInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJiIicpOwotCi0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMl0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1syXS50YXJnZXQnLCAndGV4dCcpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbM10udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1szXS50YXJnZXQnLCAnc3ViRGl2MicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzNdLmF0dHJpYnV0ZU5hbWUnLCAnImUiJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1s0XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzRdLnRhcmdldCcsICdzdWJEaXYzJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbNF0u
YXR0cmlidXRlTmFtZScsICciZiInKTsKLQotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzVd
LnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbNV0u
dGFyZ2V0JywgJ3N1YkRpdjInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1s1XS5hdHRy
aWJ1dGVOYW1lJywgJyJnIicpOwotCi0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAg
ICAgICAgZGVidWcoJycpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLSAgICBzdGFy
dCgpOwotfQotCi12YXIgdGVzdHMgPSBbdGVzdEJhc2ljLCB0ZXN0TXVsdGlwbGVPYnNlcnZlcnMs
IHRlc3RNdWx0aXBsZU9ic2VydmF0aW9ucywgdGVzdFRyYW5zaWVudERldGFjaGVkQmFzaWMsIHRl
c3RUcmFuc2llbnREZXRhY2hlZERldGFpbGVkXTsKLXZhciB0ZXN0SW5kZXggPSAwOwotCi1mdW5j
dGlvbiBydW5OZXh0VGVzdCgpIHsKLSAgICBpZiAodGVzdEluZGV4IDwgdGVzdHMubGVuZ3RoKQot
ICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi1kZXNjcmlwdGlvbignVGVzdCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLm9i
c2VydmUgb24gYSBzdWJ0cmVlJyk7Ci0KLWlmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2
ZXIpCi0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpJyk7Ci1lbHNlCi0gICAgcnVuTmV4dFRlc3QoKTsKLQotPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2Vy
dmVyLXdyYXBwZXItZHJvcG9mZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM4YzBmMmU5ZGNjNjQxNjVkZDgyYTdkMTI0YzVmMzI5ZWMzYmU5M2Mu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotTXV0YXRpb25PYnNlcnZlciB3cmFwcGVycyBz
aG91bGQgc3Vydml2ZSBHQyBmb3IgcGFzc2luZyBpbnRvIHRoZSBjYWxsYmFjayBldmVuIGlmIEpT
IGhhcyBsb3N0IHJlZmVyZW5jZXMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIG9ic2VydmVyLnRlc3RQcm9wZXJ0eSBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLXRy
YW5zaWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2M2E1
NTNlYzIyMzZjYzFmZWRkMzFlOGVkZjExYTQ0MWMzYjZiYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNl
cnZlci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDEwICswLDAgQEAKLU11dGF0aW9uT2JzZXJ2ZXIgd3JhcHBlcnMgc2hvdWxkIHN1cnZp
dmUgR0MgZm9yIHBhc3NpbmcgaW50byB0aGUgY2FsbGJhY2sgZXZlbiBpZiBKUyBoYXMgbG9zdCBy
ZWZlcmVuY2VzIGFuZCB0aGUgb25seSByZW1haW5pbmcgb2JzZXJ2YXRpb25zIGFyZSB0cmFuc2ll
bnQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG9ic2VydmVyLnRlc3RQ
cm9wZXJ0eSBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZl
ci13cmFwcGVyLWRyb3BvZmYtdHJhbnNpZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10cmFuc2llbnQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2RjODQyNThjMGU3YTg3OTA5YWYyMjEwNmI2YzE1MjhiODg1ZDQ2
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmVyLXdyYXBwZXItZHJvcG9mZi10cmFuc2llbnQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotCi08c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdD4KLWRlc2NyaXB0aW9uKCdNdXRhdGlvbk9ic2VydmVyIHdyYXBwZXJzIHNob3VsZCBzdXJ2
aXZlIEdDIGZvciBwYXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2ZW4gaWYgSlMgaGFzIGxvc3Qg
cmVmZXJlbmNlcyBhbmQgdGhlIG9ubHkgcmVtYWluaW5nIG9ic2VydmF0aW9ucyBhcmUgdHJhbnNp
ZW50LicpOwotCi1qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24gYWRkT2JzZXJ2ZXIo
bm9kZSwgZm4pIHsKLSAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmbik7Ci0gICAgb2JzZXJ2ZXIudGVzdFByb3BlcnR5ID0gdHJ1ZTsKLSAgICBvYnNlcnZlci5v
YnNlcnZlKG5vZGUsIHthdHRyaWJ1dGVzOnRydWUsIHN1YnRyZWU6IHRydWV9KTsKLX0KLQotb25s
b2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICB2YXIgY2hpbGQgPSByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKSk7Ci0gICAgYWRkT2JzZXJ2ZXIocm9vdCwgZnVuY3Rpb24ocmVjb3Jk
cywgb2JzZXJ2ZXIpIHsKLSAgICAgICAgd2luZG93Lm9ic2VydmVyID0gb2JzZXJ2ZXI7Ci0gICAg
ICAgIHNob3VsZEJlKCdvYnNlcnZlci50ZXN0UHJvcGVydHknLCAndHJ1ZScpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLQotICAgIHJvb3QucmVtb3ZlQ2hpbGQoY2hpbGQpOwot
ICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnZm9vJywgJ2JhcicpOwotICAgIHJvb3QgPSBudWxsOwot
Ci0gICAgZ2MoKTsKLX07Ci08L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vb2JzZXJ2ZXItd3JhcHBlci1kcm9wb2ZmLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM1ZGJjYmJmMDk1ZWRmNDQ1MGY0NTZjZTEzYTYzNjM2NzNjZTE0Yjgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlci13cmFwcGVyLWRyb3BvZmYuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotCi08c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLWRlc2Ny
aXB0aW9uKCdNdXRhdGlvbk9ic2VydmVyIHdyYXBwZXJzIHNob3VsZCBzdXJ2aXZlIEdDIGZvciBw
YXNzaW5nIGludG8gdGhlIGNhbGxiYWNrIGV2ZW4gaWYgSlMgaGFzIGxvc3QgcmVmZXJlbmNlcy4n
KTsKLQotanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLWZ1bmN0aW9uIGFkZE9ic2VydmVyKG5vZGUs
IGZuKSB7Ci0gICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZm4p
OwotICAgIG9ic2VydmVyLnRlc3RQcm9wZXJ0eSA9IHRydWU7Ci0gICAgb2JzZXJ2ZXIub2JzZXJ2
ZShub2RlLCB7YXR0cmlidXRlczp0cnVlfSk7Ci19Ci0KLW9ubG9hZCA9IGZ1bmN0aW9uKCkgewot
ICAgIGFkZE9ic2VydmVyKGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uKHJlY29yZHMsIG9ic2VydmVy
KSB7Ci0gICAgICAgIHdpbmRvdy5vYnNlcnZlciA9IG9ic2VydmVyOwotICAgICAgICBzaG91bGRC
ZSgnb2JzZXJ2ZXIudGVzdFByb3BlcnR5JywgJ3RydWUnKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgfSk7Ci0KLSAgICBnYygpOwotCi0gICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1
dGUoJ3RvdWNoJywgJ3RoZSBub2RlJyk7Ci19OwotPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZW1vdmVkLW91dC1vZi1vcmRlci1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZGZjMDEyNmFkOGY0MTE5MmM3
YTBkZGE4MjhmNGViZWRmYzJhYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZW1vdmVkLW91dC1vZi1vcmRl
ci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UZXN0IE11dGF0
aW9uRXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IHJlbW92aW5nIG5v
ZGVzICdvdXQgb2Ygb3JkZXInCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNT
IG11dGF0aW9ucy5sZW5ndGggaXMgMgotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5n
dGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNT
IG11dGF0aW9uc1swXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUgaXMgJ0InCi1QQVNTIG11dGF0aW9u
c1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9k
ZXMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1l
IGlzICdCJwotUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICdJJwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQtb2Ytb3JkZXIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVtb3ZlZC1vdXQtb2Ytb3JkZXIuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIzZGU3OGE2YmU4YmIxMzczN2RlZWFkZTc4
ZWI5NDEyYTk0ZjAzMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3JlbW92ZWQtb3V0LW9mLW9yZGVyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxkaXYgaWQ9
InNhbmRib3giIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvZGl2PgotPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRp
b24oIlRlc3QgTXV0YXRpb25FdmVudHMgaW50ZXJmZXJpbmcgd2l0aCBNdXRhdGlvbk9ic2VydmVy
czogcmVtb3Zpbmcgbm9kZXMgJ291dCBvZiBvcmRlciciKTsKLXZhciBzYW5kYm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKLXZhciByZW1vdmVkID0gZmFsc2U7Ci1zYW5k
Ym94LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGZ1bmN0aW9uKCkgewotICAg
IGlmICghcmVtb3ZlZCkgewotICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmly
c3RDaGlsZCk7Ci0gICAgICAgIHJlbW92ZWQgPSB0cnVlOwotICAgIH0KLX0pOwotdmFyIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt9KTsKLW9ic2VydmVy
Lm9ic2VydmUoc2FuZGJveCwge2NoaWxkTGlzdDogdHJ1ZX0pOwotc2FuZGJveC5pbm5lckhUTUwg
PSAnPGI+PC9iPjxpPjwvaT4nOwotCi12YXIgbXV0YXRpb25zID0gb2JzZXJ2ZXIudGFrZVJlY29y
ZHMoKTsKLXNob3VsZEJlKCJtdXRhdGlvbnMubGVuZ3RoIiwgIjIiKTsKLXNob3VsZEJlKCJtdXRh
dGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sw
XS5yZW1vdmVkTm9kZXMubGVuZ3RoIiwgIjAiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMF0uYWRk
ZWROb2Rlc1swXS50YWdOYW1lIiwgIidCJyIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRl
ZE5vZGVzLmxlbmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWROb2Rl
cy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0u
dGFnTmFtZSIsICInQiciKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50
YWdOYW1lIiwgIidJJyIpOwotPC9zY3JpcHQ+Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vc2hhZG93LWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL3NoYWRvdy1kb20tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiN2ExYzU1MThiNzM2Mzg1MzdkODRhNWU4ZWZmYzkwZGZhMjI1N2RlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbXV0YXRpb24vc2hhZG93LWRvbS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxOCArMCwwIEBACi1UZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgb3BlcmF0ZSBpbiBTaGFk
b3cgRE9NCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1NdXRhdGlvbnMgaW4gc2hh
ZG93IERPTSBzaG91bGQgaGF2ZSBiZWVuIG9ic2VydmVkOgotUEFTUyBtdXRhdGlvbnMubGVuZ3Ro
IGlzIDQKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0
aW9uc1sxXS50eXBlIGlzICJjaGlsZExpc3QiCi1QQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJj
aGFyYWN0ZXJEYXRhIgotUEFTUyBtdXRhdGlvbnNbM10udHlwZSBpcyAiY2hpbGRMaXN0IgotCi1P
YnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRvdyBET00gc2hvdWxkIG5vdCBzZWUgbXV0YXRpb25z
IGluIHRoZSBzaGFkb3c6Ci1QQVNTIG11dGF0aW9ucyBpcyBudWxsCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9zaGFkb3ctZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL3NoYWRvdy1kb20uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZjNzll
YWMwMGY5NTk2MGEwNDMxY2UyYjI5NTIyY2EwNzU2YmZhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3NoYWRv
dy1kb20uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGJvZHk+Ci08aW5wdXQgdHlwZT0icmFuZ2UiPgotPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oJ1Rl
c3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBvcGVyYXRlIGluIFNoYWRvdyBET00nKTsKLQotZnVu
Y3Rpb24gZG9UZXN0KCkgewotICAgIGZ1bmN0aW9uIG11dGF0ZShlbHQpIHsKLSAgICAgICAgZWx0
LnNldEF0dHJpYnV0ZSgnZGF0YS1mb28nLCAnYmFyJyk7Ci0gICAgICAgIGVsdC5pbnNlcnRCZWZv
cmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxvJyksIGVsdC5maXJzdENoaWxkKTsKLSAg
ICAgICAgZWx0LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSc7Ci0gICAgICAgIGVs
dC5yZW1vdmVDaGlsZChlbHQuZmlyc3RDaGlsZCk7Ci0gICAgfQotCi0gICAgdmFyIHNoYWRvd1Jv
b3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcp
KTsKLSAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtdXRhdGlvbnMpIHsKLSAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKLSAg
ICB9KTsKLQotICAgIG9ic2VydmVyLm9ic2VydmUoc2hhZG93Um9vdC5maXJzdENoaWxkLCB7YXR0
cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0
cmVlOiB0cnVlfSk7Ci0gICAgbXV0YXRlKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7Ci0KLSAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBkZWJ1ZygnTXV0YXRpb25zIGluIHNoYWRv
dyBET00gc2hvdWxkIGhhdmUgYmVlbiBvYnNlcnZlZDonKTsKLSAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9ucy5sZW5ndGgnLCAnNCcpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlw
ZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUn
LCAnImNoYXJhY3RlckRhdGEiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbM10udHlw
ZScsICciY2hpbGRMaXN0IicpOwotICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7Ci0KLSAg
ICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUo
ZG9jdW1lbnQsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRh
dGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAgICAgbXV0YXRlKHNoYWRvd1Jvb3QuZmly
c3RDaGlsZCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBk
ZWJ1ZygnXG5PYnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRvdyBET00gc2hvdWxkIG5vdCBzZWUg
bXV0YXRpb25zIGluIHRoZSBzaGFkb3c6Jyk7Ci0gICAgICAgICAgICBzaG91bGRCZU51bGwoJ211
dGF0aW9ucycpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0sIDApOwot
ICAgIH0sIDApOwotfQotCi1pZiAod2luZG93LmludGVybmFscykgewotICAgIGRvVGVzdCgpOwot
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLX0gZWxzZQotICAgIHRlc3RGYWlsZWQo
J1RoaXMgdGVzdCBvbmx5IHJ1bnMgaW4gRFJUJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdGFrZVJlY29yZHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90YWtlUmVjb3Jkcy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNjQ0MjZhYjEzYWUyZTFjOTAzOGRmYjYzYjc5
MTJkM2EwNjVlZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90YWtlUmVjb3Jkcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UZXN0aW5nIFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIudGFrZVJlY29yZHMKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVRlc3Rpbmcg
dGFrZVJlY29yZHMuCi0uLi5yZWNvcmRzIGFyZSB0YWtlbiBzeW5jaHJvbm91c2x5LgotUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDIKLVBBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgc3ViRGl2Ci1QQVNTIG11dGF0aW9uc1sw
XS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
c3BhY2UgaXMgbnVsbAotUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hhcmFjdGVyRGF0YSIK
LVBBU1MgbXV0YXRpb25zWzFdLnRhcmdldCBpcyBzdWJEaXYuZmlyc3RDaGlsZAotLi4udGFrZVJl
Y29yZCB0b29rIHJlY29yZHMsIGJ1dCBkaWQgbm90IGNsZWFyIHRyYW5zaWVudCBvYnNlcnZlcnMK
LVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJh
dHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgotUEFTUyBtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiZm9vIgotCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi90YWtlUmVjb3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90
YWtlUmVjb3Jkcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzlhMzJmYmQ5
MTE4MGJhOGQ2NmMxN2RiODU3MmMzZTQ1NDRjYmMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vdGFrZVJlY29y
ZHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHRpdGxlPjwvdGl0bGU+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPWRlc2NyaXB0aW9uPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgotPHNjcmlwdD4KLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotdmFyIG11
dGF0aW9uczsKLQotZnVuY3Rpb24gdGVzdEJhc2ljKCkgewotICAgIHZhciBvYnNlcnZlcjsKLQot
ICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBkZWJ1ZygnVGVzdGluZyB0YWtlUmVjb3Jk
cy4nKTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgc3ViRGl2ID0gZGl2LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgc3ViRGl2LmlubmVySFRN
TCA9ICdoZWxsbywgd29ybGQnOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0
aW9ucyA9IG11dGF0aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBzdWJ0cmVlOiB0
cnVlfSk7Ci0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXInKTsKLSAgICAg
ICAgc3ViRGl2LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSEnOwotICAgICAgICBk
aXYucmVtb3ZlQ2hpbGQoc3ViRGl2KTsKLQotICAgICAgICBtdXRhdGlvbnMgPSBvYnNlcnZlci50
YWtlUmVjb3JkcygpOwotCi0gICAgICAgIGRlYnVnKCcuLi5yZWNvcmRzIGFyZSB0YWtlbiBzeW5j
aHJvbm91c2x5LicpOwotCi0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzIn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJmb28iJyk7Ci0g
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwn
KTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJjaGFyYWN0ZXJEYXRh
IicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnRhcmdldCcsICdzdWJEaXYuZmly
c3RDaGlsZCcpOwotCi0gICAgICAgIHN1YkRpdi5zZXRBdHRyaWJ1dGUoJ2ZvbycsICdiYXonKTsK
LSAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZp
bmlzaCgpIHsKLSAgICAgICAgZGVidWcoJy4uLnRha2VSZWNvcmQgdG9vayByZWNvcmRzLCBidXQg
ZGlkIG5vdCBjbGVhciB0cmFuc2llbnQgb2JzZXJ2ZXJzJyk7Ci0KLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0u
dGFyZ2V0JywgJ3N1YkRpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJp
YnV0ZU5hbWUnLCAnImZvbyInKTsKLSAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwotICAg
ICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotCi0gICAgc3Rh
cnQoKTsKLX0KLQotdmFyIHRlc3RzID0gW3Rlc3RCYXNpY107Ci12YXIgdGVzdEluZGV4ID0gMDsK
LQotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7Ci0gICAgaWYgKHRlc3RJbmRleCA8IHRlc3RzLmxl
bmd0aCkKLSAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7Ci0gICAgZWxzZQotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotZGVzY3JpcHRpb24oJ1Rlc3RpbmcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlci50YWtlUmVjb3JkcycpOwotCi1pZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKQotICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKScpOwotZWxzZQotICAgIHJ1bk5leHRUZXN0KCk7Ci0KLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90cmFu
c2llbnQtZ2MtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90
cmFuc2llbnQtZ2MtY3Jhc2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhMTBjMDFmYTlkNWEwMTZiM2VkZWNmZmU4Y2JiOGU3NzgwZjhmZTMzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vdHJhbnNpZW50LWdjLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDEwICswLDAgQEAKLUNsZWFyaW5nIHRyYW5zaWVudCBvYnNlcnZlcnMgYWZ0ZXIgb2JzZXJ2YXRp
b24gbm9kZSBpcyBHQ2VkIHNob3VsZCBub3QgY2F1c2UgYSBjcmFzaC4KLQotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi0KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi90cmFuc2llbnQtZ2MtY3Jhc2guaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vdHJhbnNpZW50LWdjLWNyYXNoLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZjMTM2NDJkNzY4YTExODI5YmJmOGFiNTlhMWVmYzEyMDllYWY1MTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi90cmFuc2llbnQtZ2MtY3Jhc2guaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDIzICswLDAgQEAKLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWRl
c2NyaXB0aW9uKCdDbGVhcmluZyB0cmFuc2llbnQgb2JzZXJ2ZXJzIGFmdGVyIG9ic2VydmF0aW9u
IG5vZGUgaXMgR0NlZCBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2guJyk7Ci0KLWZ1bmN0aW9uIGNh
bGxiYWNrKG11dGF0aW9ucykgewotICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci19
Ci12YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7Ci0K
LXZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLXZhciBzcGFuID0gZGl2
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Ci1vYnNlcnZlci5v
YnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLWRpdi5yZW1v
dmVDaGlsZChzcGFuKTsKLWRpdiA9IG51bGw7Ci1nYygpOwotc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Zv
bycsICdiYXInKTsKLXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgc2hvdWxkQmUoJ211dGF0
aW9ucy5sZW5ndGgnLCAnMScpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSwgMCk7Ci08L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAyMDlmNjc0MTdkNWM5ZTI5NGVjNWYzZDdlYjhlZjI5MjQyOWU4NmRiLi44ZTg0YmIyMWUzMDRj
NWM2OTA1MThhZjdkZTViNzA4MTI1ZDZkNjlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMDQsNyArMzA0LDcgQEAgQnVnKEVGTCkgZWRp
dGluZy9zcGVsbGluZy9ncmFtbWFyLWVkaXQtd29yZC5odG1sIFsgRmFpbHVyZSBdCiBCdWcoRUZM
KSBlZGl0aW5nL3NwZWxsaW5nL21hcmtlcnMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIGV2ZW50U2VuZGVyLnNjaGVkdWxl
QXN5bmNocm9ub3VzS2V5RG93bgotd2Via2l0Lm9yZy9iLzkzOTc5IGZhc3QvbXV0YXRpb24vZW5k
LW9mLXRhc2stZGVsaXZlcnkuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzkzOTc5IGZh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbCBbIEZhaWx1
cmUgXQogCiAjIHRlc3RSdW5uZXIuc2V0VXNlRGVmZXJyZWRGcmFtZUxvYWRpbmcoKSBpcyBub3Qg
aW1wbGVtZW50ZWQgaW4gV0syLiBTa2lwcGVkIHNvIGl0IGRvZXMgbm90IGdlbmVyYXRlIFBORyBy
ZXN1bHRzLgogd2Via2l0Lm9yZy9iLzkzOTgwIGh0dHAvdGVzdHMvYXBwY2FjaGUvbG9hZC1mcm9t
LWFwcGNhY2hlLWRlZmVyLXJlc3VtZS1jcmFzaC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGY3OTc4NmJhMzkwZWY4YzM1MTFjZjdh
ZTRlZmM5MGMxOGQ4NWU5MDUuLmU4ODVjNzBjMDNjMThhOTMzZWVhMTIwYTljZWQ1MWU0NDIyN2Vh
NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjU1
LDcgKzEyNTUsNyBAQCB3ZWJraXQub3JnL2IvODgxOTEgZmFzdC92aWV3cG9ydC92aWV3cG9ydC1s
ZWdhY3kteGh0bWxtcC1yZW1vdmUtYW5kLWFkZC5odG1sIFsgRgogCiAjIFRoZSBFRkwgcG9ydCBo
YXMgbm8gc3VwcG9ydCBmb3IgdGhlIEZpbGVTeXN0ZW0gQVBJCiB3ZWJraXQub3JnL2IvNjg1OTEg
ZmFzdC9maWxlc3lzdGVtCi13ZWJraXQub3JnL2IvNjg1OTEgZmFzdC9tdXRhdGlvbi9maWxlc3lz
dGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKK3dlYmtpdC5vcmcvYi82ODU5MSBmYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAogd2Via2l0
Lm9yZy9iLzY4NTkxIGh0dHAvdGVzdHMvZmlsZXN5c3RlbQogd2Via2l0Lm9yZy9iLzY4NTkxIGh0
dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAogd2Vi
a2l0Lm9yZy9iLzY4NTkxIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ZpbGVzeXN0
ZW0tdXJsLWluLWlmcmFtZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGstd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggN2U3YWQ4NDc3M2UyZDBmOWY1YTdmNTBkZjE5OGNjNThhOTE3
MDA2Mi4uZmFlZDVjNmQ3OWYyNDU4NDBiNThhZmExZWQzYTgwMDNkODM4YzlkNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgxLDcgKzE4
MSw3IEBAIHdlYmtpdC5vcmcvYi85Mzk3NyBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wYWdlLXJlbG9h
ZC1jYW5jZWwtcGVybWlzc2lvbi1yZXF1ZXN0cy5oCiAKICMgSW1wbGVtZW50IGV2ZW50U2VuZGVy
LnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bgogIyBodHRwOi8vd2Via2l0Lm9yZy9iLzkzOTc5
Ci1CdWcoR1RLKSBmYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwgWyBGYWls
dXJlIFRpbWVvdXQgXQorQnVnKEdUSykgZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQtb2Yt
dGFzay1kZWxpdmVyeS5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IF0KIAogIyBJbXBsZW1lbnQgdGVz
dFJ1bm5lci5zZXRVc2VEZWZlcnJlZEZyYW1lTG9hZGluZwogIyBodHRwOi8vd2Via2l0Lm9yZy9i
LzkzOTgwCkBAIC0yNTEsNiArMjUxLDcgQEAgd2Via2l0Lm9yZy9iLzcyNjk4IG1lZGlhL2F1ZGlv
LWdhcmJhZ2UtY29sbGVjdC5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIEJ1ZyhHVEspIGVkaXRpbmcv
cGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDQuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiBCdWcoR1RL
KSBlZGl0aW5nL3NlbGVjdGlvbi81MDU3NTA2Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogQnVnKEdU
SykgZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2
Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQorQnVnKEdUSykgZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9kYXRhYmFzZS1jYWxsYmFjay1kZWxpdmVyeS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIEJ1ZyhH
VEspIGZhc3QvZXZlbnRzL2Rpc3BhdGNoLW1lc3NhZ2Utc3RyaW5nLWRhdGEuaHRtbCBbIEZhaWx1
cmUgUGFzcyBdCiBCdWcoR1RLKSBmYXN0L2V2ZW50cy9kb21hY3RpdmF0ZS1zZXRzLXVuZGVybHlp
bmctY2xpY2stZXZlbnQtYXMtaGFuZGxlZC5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIEJ1ZyhHVEsp
IGZhc3QvZXZlbnRzL21vdXNlY2xpY2stdGFyZ2V0LWFuZC1wb3NpdGlvbmluZy5odG1sIFsgRmFp
bHVyZSBQYXNzIF0KQEAgLTI3OSw3ICsyODAsNiBAQCBCdWcoR1RLKSBmYXN0L2Zvcm1zL3NlbGVj
dC9vcHRncm91cC1kaXNhYmxlZC5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIEJ1ZyhHVEspIGZhc3Qv
Zm9ybXMvc2VsZWN0LXNlbGVjdGVkLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogQnVnKEdUSykgZmFz
dC9qcy9leGNlcHRpb25zLXRocm93bi1pbi1jYWxsYmFja3MuaHRtbCBbIEZhaWx1cmUgUGFzcyBd
CiBCdWcoR1RLKSBmYXN0L2xvYWRlci9mcmFnbWVudC1hZnRlci1yZWRpcmVjdC1nZXRzLWJhY2st
ZW50cnkuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCi1CdWcoR1RLKSBmYXN0L211dGF0aW9uL2RhdGFi
YXNlLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogQnVnKEdUSykgZmFz
dC93cml0aW5nLW1vZGUvamFwYW5lc2UtcnVieS1ob3Jpem9udGFsLWJ0Lmh0bWwgWyBGYWlsdXJl
IFBhc3MgXQogQnVnKEdUSykgZmFzdC93cml0aW5nLW1vZGUvamFwYW5lc2UtcnVieS12ZXJ0aWNh
bC1sci5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIEJ1ZyhHVEspIGZhc3Qvd3JpdGluZy1tb2RlL2ph
cGFuZXNlLXJ1YnktdmVydGljYWwtcmwuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGIyYzdiMmU2NTU3NzZkYTQ2YTBm
NzRkNzkzZmM5MzE3N2IzMTQzMWQuLjNiNGQ3MTJhNWRjZTIxZjVhZDVlODZmYjdkZWMzOTJjZTdi
Y2I2NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0y
MjYsNyArMjI2LDcgQEAgd2Via2l0Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2ZpbGVzeXN0ZW0tdXJsLWluLWlmcmFtZS5odG0KIHdlYmtpdC5vcmcvYi81ODQ0
MyBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi81ODQ0MyBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzU4NDQzIGh0
dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi81ODQ0MyBmYXN0L211dGF0aW9uL2ZpbGVzeXN0ZW0tY2FsbGJh
Y2stZGVsaXZlcnkuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzU4NDQzIGZhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvNTg0NDMgZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy5o
dG1sIFsgU2tpcCBdCiAKICMgUmVxdWlyZXMgV2ViUCBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2YzIyNDkyYmRlZmEzODQ0NTM5MTgwZDlh
NjliZTRmNTdiYmM1ZWQ4Li41YWQ5OTU1MDI5MGZiOWVkNDgzMjRhZGEzNDg3OTc1ZDcwZjlmYjFi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzA3LDcg
KzMwNyw3IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1v
dGUuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwt
aW4taWZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxl
LWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxv
Yi1mYWlsLmh0bWwKLWZhc3QvbXV0YXRpb24vZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5o
dG1sCitmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZl
cnkuaHRtbAogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjIy
MwogIyBUaGUgV2ViS2l0IHBsdWdpbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGlm
cmFtZSBzaGltcy4KQEAgLTU4Nyw3ICs1ODcsNyBAQCBtZWRpYS9XM0MvdmlkZW8vY2FuUGxheVR5
cGUvY2FuUGxheVR5cGVfdHdvX2ltcGxpZXNfb25lXzYuaHRtbAogCiAjIEZhaWxzIGJlY2F1c2Ug
TXV0YXRpb25PYnNlcnZlcnMgYXJlIG5vdCBub3RpZmllZCBhdCBlbmQtb2YtdGFzawogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTAKLWZhc3QvbXV0YXRpb24v
ZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAorZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9lbmQt
b2YtdGFzay1kZWxpdmVyeS5odG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyMDEwCiAjIE5lZWRzIFBhZ2VDbGllbnRzOjp2aWJyYXRpb25DbGllbnQoKSBp
bXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDljMjRmMjc2MzQ3NTgyMjczZGQ1ZmFhYTRhOTUxZDdkODIxZWY0YTAuLjJkODIzMzU1MDAy
YzYwMjgyNGJiOGRlZDZiNWMzMDU0YjkyMWFjYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI1LDcgKzEyNSw3IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkv
ZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9t
aXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwtaW4taWZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKLWZhc3QvbXV0YXRpb24vZmls
ZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCitmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVy
L2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAogCiAjIEVOQUJMRShRVU9UQSkgaXMg
ZGlzYWJsZWQuCiBzdG9yYWdlL3N0b3JhZ2VpbmZvLW1pc3NpbmctYXJndW1lbnRzLmh0bWwKQEAg
LTQ1OCw3ICs0NTgsNyBAQCB3ZWJraXQub3JnL2IvODQ4OTMgaHR0cC90ZXN0cy93M2Mvd2VicGVy
Zi9zdWJtaXNzaW9uL0ludGVsL3VzZXItdGltaW5nCiB3ZWJraXQub3JnL2IvNjExMzggaHR0cC90
ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZwogCiAjIE1p
c3NpbmcgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKCkgaW1wbGVtZW50
YXRpb24KLWZhc3QvbXV0YXRpb24vaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKK2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvaW5saW5lLWV2ZW50LWxpc3RlbmVyLmh0bWwKIAogIyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gIwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBvcnQgaW4gRFJULiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwpAQCAtMjA3OSw3ICsyMDc5LDcg
QEAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5o
dG1sCiAKICMgRmFpbHMgYmVjYXVzZSBNdXRhdGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlmaWVk
IGF0IGVuZC1vZi10YXNrCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODI5MAotZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCitmYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKIAogIyBGYWlscyBv
biBtb3N0IHBsYXRmb3JtcywgcHJvYmFibHkgZmFpbGluZyBkdWUgdG8gYW4gZWFybGllciB0ZXN0
LgogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjUxMDhmMWI4OTgyOWZjZmUyYTk2
OGJiNzYwY2ViYTZiMmE0NDdjNy4uMGI2ODhiYzJjYzkwOGUxY2Y4NTgzYTFiYzM4N2M3YWYwNjJl
MDcxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEz
MjgsNyArMTMyOCw3IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxmLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvZmls
ZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sCiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbAotZmFzdC9tdXRhdGlvbi9maWxlc3lzdGVtLWNh
bGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKK2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3Rl
bS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ2MjIzCiAjIFRoZSBXZWJLaXQgcGx1Z2luIGltcGxlbWVudGF0aW9uIGRv
ZXMgbm90IHN1cHBvcnQgaWZyYW1lIHNoaW1zLgpAQCAtMTYzOCw3ICsxNjM4LDcgQEAgZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcnJheXMuaHRtbAogCiAjIEZhaWxzIGJlY2F1
c2UgTXV0YXRpb25PYnNlcnZlcnMgYXJlIG5vdCBub3RpZmllZCBhdCBlbmQtb2YtdGFzawogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTAKLWZhc3QvbXV0YXRp
b24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAorZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9l
bmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCiAKICMgUmViYXNlbGluZSBhZnRlciBidWcgNzE3MDUu
IEFsbCBkaWZmZXJlbmNlcyBhcmUgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGFibGUgY2FwdGlvbnMg
bm93CiAjIGV4cGFuZCB0byB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgdGFibGUuCkBAIC0xOTM4LDcg
KzE5MzgsNyBAQCBmYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1s
CiBmYXN0L2pzL3N0YWNrLXRyYWNlLmh0bWwKIGZhc3QvbGF5ZXJzL3ZpZGVvLWxheWVyLmh0bWwK
IGZhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWlmcmFtZS1yZW1vdmUtb24tbmF2aWdhdGUuaHRt
bAotZmFzdC9tdXRhdGlvbi9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbAorZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9pbmxpbmUtZXZlbnQtbGlzdGVuZXIuaHRtbAogZmFzdC9wcm9maWxlci9k
ZWFkLXRpbWUuaHRtbAogZmFzdC9wcm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1l
b3V0Lmh0bWwKIGZhc3QvcmVwYWludC9jYW52YXMtcHV0SW1hZ2VEYXRhLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGMyNjIyYzgw
MTdjOGE4OWE4NjJmZWI0YjRhZmQxNzE2NGI3YTQwZWIuLmFmYTY4MWU4ODZhNzUwN2Y1NWUwY2Zj
MzMxODU3NDZiYzljZGFhNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8v
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTg1Nyw3ICsxODU3LDcgQEAgaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZmlsZXN5c3RlbS11cmxzLW1hdGNoLXNlbGYuaHRtbAog
aHR0cC90ZXN0cy9zZWN1cml0eS9maWxlc3lzdGVtLWlmcmFtZS1mcm9tLXJlbW90ZS5odG1sCiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwKIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCi1mYXN0
L211dGF0aW9uL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAorZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKIAogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjMKICMgVGhlIFdlYktpdCBw
bHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBpZnJhbWUgc2hpbXMuCkBAIC0y
MTQzLDcgKzIxNDMsNyBAQCBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFycmF5
cy5odG1sCiAKICMgRmFpbHMgYmVjYXVzZSBNdXRhdGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlm
aWVkIGF0IGVuZC1vZi10YXNrCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODI5MAotZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCitmYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKIAogIyBSZWJh
c2VsaW5lIGFmdGVyIGJ1ZyA3MTcwNS4gQWxsIGRpZmZlcmVuY2VzIGFyZSBkdWUgdG8gdGhlIGZh
Y3QgdGhhdCB0YWJsZSBjYXB0aW9ucyBub3cKICMgZXhwYW5kIHRvIHRoZSBmdWxsIHdpZHRoIG9m
IHRoZSB0YWJsZS4KQEAgLTI0NDMsNyArMjQ0Myw3IEBAIGZhc3QvaW1hZ2VzL3N1cHBvcnQtYnJv
a2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKIGZhc3QvanMvc3RhY2stdHJhY2UuaHRtbAogZmFzdC9s
YXllcnMvdmlkZW8tbGF5ZXIuaHRtbAogZmFzdC9sb2FkZXIvamF2YXNjcmlwdC11cmwtaWZyYW1l
LXJlbW92ZS1vbi1uYXZpZ2F0ZS5odG1sCi1mYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0
ZW5lci5odG1sCitmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5l
ci5odG1sCiBmYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS5odG1sCiBmYXN0L3Byb2ZpbGVyL3N0b3At
cHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRtbAogZmFzdC9yZXBhaW50L2NhbnZhcy1wdXRJ
bWFnZURhdGEuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBhYzhjZDI0YmE3ZDk0OTYxNTNiZmYxNzQ4N2ZhZTBkMDE4MDY0MmQ4Li5iMWQwMGNhM2E5
ZDFmMjlmNjQ5MWZhZDBmYmIzY2E2N2MzMGVmY2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjE5LDcgKzYxOSw3IEBAIGZhc3QvZm9ybXMvcmVzZXQt
YXV0b2ZpbGxlZC5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhIG1vcmUtY29tcGxl
dGUgaW1wbGVtZW50YXRpb24gb2YgZXZlbnRTZW5kZXIKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyMTk0Ci1mYXN0L211dGF0aW9uL2lubGluZS1ldmVudC1saXN0
ZW5lci5odG1sCitmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2lubGluZS1ldmVudC1saXN0ZW5l
ci5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBldmVudFNlbmRlci5jb250ZXh0Q2xp
Y2soKQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4ODEK
</data>

          </attachment>
      

    </bug>

</bugzilla>