<?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>54354</bug_id>
          
          <creation_ts>2011-02-13 05:42:17 -0800</creation_ts>
          <short_desc>Web Inspector: [layout tests] get rid of elements-tests.js in favor of elements-tests2.js</short_desc>
          <delta_ts>2011-02-14 02:59:33 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350388</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-13 05:42:17 -0800</bug_when>
    <thetext>New harness is way better for testing elements panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350389</commentid>
    <comment_count>1</comment_count>
      <attachid>82261</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-13 05:45:49 -0800</bug_when>
    <thetext>Created attachment 82261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350390</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-13 05:48:53 -0800</bug_when>
    <thetext>This patch changes some expectations too:
- DOM trees are now expanded completely (not first 2 levels)
- Styles tests are re-using same dump facilities where possible
- elements-panel-limited-children is doing complete dumps

I did not touch inspector code, only tests were modified. Everything passes (and it took me a while to make it so, so there are no false positives).

Now we need to do the same to our console and timeline tests and inspector-test.js (old harness) can be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350459</commentid>
    <comment_count>3</comment_count>
      <attachid>82279</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-13 14:27:47 -0800</bug_when>
    <thetext>Created attachment 82279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350460</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-13 14:31:32 -0800</bug_when>
    <thetext>Second patch is the same as the first + console tests are migrated to console-tests2.

Friendly note to the reviewer: All you need to do is to go through the modified expectations and see that only mechanical changes were performed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350569</commentid>
    <comment_count>5</comment_count>
      <attachid>82279</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-02-14 02:23:56 -0800</bug_when>
    <thetext>Comment on attachment 82279
Patch

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

&gt; LayoutTests/http/tests/inspector/console-xhr-logging.html:45
&gt; +        InspectorBackend.setMonitoringXHREnabled(false, callback);

Please restore enable/disable logging.

&gt; LayoutTests/inspector/console-clear.html:18
&gt; +

Please remove this line.

&gt; LayoutTests/inspector/console-command-clear.html:36
&gt; +    Tests that console is cleared upon clear() eval in console.

revert this change

&gt; LayoutTests/inspector/elements-panel-selection-on-refresh.html:15
&gt; + 

Please remove extra whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350573</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-14 02:59:33 -0800</bug_when>
    <thetext>Committed r78460: &lt;http://trac.webkit.org/changeset/78460&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82261</attachid>
            <date>2011-02-13 05:45:49 -0800</date>
            <delta_ts>2011-02-13 14:27:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54354-20110213164507.patch</filename>
            <type>text/plain</type>
            <size>128518</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5M2QyZWRkYjFhMzA0YmU0YzY1ZTA2
YzUxZjBmNGU5NGQxMGYwMDM5Li42NmViNmMwZTQxZGEzMDZhNmUxYzZlMmU5YzBmMjg1NTEwNzNj
NDZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTEtMDItMTMgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW2xheW91dCB0ZXN0c10gZ2V0IHJpZCBvZiBl
bGVtZW50cy10ZXN0cy5qcyBpbiBmYXZvciBvZiBlbGVtZW50cy10ZXN0czIuanMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzU0CisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzOiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczogQWRkZWQuCisgICAgICAg
IChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3QucHVzaEFsbERPTSk6CisgICAg
ICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3Qubm9kZVdpdGhJZC5wcm9j
ZXNzQ2hpbGRyZW4pOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JU
ZXN0Lm5vZGVXaXRoSWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0
b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVz
dC5JbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMpOgorICAgICAgICAoaW5p
dGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5
VHJlZUl0ZW0pOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0
LmR1bXBTdHlsZVRyZWVPdXRsaW5lKToKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3Qu
SW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlSXRlbSk6CisgICAgICAgIChpbml0aWFsaXplX0Vs
ZW1lbnRUZXN0Lkluc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRzVHJlZSk6CisgICAgICAgIChpbml0
aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3QuZHVtcExvYWRlZERPTSk6CisgICAgICAg
IChpbml0aWFsaXplX0VsZW1lbnRUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanM6CisgICAgICAgIChydW5BZnRlcklmcmFtZUlzTG9hZGVkLnN0
ZXApOgorICAgICAgICAocnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2NvbW1hbmQtbGluZS1hcGkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1h
cGktb24tY2FsbC1mcmFtZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1hdXRv
Y29udGludWUtb24tc3ludGF4LWVycm9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyLWV4cGFuZC1zY29wZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1uby1u
ZXN0ZWQtcGF1c2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4t
ZXZhbC1zY3JpcHQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24t
YnJlYWtwb2ludC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1k
ZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1
c2Utb24tZXhjZXB0aW9uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3Rv
LXByb3BlcnR5Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXNjcmlwdHMuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItc3Vz
cGVuZC1hY3RpdmUtZG9tLW9iamVjdHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWJy
ZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzLWRlbGV0ZS1pbmxp
bmUtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1pbWctdG9vbHRpcC5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1saW1pdGVkLWNoaWxkcmVu
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRl
ZC1jaGlsZHJlbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdy
aXRlLWhyZWYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1wYW5l
bC1yZXdyaXRlLWhyZWYuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwt
c2VsZWN0aW9uLW9uLXJlZnJlc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9l
bGVtZW50cy1wYW5lbC1zZWxlY3Rpb24tb24tcmVmcmVzaC5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlu
c3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1l
bnRzLXBhbmVsLXhodG1sLXN0cnVjdHVyZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2VsZW1lbnRzLXBhbmVsLXhodG1sLXN0cnVjdHVyZS54aHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdHMuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Vs
ZW1lbnRzLXRlc3RzMi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2Vz
L2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3M6CisgICAgICAgIChib2R5KToKKyAgICAgICAgKCNj
b250YWluZXIpOgorICAgICAgICAoLmZvbyk6CisgICAgICAgICguZm9vLCAuZm9vOjpiZWZvcmUp
OgorICAgICAgICAoLmZvbzo6YmVmb3JlKToKKyAgICAgICAgKC5mb286OmFmdGVyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1pZnJhbWUtZGF0YS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9zdG9yYWdlLXBhbmVsLWRvbS1zdG9yYWdlLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL3N0eWxlcy1hZGQtYmxhbmstcHJvcGVydHkuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc3R5bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0
eWxlcy1kaXNhYmxlLWluaGVyaXRlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMt
ZGlzYWJsZS10aGVuLWNoYW5nZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtZGlz
YWJsZS10aGVuLWRlbGV0ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtZGlzYWJs
ZS10aGVuLWVuYWJsZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtaWZyYW1lLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9zdHlsZXMtc291cmNlLWxpbmVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c3R5bGVzLXNvdXJjZS1saW5lcy1pbmxpbmUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzLXNvdXJjZS1saW5lcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtc291cmNl
LW9mZnNldHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLXVybC1saW5raWZ5Lmh0
bWw6CisKIDIwMTEtMDItMTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3ODMzMS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYyNDg2MTc5ZWRjZDY3OGJhZThkMjYwZGNmYTdkZGZmYTZjYjM4YjUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0Lmpz
CkBAIC0wLDAgKzEsMTQ4IEBACit2YXIgaW5pdGlhbGl6ZV9FbGVtZW50VGVzdCA9IGZ1bmN0aW9u
KCkgeworCitJbnNwZWN0b3JUZXN0LnB1c2hBbGxET00gPSBmdW5jdGlvbihjYWxsYmFjaykKK3sK
KyAgICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRoSWQoL25vbnN0cmluZy8sIGNhbGxiYWNrKTsKK30K
KworSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkID0gZnVuY3Rpb24oaWRWYWx1ZSwgY2FsbGJhY2sp
Cit7CisgICAgdmFyIHJlc3VsdCA9IG51bGw7CisgICAgdmFyIHRvcExldmVsQ2hpbGRyZW5SZXF1
ZXN0ZWQgPSBmYWxzZTsKKyAgICB2YXIgcGVuZGluZ1JlcXVlc3RzID0gMDsKKyAgICBmdW5jdGlv
biBwcm9jZXNzQ2hpbGRyZW4odG9wTGV2ZWwsIGNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgcGVu
ZGluZ1JlcXVlc3RzLS07CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuICYmIGkgPCBjaGlsZHJlbi5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNoaWxkcmVuW2ldOworICAg
ICAgICAgICAgaWYgKGNoaWxkTm9kZS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IGlkVmFsdWUpIHsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaGlsZE5vZGU7CisgICAgICAgICAgICAgICAgaWYg
KGNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBlbmRpbmdSZXF1
ZXN0cysrOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmdldENoaWxkTm9kZXNB
c3luYyhjaGlsZE5vZGUsIHByb2Nlc3NDaGlsZHJlbi5iaW5kKG51bGwsIGZhbHNlKSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodG9wTGV2ZWwpCisgICAgICAgICAgICB0b3BMZXZlbENoaWxk
cmVuUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRvcExldmVsQ2hpbGRyZW5SZXF1ZXN0
ZWQgJiYgIXJlc3VsdCAmJiAhcGVuZGluZ1JlcXVlc3RzKQorICAgICAgICAgICAgY2FsbGJhY2so
bnVsbCk7ICAgIAorICAgIH0KKyAgICBwZW5kaW5nUmVxdWVzdHMrKzsKKyAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQuZ2V0Q2hpbGROb2Rlc0FzeW5jKFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1
bWVudCwgcHJvY2Vzc0NoaWxkcmVuLmJpbmQodGhpcywgdHJ1ZSkpOworfTsKKworSW5zcGVjdG9y
VGVzdC5zZWxlY3ROb2RlV2l0aElkID0gZnVuY3Rpb24oaWRWYWx1ZSwgY2FsbGJhY2spCit7Cisg
ICAgZnVuY3Rpb24gbXljYWxsYmFjayhub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUpCisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IudXBkYXRlRm9jdXNlZE5vZGUobm9kZS5pZCk7CisgICAg
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5k
aW5nRGlzcGF0Y2hlcyhjYWxsYmFjay5iaW5kKG51bGwsIG5vZGUpKTsKKyAgICB9CisgICAgSW5z
cGVjdG9yVGVzdC5ub2RlV2l0aElkKGlkVmFsdWUsIG15Y2FsbGJhY2spOworfTsKKworSW5zcGVj
dG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oZXhjbHVkZUNvbXB1
dGVkLCBleGNsdWRlTWF0Y2hlZCwgb21pdExvbmdoYW5kcykKK3sKKyAgICB2YXIgc3R5bGVTZWN0
aW9ucyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5z
ZWN0aW9uczsKKyAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiBzdHlsZVNlY3Rpb25zKSB7CisgICAg
ICAgIHZhciBwc2V1ZG9OYW1lID0gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVk
b0lkTmFtZXNbcHNldWRvSWRdOworICAgICAgICB2YXIgc2VjdGlvbnMgPSBzdHlsZVNlY3Rpb25z
W3BzZXVkb0lkXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uc1tpXTsKKyAgICAgICAg
ICAgIGlmIChzZWN0aW9uLmNvbXB1dGVkU3R5bGUgJiYgZXhjbHVkZUNvbXB1dGVkKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHNlY3Rpb24ucnVsZSAmJiBleGNs
dWRlTWF0Y2hlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChz
ZWN0aW9uLmVsZW1lbnQucHJldmlvdXNTaWJsaW5nICYmIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91
c1NpYmxpbmcuY2xhc3NOYW1lID09PSAic3R5bGVzLXNpZGViYXItc2VwYXJhdG9yIikKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09PT09PT0gIiArIHNlY3Rpb24u
ZWxlbWVudC5wcmV2aW91c1NpYmxpbmcudGV4dENvbnRlbnQgKyAiID09PT09PT09Iik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgoc2VjdGlvbi5leHBhbmRlZCA/ICJbZXhw
YW5kZWRdICIgOiAiW2NvbGxhcHNlZF0gIikgKyBzZWN0aW9uLnRpdGxlRWxlbWVudC50ZXh0Q29u
dGVudCArICIgKCIgKyBzZWN0aW9uLnN1YnRpdGxlQXNUZXh0Rm9yVGVzdCArICIpIik7CisgICAg
ICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
U3R5bGVUcmVlT3V0bGluZShzZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZSwgb21pdExvbmdo
YW5kcyA/IDEgOiAyKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsK
KyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgfQor
fTsKKworLy8gRklYTUU6IHRoaXMgcmV0dXJucyB0aGUgZmlyc3QgdHJlZSBpdGVtIGZvdW5kICht
YXkgZmFpbCBmb3Igc2FtZS1uYW1lZCBwcm9wZXJ0aWVzIGluIGEgc3R5bGUpLgorSW5zcGVjdG9y
VGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtID0gZnVuY3Rpb24ocHJvcGVydHlO
YW1lKQoreworICAgIHZhciBzdHlsZVNlY3Rpb25zID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBdOworICAgIHZhciBlbGVtZW50U3R5
bGVTZWN0aW9uID0gc3R5bGVTZWN0aW9uc1sxXTsKKyAgICB2YXIgb3V0bGluZSA9IGVsZW1lbnRT
dHlsZVNlY3Rpb24ucHJvcGVydGllc1RyZWVPdXRsaW5lOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgb3V0bGluZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdHJlZUl0ZW0g
PSBvdXRsaW5lLmNoaWxkcmVuW2ldOworICAgICAgICBpZiAodHJlZUl0ZW0ubmFtZSA9PT0gcHJv
cGVydHlOYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRyZWVJdGVtOworICAgIH0KKyAgICByZXR1
cm4gbnVsbDsKK307CisKK0luc3BlY3RvclRlc3QuZHVtcFN0eWxlVHJlZU91dGxpbmUgPSBmdW5j
dGlvbih0cmVlSXRlbSwgZGVwdGgpCit7CisgICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hp
bGRyZW47CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlSXRlbShjaGlsZHJlbltpXSwgIiIsIGRl
cHRoIHx8IDIpOworfTsKKworSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlSXRlbSA9IGZ1bmN0
aW9uKHRyZWVJdGVtLCBwcmVmaXgsIGRlcHRoKQoreworICAgIC8vIEZpbHRlciBvdXQgd2lkdGgg
YW5kIGhlaWdodCBwcm9wZXJ0aWVzIGluIG9yZGVyIHRvIG1pbmltaXplCisgICAgLy8gcG90ZW50
aWFsIGRpZmZzLgorICAgIGlmICghdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50
LmluZGV4T2YoIndpZHRoIikgfHwKKyAgICAgICAgIXRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC50
ZXh0Q29udGVudC5pbmRleE9mKCJoZWlnaHQiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5oYXNTdHlsZUNsYXNzKCJpbmhlcml0ZWQiKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHZhciB0eXBlUHJlZml4ID0gIiI7CisgICAgaWYgKHRyZWVJdGVt
Lmxpc3RJdGVtRWxlbWVudC5oYXNTdHlsZUNsYXNzKCJvdmVybG9hZGVkIikpCisgICAgICAgIHR5
cGVQcmVmaXggKz0gIi8tLSBvdmVybG9hZGVkIC0tLyAiOworICAgIGlmICh0cmVlSXRlbS5saXN0
SXRlbUVsZW1lbnQuaGFzU3R5bGVDbGFzcygiZGlzYWJsZWQiKSkKKyAgICAgICAgdHlwZVByZWZp
eCArPSAiLy0tIGRpc2FibGVkIC0tLyAiOworICAgIHZhciB0ZXh0Q29udGVudCA9IHRyZWVJdGVt
Lmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudDsKKworICAgIC8vIEFkZCBub24tc2VsZWN0YWJs
ZSB1cmwgdGV4dC4KKyAgICB2YXIgdGV4dERhdGEgPSB0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQu
cXVlcnlTZWxlY3RvcigiW2RhdGEtdW5jb3B5YWJsZV0iKTsKKyAgICBpZiAodGV4dERhdGEpCisg
ICAgICAgIHRleHRDb250ZW50ICs9IHRleHREYXRhLmdldEF0dHJpYnV0ZSgiZGF0YS11bmNvcHlh
YmxlIik7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4ICsgdHlwZVByZWZpeCAr
IHRleHRDb250ZW50KTsKKyAgICBpZiAoLS1kZXB0aCkgeworICAgICAgICB0cmVlSXRlbS5leHBh
bmQoKTsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVtKGNoaWxkcmVuW2ldLCBw
cmVmaXggKyAiICAgICIsIGRlcHRoKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0LmR1bXBF
bGVtZW50c1RyZWUgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy51cGRhdGVNb2RpZmllZE5vZGVzKCk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
V2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5lbGVtZW50LnRleHRDb250
ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikucmVwbGFjZSgvXG4vZywgIiIpLnJlcGxhY2UoLzwv
ZywgIlxuPCIpKTsKK307CisKK0luc3BlY3RvclRlc3QuZHVtcExvYWRlZERPTSA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBmdW5jdGlvbiBleHBhbmQodHJlZUl0ZW0sIHRvcExldmVsKQorICAgIHsKKyAg
ICAgICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIGNoaWxkcmVuW2ldLmV4cGFuZCgpOworICAgICAgICAgICAgZXhwYW5kKGNoaWxkcmVuW2ld
LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRvcExldmVsKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wRWxlbWVudHNUcmVlKCk7CisgICAgfQorICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuZWxlbWVudHMudXBkYXRlTW9kaWZpZWROb2RlcygpOworICAgIGV4cGFuZChXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLCB0cnVlKTsKK307CisKK307Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCmluZGV4IDZiMzQxZjcxNmIxOTQzYTJlNTA4
MzRlYWMxMWNiNjRmMDkyNDI0YjEuLmFlZjc0ZmFhMjU2MGVkNDUxMjg1MjIxODhjYmFlYzZlMTU1
YmJjNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0Mi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdDIuanMKQEAgLTIxMCw2ICsyMTAsMjAgQEAgSW5zcGVjdG9yVGVzdC5fYWRkU25p
ZmZlciA9IGZ1bmN0aW9uKHJlY2VpdmVyLCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNr
eSkKIHZhciBydW5UZXN0Q2FsbElkID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxsSWQgPSAxOwog
CitmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlzTG9hZGVkKCkKK3sKKwlpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorCSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgZnVuY3Rpb24gc3RlcCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5pZnJh
bWVMb2FkZWQpCisgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9CisgICAgc2V0VGltZW91dChzdGVwLCAx
MDApOworfQorCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAgICBpZiAoIXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb21tYW5k
LWxpbmUtYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29tbWFuZC1saW5lLWFwaS5o
dG1sCmluZGV4IDM1NjM0MDJhY2JlNDlkODgxMWI2MzliNGRmNTJjMGVkODdhNWE2MDIuLmViODA3
MDAwY2EzMTYyM2NlZWRkNDZlZGE5NGM2NDIwZGYzNzk1ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jb21tYW5kLWxpbmUtYXBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbW1hbmQtbGluZS1hcGkuaHRtbApAQCAtMSwxOCArMSwxMSBAQAogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzMi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBJ
bnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc3RlcDEpOwotCi0gICAg
ZnVuY3Rpb24gc3RlcDEoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RFbGVt
ZW50QW5kUnVuKCJmb28iLCBzdGVwMik7Ci0gICAgfQotCiAgICAgdmFyIGV4cHJlc3Npb25zID0g
WwogICAgICAgICAiJDAudG9TdHJpbmcoKSIsCiAgICAgICAgICJrZXlzKFszLDRdKS50b1N0cmlu
ZygpIiwKQEAgLTIxLDcgKzE0LDkgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgICIk
JCgncCNmb28nKS50b1N0cmluZygpIgogICAgIF07CiAKLSAgICBmdW5jdGlvbiBzdGVwMigpCisg
ICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJmb28iLCBzdGVwMSk7CisKKyAgICBm
dW5jdGlvbiBzdGVwMShub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFleHByZXNzaW9ucy5sZW5n
dGgpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CkBAIC0yOSw3
ICsyNCw3IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICB9CiAgICAgICAgIHZhciBl
eHByZXNzaW9uID0gZXhwcmVzc2lvbnNbMF07CiAgICAgICAgIGV4cHJlc3Npb25zLnNwbGljZSgw
LCAxKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZUFuZER1bXAoZXhw
cmVzc2lvbiwgc3RlcDIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xl
QW5kRHVtcChleHByZXNzaW9uLCBzdGVwMSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1hcGktb24tY2FsbC1mcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtYXBpLW9uLWNhbGwtZnJhbWUuaHRtbAppbmRleCBiMjk2
MGRhNzdlMWNmZWY4M2ZkNjFjM2M4ZDc2MjUyNWU1MmI1YmY1Li5jZjAzZjA4MmMzZjUzOTllYzM5
YzZkNmRhMDc5OTNlOTE0YjVkYWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29uc29sZS1hcGktb24tY2FsbC1mcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogd2luZG93
Lmluc3BlY3QgPSAiaW5zcGVjdCI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItYXV0b2NvbnRpbnVlLW9uLXN5bnRheC1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLWF1dG9jb250aW51ZS1vbi1zeW50YXgtZXJyb3IuaHRtbAppbmRl
eCA5MThlZjVmMWMwOGZiNzlkZWQxOWUwNmI2OWYzM2NiNDhhYzMzMmU1Li40YzZlZTZjMzZlMmU1
MTI1Y2I5NGVhNjA2MjUyMzRmMjkxY2IyYzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItYXV0b2NvbnRpbnVlLW9uLXN5bnRheC1lcnJvci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1hdXRvY29udGludWUtb24tc3ludGF4LWVycm9y
Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zeW50YXgtZXJyb3IuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQu
aHRtbAppbmRleCA4MzNhYTY4MmQ4ZDNjOWVmMmU4Y2M4YTliZTdmODQ0NTg4ODI0ZGQ2Li43MzI5
MThiNWM2ZDk1OWU0NmY0NmZkZDcwMDk1ZGE2Zjc5NzU0ODVlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxv
YWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMt
bm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qy
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiB0
ZXN0RnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LWN5Y2xpYy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMt
cmVmLmh0bWwKaW5kZXggMTdmZTYzOWM1YjcxOTVmMGEyOGFmZDNlMWY4ZWFkODQ2MGQ3M2MwNi4u
NmZiZTk2ODJiMzU4MDI0NzU2NmM0M2Y4NDI3ODAxNGE1MWI1ZDFlMCAxMDA3NTUKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sCkBAIC0xLDcgKzEsNyBAQAog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAK
IE9iamVjdC5wcm90b3R5cGUuY3ljbGljUmVmID0gT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLW9uLWNhbGwtZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLW9uLWNhbGwtZnJhbWUuaHRt
bAppbmRleCBmMWUwZTVlZjJlMjVhOGJkNzNmZDBkYWM3OWQ5NmQ0ZjlmM2UyZTYzLi40ZDc4YmMx
NTE0YWUzYTRjYzM2Y2MyZmRlOGQ0Mzc0MzAxYjFkNzdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtb24tY2FsbC1mcmFtZS5odG1sCkBAIC0xLDcg
KzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIHZhciBhID0gMTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0bWwKaW5kZXggZDgzMmFhMjYxYWJhM2YwZDQ3NTM0
MzRhNmMxNWI1N2M1MzkxNzA0NC4uOTEyZjlhMmQ4NWNmZWJmNDk0MDI3NzdiNTIyMDk0Yjg4ODRl
YzY1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hp
bGUtcGF1c2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwt
d2hpbGUtcGF1c2VkLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogdmFyIGdsb2JhbFZhciA9IHsgYjog
MSB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV4cGFuZC1z
Y29wZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV4cGFuZC1zY29wZS5o
dG1sCmluZGV4IGNmN2E3NTEyNjAwY2NmODZkYzFlY2RlZGU5ZTE1MGY2MWYzZTA4Y2MuLmZmMGE5
NzkyMDEzYzQyMTA5ODE4M2M1OThmZDM1NmVmNzAxYTg5ZjAgMTAwNzU1Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1leHBhbmQtc2NvcGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItZXhwYW5kLXNjb3BlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbWFrZUNsb3N1cmUobikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sCmluZGV4IDhhNmNmYjc2OWZiYTRjMDU2Yzk0
MzA0ODFkY2RlZWI4YTdjZGViMTAuLjg5ODhmYmIzY2VlMDA3NTYxYTQ0MTNkZmNiYTU3YThlY2I1
ZmViOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0
ZWQtcGF1c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVz
dGVkLXBhdXNlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFs
LXNjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2
YWwtc2NyaXB0Lmh0bWwKaW5kZXggNTc1Y2Y2NzcwYTlmZTE2MmQ3Zjg4N2ZjMGQ1ZmU5MTgzY2Vj
ZTZjMi4uM2NmYjk0MWNhMTUxZjU1YmNkNzA4Y2RmNGZjM2MzNTE4MDYzZThkMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2Ny
aXB0Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3Qu
anMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbAppbmRleCAzMDg1OTA0ODhk
ZjQyN2MxNDcxZDdiYTM3YzNjNjQ3ZjVkODNmNmIzLi5lYjc0NzlmYmFlN2UxYzM2NzVlZTIyZDAw
ZTk3MjI0YjdmZTk0MWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1vbi1icmVha3BvaW50Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rp
b24gdGVzdEZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbAppbmRleCBjYmIw
NDdjNTdkZTkyZjYyM2Y5MjYwMjYyODliY2E2OGJlNTkyYTU4Li42ZGI5MDE3ZDI3N2E5ZTBkNTc3
ZmFhYjQwMzM5NTQ0ZTBjMWYyNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBA
IC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZXhjZXB0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZXhjZXB0aW9uLmh0bWwKaW5kZXgg
YmVlNzZhOWE4YjdmZjdlOTNhYzc2MGI2ZDc3NGNmODZmMDUyZGY3Yi4uNGYwOWNkZjViNTRkZTJl
ODYyNWUyYmU2ZTYxY2VjNDExM2Y2OWUwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWV4Y2VwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1leGNlcHRpb24uaHRtbApAQCAtMSw3ICsxLDcgQEAK
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgog
CiBmdW5jdGlvbiB0aHJvd0FuRXhjZXB0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWwKaW5kZXggYzRmNGZiZTc4ZmJlNjdiOTdh
MGIzMjRkMDM1ZDEwZWU0MDliNjFiYy4uM2ZlMTg1YWZiNGNhM2Y3M2IwM2YzMWVmMzhlY2JiZTc3
YWM0ZGM0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3Rv
LXByb3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3Rv
LXByb3BlcnR5Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gQygpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXNjcmlwdHMuaHRtbAppbmRleCBkMWY5YTg2ZGMzMzU0NjFm
MGFiN2U3MTQzMTU2OTcxNDc3YzhkYTAxLi43MzY4ZTMwOTE2OTU1NGFjNGIyOGI0NzBjMDNlNzNh
NGI4NDY2OTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc2Ny
aXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zY3JpcHRzLmh0
bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwv
c2NyaXB0PgogCiA8c2NyaXB0PgogdmFyIHRlc3QgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbAppbmRleCAyNTkzYzkwNmI5NzcyODFjMGRm
NTNkMzg4MTRiZDY5NGY1OGZiZDIyLi41ZjAyZWMwN2JhMGJiYzAyMThmZWEzNzQwZmVkODg3M2U0
YTk3NDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1p
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLmh0bWwK
QEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1zdGVwLW91dC5odG1sCmluZGV4IDhmMDBiMTQ3YTVlMGIzNDhhZWEzNjA1OGQyNTMy
NjI4MmNkMTUzNjEuLjlhYTg5Y2ZlYmEzZjdjMzkzNzIyNjQ4M2MyYzc3NGNlYjgzYTA2ZGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sCkBAIC0xLDcg
KzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtb3Zlci5odG1sCmluZGV4IGIyM2RlMDVlOTk5NmM4MTg1MzQ0ZjdhZjhlN2NmZjEwYzZj
ZjkwYTguLmY2MjA3ZDc2ZDg0ZTBiZTE1MzZlYWY0MzdjNWM3OGUxMTAwMDdmY2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwKQEAgLTEsNyArMSw3
IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KIAogZnVuY3Rpb24gZigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItc3VzcGVuZC1hY3RpdmUtZG9tLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sCmluZGV4IDk2ZTVl
YmYyNzk2N2U0Njc1M2YzMDcxNzRjMDkwZWE2ZTdjOTBjZTguLjk4ZmQ1ZDk4N2U2ZjBjOGI1OThi
MGE3NjcxNWJmZTIwMzIyMWM3NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sCkBAIC0x
LDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAppbmRleCBlZWRiNjg5ZjczNzVlNzgxNzU1MWRiNGZj
OTI1MTAxYjNkNmUyMzBjLi42OTM3YjczNTMyOWEyZmIyNzNiMzY3ZDI4YTg1OTFmMjA0NjY5Mjhk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCkBAIC0xLDcg
KzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGFwcGVuZEVsZW1lbnQocGFyZW50SWQsIGNoaWxkSWQpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHls
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5
bGUuaHRtbAppbmRleCBlODc1ZjM4NDkwZTliOTg5ZmU0NjQ2MmFiYTczMDliNTQ1ZWE4ZGMyLi42
MGRlYTc1Y2EwYTU1YjFkOTdkNWY3NDZhMGFlOTk1ZWUzMDUzMDdjIDEwMDc1NQotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWwK
QEAgLTEsMjAgKzEsMTggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJlbGVtZW50cy10ZXN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVu
Y3Rpb24gdGVzdCgpCiB7Ci0gICAgZnVuY3Rpb24gc2VsZWN0SW5zcGVjdGVkRWxlbWVudCgpCi0g
ICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdEVsZW1lbnRBbmRSdW4oImluc3BlY3Rl
ZCIsIGV4ZWN1dGVUZXN0KTsKLSAgICB9CiAKLSAgICBmdW5jdGlvbiBleGVjdXRlVGVzdCgpCisg
ICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisK
KyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQmVmb3JlIHN0eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0
cnVlKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0
cnVlKTsKIAogICAgICAgICB2YXIgdHJlZUVsZW1lbnQ7CiAgICAgICAgIHZhciBpbm5lck1hcHBp
bmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOwpAQCAtMzEsMTQgKzI5LDE1
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyBSZW1vdmUgdGhlICJzdHlsZSIgYXR0cmli
dXRlIGFsdG9nZXRoZXIgKG5vdCBqdXN0IGNsZWFyIGl0cyB2YWx1ZSkuCiAgICAgICAgIGVkaXRv
ckVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKICAgICAgICAgZWRpdG9yRWxlbWVudC5kaXNwYXRj
aEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgc3R5bGUgcHJvcGVydHkgcmVt
b3ZhbDoiKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JU
ZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKSk7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKICAgICB9CiAKLSAgICBJbnNwZWN0
b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc2VsZWN0SW5zcGVjdGVkRWxlbWVu
dCk7CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkFmdGVyIHN0eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLWltZy10b29sdGlwLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1pbWctdG9vbHRpcC1leHBlY3RlZC50
eHQKaW5kZXggOWU0ODBlZTcxZDkzZGU4Yjc3OWVhOWJmN2EwNTNiMjljN2I2OTQ0My4uZDBkMDEz
MGM2NmEzYzU5YzA2OGIzMzViZTdlOGM1OGI1ZThjY2E4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLWltZy10b29sdGlwLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAtZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsNCBAQAotVGVzdHMgdGhhdCB0aGUgdG9vbHRpcCB0ZXh0IGZvciB0aGUgaW1hZ2UgKGJl
bG93KSBpcyAiMjE1IMOXIDE3NCBwaXhlbHMiLgorVGVzdHMgdGhlIHRvb2x0aXAgZm9yIHRoZSBp
bWFnZSBvbiBob3Zlci4KIAogCiBQQVNTRUQsIHRvb2x0aXAgdGV4dCBpcyAiMjE1IMOXIDE3NCBw
aXhlbHMiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLWltZy10
b29sdGlwLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAu
aHRtbAppbmRleCAwODc1YjEwNGIyMjBhOGY5ODZhNTk0OTUyNGMxOTMzNWI2ZDg5NzRiLi44YTdi
NWU3ZTAxNjRmNmJlMGQyMWI3OWExZGI2MjlhNGQ3MGMzMDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRtbApAQCAtMSw2MiArMSw0MyBAQAog
PGh0bWw+CiA8aGVhZD4KIAotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci12YXIgRVhQRUNURURf
VE9PTFRJUF9URVhUID0gIjIxNSBceGQ3IDE3NCBwaXhlbHMiOwotZnVuY3Rpb24gZG9pdCgpCi17
Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2sodG9vbHRpcFRleHQpCi0gICAgewotICAgICAgICBpZiAo
IXRvb2x0aXBUZXh0KQotICAgICAgICAgICAgb3V0cHV0KCJGQUlMRUQsIHRvb2x0aXAgdGV4dCBz
aG91bGQgaGF2ZSBiZWVuIFwiIiArIEVYUEVDVEVEX1RPT0xUSVBfVEVYVCArICJcIi4gV2FzICIg
KyB0b29sdGlwVGV4dCArICIuIik7Ci0gICAgICAgIGVsc2UgaWYgKHRvb2x0aXBUZXh0ID09IEVY
UEVDVEVEX1RPT0xUSVBfVEVYVCkKLSAgICAgICAgICAgIG91dHB1dCgiUEFTU0VELCB0b29sdGlw
IHRleHQgaXMgXCIiICsgRVhQRUNURURfVE9PTFRJUF9URVhUICsgIlwiLiIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBvdXRwdXQoIkZBSUxFRCwgdG9vbHRpcCB0ZXh0IHNob3VsZCBoYXZl
IGJlZW4gXCIiICsgRVhQRUNURURfVE9PTFRJUF9URVhUICsgIlwiLiBXYXMgXCIiICsgdG9vbHRp
cFRleHQgKyAiXCIuIik7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVh
dGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcFRvb2x0aXAiLCBjYWxsYmFjayk7Ci19Ci0K
LS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KIAotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFRvb2x0aXAo
dGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1
bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfZHVtcFRvb2x0aXBDb250aW51YXRpb24p
OwotfQorICAgIEluc3BlY3RvclRlc3Qubm9kZVdpdGhJZCgiaW1hZ2UiLCBzdGVwMSk7CiAKLWZ1
bmN0aW9uIGZyb250ZW5kX2R1bXBUb29sdGlwQ29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQot
ewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHRvb2x0aXBUZXh0KQorICAgIGZ1bmN0aW9uIHN0ZXAx
KG5vZGUpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRvb2x0aXBU
ZXh0KTsKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSk7CisgICAgICAgIHRyZWVFbGVt
ZW50Ll9jcmVhdGVUb29sdGlwRm9yTm9kZSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDIuYmluZCh0aGlzLCB0cmVlRWxlbWVudCkpOwogICAg
IH0KIAotICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9E
T01Ob2RlOwotICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbm5lck1hcHBpbmcpIHsKLSAgICAgICAg
aWYgKGlubmVyTWFwcGluZ1tub2RlSWRdLm5vZGVOYW1lID09PSAiSU1HIikgewotICAgICAgICAg
ICAgdmFyIG5vZGUgPSBpbm5lck1hcHBpbmdbbm9kZUlkXTsKLSAgICAgICAgICAgIHZhciB0cmVl
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUuZmluZFRy
ZWVFbGVtZW50KG5vZGUpOwotICAgICAgICAgICAgdHJlZUVsZW1lbnQuX2NyZWF0ZVRvb2x0aXBG
b3JOb2RlKCk7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUodHJlZUVsZW1lbnQudG9vbHRpcCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9CisgICAgZnVuY3Rpb24gc3RlcDIodHJlZUVsZW1lbnQpCisgICAg
eworICAgICAgICBjb25zdCBFWFBFQ1RFRF9UT09MVElQX1RFWFQgPSAiMjE1IFx4ZDcgMTc0IHBp
eGVscyI7CisKKyAgICAgICAgdmFyIHRvb2x0aXBUZXh0ID0gdHJlZUVsZW1lbnQudG9vbHRpcDsK
KyAgICAgICAgaWYgKHRvb2x0aXBUZXh0ID09PSBFWFBFQ1RFRF9UT09MVElQX1RFWFQpCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTU0VELCB0b29sdGlwIHRleHQgaXMg
XCIiICsgRVhQRUNURURfVE9PTFRJUF9URVhUICsgIlwiLiIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVELCB0b29sdGlwIHRleHQgc2hv
dWxkIGhhdmUgYmVlbiBcIiIgKyBFWFBFQ1RFRF9UT09MVElQX1RFWFQgKyAiXCIuIFdhcyBcIiIg
KyB0b29sdGlwVGV4dCArICJcIi4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKICAgICB9CiB9CisKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9u
bG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgotVGVzdHMgdGhhdCB0aGUg
dG9vbHRpcCB0ZXh0IGZvciB0aGUgaW1hZ2UgKGJlbG93KSBpcyAmcXVvdDs8c2NyaXB0PmRvY3Vt
ZW50LndyaXRlKEVYUEVDVEVEX1RPT0xUSVBfVEVYVCk8L3NjcmlwdD4mcXVvdDsuCitUZXN0cyB0
aGUgdG9vbHRpcCBmb3IgdGhlIGltYWdlIG9uIGhvdmVyLgogPC9wPgogCi08aW1nIHNyYz0iZGF0
YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFOY0FBQUN1Q0FJQUFB
QXFNZy9yQUFBQUFYTlNSMElBcnM0YzZRQUFBVTlKUkVGVWVOcnQwakVSQUFBSXhEREF2K2RIQXhO
TElxSFhUbEx3YWlUQWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJ
THNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lM
c1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxz
U0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNT
RjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NG
NEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRkV1QkNjQ0V1QkJmaVFuQWhMZ1FYNGtKd0lTNEVG
K0pDY0NFdUJCZmlRbkFoTGdRWDRrSndJUzRFRitKQ2NDRXVCQmZpUW5BaExnUVg0a0p3SVM0RUYr
SkNjQ0V1QkJmaVFuQWhMb1NEQlpYcUJGbmtSeWVxQUFBQUFFbEZUa1N1UW1DQyIvPgorPGltZyBp
ZD0iaW1hZ2UiIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhF
VWdBQUFOY0FBQUN1Q0FJQUFBQXFNZy9yQUFBQUFYTlNSMElBcnM0YzZRQUFBVTlKUkVGVWVOcnQw
akVSQUFBSXhEREF2K2RIQXhOTElxSFhUbEx3YWlUQWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0ND
N0VoZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3
RWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdF
aGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0Vo
ZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhl
QkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRkV1QkNjQ0V1QkJm
aVFuQWhMZ1FYNGtKd0lTNEVGK0pDY0NFdUJCZmlRbkFoTGdRWDRrSndJUzRFRitKQ2NDRXVCQmZp
UW5BaExnUVg0a0p3SVM0RUYrSkNjQ0V1QkJmaVFuQWhMb1NEQlpYcUJGbmtSeWVxQUFBQUFFbEZU
a1N1UW1DQyIvPgogCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi1leHBl
Y3RlZC50eHQKaW5kZXggOGJmMjE3OTBiM2ExZjBkYzljNzljZjJkODVkZmY5OGRlMzlhOWRiOC4u
YWU2NzZlZDNlZGFlZjg3NmYxNTllNDVlNDQxOWNjOGQxNmM3ZjE4NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQtY2hpbGRyZW4tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1saW1pdGVk
LWNoaWxkcmVuLWV4cGVjdGVkLnR4dApAQCAtOSw4ICs5LDM1IEBACiAxMAogVGVzdHMgdGhhdCBz
cmMgYW5kIGhyZWYgZWxlbWVudCB0YXJnZXRzIGFyZSByZXdyaXR0ZW4gcHJvcGVybHkuCiAKKz09
PT09PT09PT09IExvYWRlZCA1IGNoaWxkcmVuID09PT09PT09PT09CiAKLTxkaXYgaWQ9ImRhdGEi
Pi8KKzxodG1sPgorPGhlYWQ+4oCmCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8ZGl2IGlkPSJkYXRhIj4KKzxkaXYgaWQ9ImlkMSI+MQorPC9kaXY+Cis8ZGl2IGlkPSJpZDIi
PjIKKzwvZGl2PgorPGRpdiBpZD0iaWQzIj4zCis8L2Rpdj4KKzxkaXYgaWQ9ImlkNCI+NAorPC9k
aXY+Cis8ZGl2IGlkPSJpZDUiPjUKKzwvZGl2PlNob3cgQWxsIE5vZGVzICg1IE1vcmUpCis8L2Rp
dj4KKzxwPlRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0
dGVuIHByb3Blcmx5LgorPC9wPgorPC9ib2R5PgorPC9odG1sPgorPT09PT09PT09PT0gTW9kaWZp
ZWQgY2hpbGRyZW4gPT09PT09PT09PT0KKworPGh0bWw+Cis8aGVhZD7igKYKKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxkaXYgaWQ9ImRhdGEiPgogPGE+CiA8L2E+CiA8ZGl2
IGlkPSJpZDEiPjEKQEAgLTIyLDcgKzQ5LDIxIEBAIFRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVs
ZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVuIHByb3Blcmx5LgogPGRpdiBpZD0iaWQ1Ij41CiA8
L2Rpdj5TaG93IEFsbCBOb2RlcyAoNiBNb3JlKQogPC9kaXY+Ci08ZGl2IGlkPSJkYXRhIj4vCis8
cD5UZXN0cyB0aGF0IHNyYyBhbmQgaHJlZiBlbGVtZW50IHRhcmdldHMgYXJlIHJld3JpdHRlbiBw
cm9wZXJseS4KKzwvcD4KKzxkaXYgY2xhc3M9Im91dHB1dCIgc3R5bGU9IndoaXRlLXNwYWNlOiBw
cmU7ICI+4oCmCis8L2Rpdj4KKzxkaXYgY2xhc3M9Im91dHB1dCIgc3R5bGU9IndoaXRlLXNwYWNl
OiBwcmU7ICI+4oCmCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKz09PT09PT09PT09IExvYWRl
ZCBhbGwgY2hpbGRyZW4gPT09PT09PT09PT0KKworPGh0bWw+Cis8aGVhZD7igKYKKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxkaXYgaWQ9ImRhdGEiPgogPGE+CiA8L2E+CiA8
ZGl2IGlkPSJpZDEiPjEKQEAgLTQ2LDQgKzg3LDE2IEBAIFRlc3RzIHRoYXQgc3JjIGFuZCBocmVm
IGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVuIHByb3Blcmx5LgogPGE+CiA8L2E+CiA8L2Rp
dj4KKzxwPlRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0
dGVuIHByb3Blcmx5LgorPC9wPgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hpdGUtc3Bh
Y2U6IHByZTsgIj7igKYKKzwvZGl2PgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hpdGUt
c3BhY2U6IHByZTsgIj7igKYKKzwvZGl2PgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hp
dGUtc3BhY2U6IHByZTsgIj7igKYKKzwvZGl2PgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0i
d2hpdGUtc3BhY2U6IHByZTsgIj7igKYKKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGls
ZHJlbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQt
Y2hpbGRyZW4uaHRtbAppbmRleCA1Y2QwOTcwNzhlN2Y5MGUxZWUwNzY5ZTUyNTAwZWYwM2VlODVk
NmYzLi5kNThiMjA3ZjU3NjM4MGYxZWU5ZDY2ZTljZWJjNTE4ZjkzODYxNDM1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1saW1pdGVkLWNo
aWxkcmVuLmh0bWwKQEAgLTEsMTYzICsxLDY2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gaW5zZXJ0Tm9kZSgp
CiB7Ci0gICAgZnVuY3Rpb24gcHJlT3V0cHV0KHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciBv
dXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0UHJlIik7Ci0gICAgICAgIG91
dHB1dC50ZXh0Q29udGVudCArPSByZXN1bHQucmVwbGFjZSgvXHUyMDBiL2csICIiKS5yZXBsYWNl
KC9cbi9nLCAiIikucmVwbGFjZSgvPC9nLCAiXG48Iik7Ci0gICAgfQorICAgIHZhciBkYXRhRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhIik7CisgICAgZGF0YUVsZW1lbnQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKTsKKyAgICBkYXRhRWxlbWVu
dC5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWQyIikpOworICAgIHZhciBh
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKKyAgICBkYXRhRWxlbWVudC5p
bnNlcnRCZWZvcmUoYUVsZW1lbnQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZDEiKSk7Cisg
ICAgZGF0YUVsZW1lbnQuYXBwZW5kQ2hpbGQoYUVsZW1lbnQpOworICAgIGRhdGFFbGVtZW50Lmlu
c2VydEJlZm9yZShhRWxlbWVudCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkMSIpKTsKK30K
IAotICAgIGZ1bmN0aW9uIG5vZGVEdW1wQWZ0ZXJDYWxsYmFjayhkdW1wKQotICAgIHsKLSAgICAg
ICAgcHJlT3V0cHV0KGR1bXApOwotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQorZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgdmFyIGRhdGFUcmVlRWxlbWVudDsKIAotICAgIGZ1bmN0aW9uIHNo
b3dBbGxDYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgICAgICBwcmVPdXRwdXQocmVzdWx0KTsKLSAgICAgICAgICAgIG5vdGlmeURvbmUoKTsKLSAg
ICAgICAgfQotICAgICAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wTm9k
ZSIsIG5vZGVEdW1wQWZ0ZXJDYWxsYmFjayk7Ci0gICAgfQorICAgIEluc3BlY3RvclRlc3Qubm9k
ZVdpdGhJZCgiZGF0YSIsIHN0ZXAxKTsKIAotICAgIGZ1bmN0aW9uIG5vZGVEdW1wQmVmb3JlQ2Fs
bGJhY2soZHVtcCkKKyAgICBmdW5jdGlvbiBzdGVwMShub2RlKQogICAgIHsKLSAgICAgICAgcHJl
T3V0cHV0KGR1bXApOwotICAgICAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9z
aG93QWxsIiwgc2hvd0FsbENhbGxiYWNrKTsKKyAgICAgICAgZGF0YVRyZWVFbGVtZW50ID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9k
ZSk7CisgICAgICAgIGRhdGFUcmVlRWxlbWVudC5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gNTsK
KyAgICAgICAgZGF0YVRyZWVFbGVtZW50LnJldmVhbCgpOworICAgICAgICBkYXRhVHJlZUVsZW1l
bnQuZXhwYW5kKCk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0
Y2hlcyhzdGVwMik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gbm9kZUV4cGFuZGVkQ2FsbGJhY2so
cmVzdWx0KQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQp
IHsKLSAgICAgICAgICAgIHByZU91dHB1dChyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9u
ZSgpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBkYXRhRWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkYXRhIik7Ci0gICAgICAgIGRhdGFFbGVtZW50LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImEiKSk7Ci0gICAgICAgIGRhdGFFbGVtZW50LnJlbW92ZUNoaWxk
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZDIiKSk7Ci0gICAgICAgIHZhciBhRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgZGF0YUVsZW1lbnQuaW5zZXJ0
QmVmb3JlKGFFbGVtZW50LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWQxIikpOwotICAgICAg
ICBkYXRhRWxlbWVudC5hcHBlbmRDaGlsZChhRWxlbWVudCk7Ci0gICAgICAgIGRhdGFFbGVtZW50
Lmluc2VydEJlZm9yZShhRWxlbWVudCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkMSIpKTsK
LSAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcE5vZGUiLCBub2Rl
RHVtcEJlZm9yZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09
PT09PT09PT09IExvYWRlZCA1IGNoaWxkcmVuID09PT09PT09PT09Iik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcEVsZW1lbnRzVHJlZSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5Db25zb2xlKCJpbnNlcnROb2RlKCkiLCBzdGVwMyk7CiAgICAgfQogCi0gICAgZnVuY3Rp
b24gZG9tTG9hZGVkQ2FsbGJhY2socmVzdWx0KQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7
Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHByZU91dHB1dChyZXN1bHQpOwot
ICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgICAgIGV2YWx1YXRlSW5X
ZWJJbnNwZWN0b3IoImZyb250ZW5kX3JldmVhbEFuZEV4cGFuZERhdGFOb2RlSW5FbGVtZW50c1Bh
bmVsIiwgbm9kZUV4cGFuZGVkQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDQpOwogICAgIH0KIAotICAgIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IoImZyb250ZW5kX2xvYWRET00iLCBkb21Mb2FkZWRDYWxsYmFjayk7Ci19Ci0KLS8v
IEZyb250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfc2hvd0FsbCh0ZXN0Q29u
dHJvbGxlcikKLXsKLSAgICB0cnkgewotICAgICAgICB2YXIgZGF0YURpdlRyZWVFbGVtZW50ID0g
ZnJvbnRlbmRfZ2V0RGF0YVRyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmICghZGF0YURpdlRyZWVF
bGVtZW50KSB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJzaG93X0Fs
bDogTm8gZGF0YSBkaXYgdHJlZSBlbGVtZW50IGZvdW5kIik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgd2luZG93Ll9fb2xkVXBkYXRlQ2hpbGRyZW4gPSBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUNoaWxkcmVuOwotICAg
ICAgICB3aW5kb3cuX19uZXdVcGRhdGVDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgd2luZG93Ll9fb2xkVXBkYXRlQ2hpbGRyZW4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBk
YXRlQ2hpbGRyZW4gPSB3aW5kb3cuX19vbGRVcGRhdGVDaGlsZHJlbjsKLSAgICAgICAgICAgIHRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoIiIpOwotICAgICAgICB9Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW4gPSB3aW5k
b3cuX19uZXdVcGRhdGVDaGlsZHJlbjsKLQotICAgICAgICBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUuaGFuZGxlTG9hZEFsbENoaWxkcmVuLmNhbGwoZGF0YURpdlRy
ZWVFbGVtZW50KTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAg
IH0gY2F0Y2goZSkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJzaG93QWxs
OiAiICsgZSk7CisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsgICAKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIj09PT09PT09PT09IE1vZGlmaWVkIGNoaWxkcmVuID09PT09PT09
PT09Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRzVHJlZSgpOworICAgICAg
ICBkYXRhVHJlZUVsZW1lbnQuaGFuZGxlTG9hZEFsbENoaWxkcmVuKCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwNSk7CiAgICAgfQotfQogCi1m
dW5jdGlvbiBmcm9udGVuZF9kdW1wTm9kZSh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnVuY3Rpb24gZHVtcEZ1bmN0aW9uKCkKKyAg
ICBmdW5jdGlvbiBzdGVwNSgpCiAgICAgewotICAgICAgICB2YXIgZGF0YURpdlRyZWVFbGVtZW50
ID0gZnJvbnRlbmRfZ2V0RGF0YVRyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmICghZGF0YURpdlRy
ZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJkdW1w
Tm9kZTogTm8gZGF0YSBkaXYgdHJlZSBlbGVtZW50IGZvdW5kIik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbGlDb250ZW50ID0gZGF0YURpdlRyZWVFbGVt
ZW50Lmxpc3RJdGVtRWxlbWVudCA/IGRhdGFEaXZUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQu
dGV4dENvbnRlbnQgOiAie0VNUFRZfSI7Ci0gICAgICAgIHZhciBjaGlsZHJlbkNvbnRlbnQgPSBk
YXRhRGl2VHJlZUVsZW1lbnQuY2hpbGRyZW5MaXN0RWxlbWVudCA/IGRhdGFEaXZUcmVlRWxlbWVu
dC5jaGlsZHJlbkxpc3RFbGVtZW50LnRleHRDb250ZW50IDogIntFTVBUWX0iOwotICAgICAgICB0
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKGxpQ29udGVudCArICIvIiArIGNoaWxkcmVuQ29udGVu
dCk7Ci0gICAgfQotICAgIC8vIEVuc3VyZSBhbGwgYXN5bmNocm9ub3VzIHVwZGF0ZXMgdG8gdGhl
IEVsZW1lbnRzIHRyZWUgb3V0bGluZSBhcmUgcHJvY2Vzc2VkIGJlZm9yZSBkdW1waW5nLgotICAg
IHNldFRpbWVvdXQoZHVtcEZ1bmN0aW9uLCAwKTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfcmV2
ZWFsQW5kRXhwYW5kRGF0YU5vZGVJbkVsZW1lbnRzUGFuZWwodGVzdENvbnRyb2xsZXIpCi17Ci0g
ICAgdmFyIGRhdGFEaXZUcmVlRWxlbWVudCA9IGZyb250ZW5kX2dldERhdGFUcmVlRWxlbWVudCgp
OwotICAgIGlmICghZGF0YURpdlRyZWVFbGVtZW50KSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoIk5vIGRhdGEgZGl2IHRyZWUgZWxlbWVudCBmb3VuZCIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGF0YURpdlRyZWVFbGVtZW50Ll9l
eHBhbmRlZENoaWxkcmVuTGltaXQgPSA1OwotICAgICAgICBkYXRhRGl2VHJlZUVsZW1lbnQucmV2
ZWFsKCk7Ci0gICAgICAgIGRhdGFEaXZUcmVlRWxlbWVudC5leHBhbmQoKTsKLSAgICAgICAgdGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgiIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoImV4cGFuZE5vZGU6ICIgKyBlKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIGZyb250ZW5kX2xvYWRET00odGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIC8vIE5lZWQgdGVzdCB0byBiZSBhc3luYyB0
byBleHBhbmQgd2hvbGUgdGhlIHRyZWUgZmlyc3QuCi0gICAgdHJ5IHsKLSAgICAgICAgZnJvbnRl
bmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgdGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZS5iaW5kKHRlc3RDb250cm9sbGVyLCAiIikpOwotICAgIH0gY2F0Y2go
ZSkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJsb2FkRE9NOiAiICsgZSk7
Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9nZXREYXRhVHJlZUVsZW1lbnQoKQotewot
ICAgIHZhciBub2RlID0gZnJvbnRlbmRfZ2V0RGF0YURPTUVsZW1lbnQoKTsKLSAgICBpZiAoIW5v
ZGUpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiBXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChub2RlKTsKLX0KLQotCi1mdW5j
dGlvbiBmcm9udGVuZF9nZXREYXRhRE9NRWxlbWVudCgpCi17Ci0gICAgdmFyIGlubmVyTWFwcGlu
ZyA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5faWRUb0RPTU5vZGU7Ci0KLSAgICBmb3IgKHZhciBu
b2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7Ci0gICAgICAgIHZhciBub2RlID0gaW5uZXJNYXBwaW5n
W25vZGVJZF07Ci0gICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09PSAiRElWIiAmJiBub2RlLmdl
dEF0dHJpYnV0ZSgiaWQiKSA9PT0gImRhdGEiKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09PT09PT09PSBMb2FkZWQgYWxsIGNo
aWxkcmVuID09PT09PT09PT09Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRz
VHJlZSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KLSAg
ICByZXR1cm4gbnVsbDsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9u
bG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxkaXYgaWQ9ImRhdGEiPgogPGRp
diBpZD0iaWQxIj4xPC9kaXY+CiA8ZGl2IGlkPSJpZDIiPjI8L2Rpdj4KQEAgLTE3Myw3ICs3Niw1
IEBAIGZ1bmN0aW9uIGZyb250ZW5kX2dldERhdGFET01FbGVtZW50KCkKIDxwPgogVGVzdHMgdGhh
dCBzcmMgYW5kIGhyZWYgZWxlbWVudCB0YXJnZXRzIGFyZSByZXdyaXR0ZW4gcHJvcGVybHkuCiA8
L3A+Ci08cHJlIGlkPSJvdXRwdXRQcmUiPgotPC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtcmV3cml0ZS1ocmVm
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdy
aXRlLWhyZWYtZXhwZWN0ZWQudHh0CmluZGV4IGExNTMyY2RkZTBmYjg4NzQzMzVjZjdhZjVlNzFk
NmFkMDExZWU0ZWIuLjZkMDkwZDVkYWQ1NDQ3NjA3ZGMwZGE3YmU4MTU1NTlkZGM0YWQwY2QgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhy
ZWYtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5l
bC1yZXdyaXRlLWhyZWYtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogVGVzdHMgdGhhdCBz
cmMgYW5kIGhyZWYgZWxlbWVudCB0YXJnZXRzIGFyZSByZXdyaXR0ZW4gcHJvcGVybHkuCiAKLVss
Ym9ndXNTaGVldDEuY3NzXQotW0xheW91dFRlc3RzLGluc3BlY3Rvcixib2d1c1NoZWV0Mi5jc3Nd
Ci1bdGVzdHMsaW5zcGVjdG9yLGluc3BlY3Rvci10ZXN0LmpzXQotW0xheW91dFRlc3RzLGluc3Bl
Y3RvcixlbGVtZW50cy10ZXN0cy5qc10KKyxib2d1c1NoZWV0MS5jc3MKK0xheW91dFRlc3RzLGlu
c3BlY3Rvcixib2d1c1NoZWV0Mi5jc3MKK3Rlc3RzLGluc3BlY3RvcixpbnNwZWN0b3ItdGVzdDIu
anMKK3Rlc3RzLGluc3BlY3RvcixlbGVtZW50cy10ZXN0LmpzCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhyZWYuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhyZWYuaHRtbAppbmRleCBm
MTdjMzAwODRiYWU0MjY2ZTBiMzY5ZjU5MmRjZDcyNWI2OTJhMTEwLi40NjYyOWNlMTA4OTQzZGIw
ODc5MjcxMmU4MjFhOTdkMDYzYmUyZDk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtcGFuZWwtcmV3cml0ZS1ocmVmLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXBhbmVsLXJld3JpdGUtaHJlZi5odG1sCkBAIC0zLDYxICszLDQ0IEBA
CiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgc3JjPSIvYm9ndXNTaGVldDEuY3NzIj4K
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgc3JjPSJib2d1c1NoZWV0Mi5jc3MiPgotPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdCgpCiB7Ci0g
ICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvdXRwdXQoIlsiICsgcmVz
dWx0W2ldICsgIl0iKTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UmV3cml0ZUhyZWZzIiwgY2FsbGJhY2spOwot
fQorICAgIEluc3BlY3RvclRlc3QucHVzaEFsbERPTShzdGVwMSk7CiAKLQotLy8gRnJvbnRlbmQg
ZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF90ZXN0UmV3cml0ZUhyZWZzKHRlc3RDb250
cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAvLyBO
ZWVkIHRlc3QgdG8gYmUgYXN5bmMgdG8gZXhwYW5kIHdob2xlIHRoZSB0cmVlIGZpcnN0LgotICAg
IGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZy
b250ZW5kX3Rlc3RSZXdyaXRlSHJlZnNDb250aW51YXRpb24pOwotfQotCi1mdW5jdGlvbiBmcm9u
dGVuZF90ZXN0UmV3cml0ZUhyZWZzQ29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewotICAg
IHZhciBpbm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOwot
ICAgIHZhciByZXN1bHQgPSBbXTsKLQotICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbm5lck1hcHBp
bmcpIHsKLSAgICAgICAgdmFyIG5vZGUgPSBpbm5lck1hcHBpbmdbbm9kZUlkXTsKLSAgICAgICAg
aWYgKG5vZGUubm9kZU5hbWUgPT09ICJMSU5LIiB8fCBub2RlLm5vZGVOYW1lID09PSAiU0NSSVBU
IikgewotICAgICAgICAgICAgdmFyIHNlZ21lbnRzID0gW107Ci0gICAgICAgICAgICB2YXIgaHJl
ZiA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTEZvclJlbGF0ZWROb2RlKG5vZGUsIG5vZGUuZ2V0
QXR0cmlidXRlKCJzcmMiKSB8fCBub2RlLmdldEF0dHJpYnV0ZSgiaHJlZiIpKTsKLSAgICAgICAg
ICAgIGlmICghaHJlZikgewotICAgICAgICAgICAgICAgIHNlZ21lbnRzLnB1c2goIjxlbXB0eT4i
KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAg
eworICAgICAgICB2YXIgaW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9pZFRv
RE9NTm9kZTsKKworICAgICAgICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7Cisg
ICAgICAgICAgICB2YXIgbm9kZSA9IGlubmVyTWFwcGluZ1tub2RlSWRdOworICAgICAgICAgICAg
aWYgKG5vZGUubm9kZU5hbWUgPT09ICJMSU5LIiB8fCBub2RlLm5vZGVOYW1lID09PSAiU0NSSVBU
IikgeworICAgICAgICAgICAgICAgIHZhciBzZWdtZW50cyA9IFtdOworICAgICAgICAgICAgICAg
IHZhciBocmVmID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMRm9yUmVsYXRlZE5vZGUobm9kZSwg
bm9kZS5nZXRBdHRyaWJ1dGUoInNyYyIpIHx8IG5vZGUuZ2V0QXR0cmlidXRlKCJocmVmIikpOwor
ICAgICAgICAgICAgICAgIGlmICghaHJlZikgeworICAgICAgICAgICAgICAgICAgICBzZWdtZW50
cy5wdXNoKCI8ZW1wdHk+Iik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgcGFyc2VkVVJMID0gaHJlZi5hc1BhcnNl
ZFVSTCgpOworICAgICAgICAgICAgICAgIGlmICghcGFyc2VkVVJMKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJGQUlMOiBubyBVUkwgbWF0Y2ggZm9yIDwi
ICsgaHJlZiArICI+Iik7CisgICAgICAgICAgICAgICAgdmFyIHNwbGl0ID0gcGFyc2VkVVJMLnBh
dGguc3BsaXQoIi8iKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3BsaXQubGVuZ3Ro
IC0gMSwgaiA9IDA7IGogPCAzICYmIGkgPj0gMDsgLS1pLCArK2opCisgICAgICAgICAgICAgICAg
ICAgIHNlZ21lbnRzLnB1c2goc3BsaXRbaV0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KHNlZ21lbnRzLnJldmVyc2UoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB2YXIgcGFyc2VkVVJMID0gaHJlZi5hc1BhcnNlZFVSTCgpOwotICAgICAgICAgICAgaWYg
KCFwYXJzZWRVUkwpCi0gICAgICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgi
RkFJTDogbm8gVVJMIG1hdGNoIGZvciA8IiArIGhyZWYgKyAiPiIpOwotICAgICAgICAgICAgdmFy
IHNwbGl0ID0gcGFyc2VkVVJMLnBhdGguc3BsaXQoIi8iKTsKLSAgICAgICAgICAgIGZvciAodmFy
IGkgPSBzcGxpdC5sZW5ndGggLSAxLCBqID0gMDsgaiA8IDMgJiYgaSA+PSAwOyAtLWksICsraikK
LSAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKHNwbGl0W2ldKTsKLSAgICAgICAgICAgIHJl
c3VsdC5wdXNoKHNlZ21lbnRzLnJldmVyc2UoKSk7CiAgICAgICAgIH0KKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZShyZXN1bHQpOwogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJv
bmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgc3Jj
IGFuZCBocmVmIGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVuIHByb3Blcmx5LgogPC9wPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlv
bi1vbi1yZWZyZXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50
cy1wYW5lbC1zZWxlY3Rpb24tb24tcmVmcmVzaC1leHBlY3RlZC50eHQKaW5kZXggNjU4YmI3YWEw
NjAzOTBkYjk5Yzg5YTBjZDQ4YjFjYzQzZmI2ZTc2OC4uYjc3NTZiMWY0YzIxZDZlODViOGVlZjFl
Zjk3YWFlYmZjMTcwNGM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZyZXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc2VsZWN0aW9uLW9uLXJlZnJlc2gtZXhwZWN0
ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAogVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBwcmVzZXJ2
ZXMgc2VsZWN0ZWQgbm9kZSBvbiBwYWdlIHJlZnJlc2guCiAKK1BhZ2UgcmVsb2FkZWQuCiBTZWxl
Y3RlZCBlbGVtZW50IHNob3VsZCBiZSAnUCcsIHdhczogJ1AnCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zZWxlY3Rpb24tb24tcmVmcmVzaC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZy
ZXNoLmh0bWwKaW5kZXggYzI2ZGFkYmM0MmNiNWNiMjUwMjVjNWFjN2Y1ZTNhNTFlYjEzOTUzNS4u
YzVmMmUzMTIxNzA5YmUzOGJiNzkwYjExOTJhNDM2Njk5MjVkMDkxNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZyZXNoLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1v
bi1yZWZyZXNoLmh0bWwKQEAgLTEsNTQgKzEsMzcgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsK
LSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RO
b2RlV2l0aElkKCJ0ZXN0LXRvcGljIiwgc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQog
ICAgIHsKLSAgICAgICAgaWYgKHJlc3VsdCA9PT0gInJlbG9hZCIpCi0gICAgICAgICAgICB3aW5k
b3cubG9jYXRpb24ucmVsb2FkKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgb3V0cHV0
KCJTZWxlY3RlZCBlbGVtZW50IHNob3VsZCBiZSAnUCcsIHdhczogJyIgKyByZXN1bHQgKyAiJyIp
OwotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9CisgICAgICAgIEluc3BlY3Rv
clRlc3QucmVsb2FkUGFnZShzdGVwMik7CisgICAgfQorIAorICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhz
dGVwMyk7CiAgICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3NlbGVj
dEVsZW1lbnQiLCBjYWxsYmFjayk7Ci19Ci0KLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KIAotZnVu
Y3Rpb24gZnJvbnRlbmRfc2VsZWN0RWxlbWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBpZiAo
d2luZG93LnJlZnJlc2hDYWxsZWQpIHsKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgewogICAg
ICAgICAvLyBXZSBzaG91bGQgaGF2ZSAidGVzdC10b3BpYyIgZWxlbWVudCBzZWxlY3RlZCBhZnRl
ciByZWZyZXNoLgogICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICBy
ZXR1cm4gc2VsZWN0ZWRFbGVtZW50ID8gc2VsZWN0ZWRFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0
Lm5vZGVOYW1lIDogIm51bGwiOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFNlbGVjdCB0aGUg
InRlc3QtdG9waWMiIGVsZW1lbnQuCi0gICAgICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICAgICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJv
bGxlciwgbnVsbCwgZnJvbnRlbmRfc2VsZWN0RWxlbWVudENvbnRpbnVhdGlvbik7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBmcm9udGVuZF9zZWxlY3RFbGVtZW50Q29udGludWF0aW9uKHRlc3RDb250
cm9sbGVyKQotewotICAgIHZhciBub2RlID0gZnJvbnRlbmRfbm9kZUZvcklkKCJ0ZXN0LXRvcGlj
Iik7Ci0gICAgaWYgKG5vZGUpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy50cmVlT3V0bGluZS5yZXZlYWxBbmRTZWxlY3ROb2RlKG5vZGUpOwotICAgICAgICB3aW5kb3cu
cmVmcmVzaENhbGxlZCA9IHRydWU7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
InJlbG9hZCIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBub2RlTmFtZSA9IHNlbGVj
dGVkRWxlbWVudCA/IHNlbGVjdGVkRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5ub2RlTmFtZSA6
ICJudWxsIjsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNlbGVjdGVkIGVsZW1l
bnQgc2hvdWxkIGJlICdQJywgd2FzOiAnIiArIG5vZGVOYW1lICsgIiciKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgiRkFJTCIpOwogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2Fk
PSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cCBpZD0idGVzdC10b3Bp
YyI+CiBUZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHByZXNlcnZlcyBzZWxlY3RlZCBub2RlIG9u
IHBhZ2UgcmVmcmVzaC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKaW5kZXggZTlhN2YyOTg1
NWY4MmYzZWEzZmNhODQxMzg3ZmY2ODMwYjA5MzgxMC4uY2I3ZGViOThlMDMxNDFiZGUxYjJhY2I1
ZWViM2RhYWQ0ODZmMTBmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMjUg
QEAKIFRlc3RzIHRoYXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0dXJlLgog
CitUZXh0CiAKIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRy
YW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgog
PGh0bWw+Ci08aGVhZD7igKYKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj4KKzwvc2NyaXB0PgorPHNjcmlw
dD5mdW5jdGlvbiB0ZXN0KCl7ICAgIEluc3BlY3RvclRlc3QucHVzaEFsbERPTShzdGVwMSk7ICAg
IGZ1bmN0aW9uIHN0ZXAxKCkgICAgeyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTG9hZGVkRE9N
KCk7ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOyAgICB9fQorPC9zY3JpcHQ+
CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KIDxwPlRlc3RzIHRoYXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0
dXJlLgogPC9wPgotPHByZSBpZD0ib3V0cHV0UHJlIj4KLTwvcHJlPgotPGRpdiBpZD0ib3V0cHV0
IiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZTsgIj4KKzxkaXYgaWQ9ImxldmVsMSI+Cis8ZGl2IGlk
PSJsZXZlbDIiPiJUZXh0ICAgICAgICAiCis8ZGl2IGlkPSJsZXZlbDMiPgorPC9kaXY+Cis8L2Rp
dj4KIDwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS5odG1sCmluZGV4IDMzZmE0MTQ2MDUzYjc1ZGI3
NzBmYTlhY2ZiZWI4NjRiNWIyMjhlNmUuLjA1MzZmYTkyYzU0MTFmNDcyOWVhM2NkZTMwYjk3NjZj
YmRiMDMzM2EgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5l
bC1zdHJ1Y3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFu
ZWwtc3RydWN0dXJlLmh0bWwKQEAgLTEsNDYgKzEsMzQgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iZWxlbWVudHMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3QoKQogewotICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICBJbnNwZWN0b3JUZXN0LnB1c2hBbGxET00oc3Rl
cDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdmFyIG91dHB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQcmUiKTsKLSAgICAgICAgb3V0cHV0LnRl
eHRDb250ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikucmVwbGFjZSgvXG4vZywg
IiIpLnJlcGxhY2UoLzwvZywgIlxuPCIpOwotICAgICAgICBub3RpZnlEb25lKCk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcExvYWRlZERPTSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVu
ZF9kdW1wQWxsRWxlbWVudHMiLCBjYWxsYmFjayk7Ci19Ci0KLQotLy8gRnJvbnRlbmQgZnVuY3Rp
b25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wQWxsRWxlbWVudHModGVzdENvbnRyb2xsZXIp
Ci17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIC8vIE5lZWQgdGVz
dCB0byBiZSBhc3luYyB0byBleHBhbmQgd2hvbGUgdGhlIHRyZWUgZmlyc3QuCi0gICAgZnJvbnRl
bmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRf
cmVwb3J0VGV4dENvbnRlbnQpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9yZXBvcnRUZXh0Q29u
dGVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFdl
Ykluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUuZWxlbWVudC50ZXh0Q29udGVu
dCk7CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5l
bCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCiA8L3A+CiAKLTxwcmUgaWQ9Im91dHB1dFByZSI+
Ci08L3ByZT4KKzxkaXYgaWQ9ImxldmVsMSI+CisgICAgPGRpdiBpZD0ibGV2ZWwyIj5UZXh0Cisg
ICAgICAgIDxkaXYgaWQ9ImxldmVsMyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KIAogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXBhbmVsLXN0eWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVs
LXN0eWxlcy5odG1sCmluZGV4IDFkMzFkYmU1MDUyYjc0ODQxYWJiOTE3MWFjOThiMzk5ODQwODc4
MmEuLjRiMTg2MGYzZDY0NjI3YTMzNGI5YmYzYmI2ZDY0NDM4MjUyNGZjMDQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWwKQEAgLTEsMzYg
KzEsMjYgQEAKIDxodG1sPgogPGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBocmVmPSJyZXNvdXJjZXMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzcyI+Ci08c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3Qo
KQogewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICBJbnNwZWN0b3JUZXN0LnNl
bGVjdE5vZGVXaXRoSWQoImZvbyIsIHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAg
ICB7Ci0gICAgICAgIGR1bXBBcnJheShyZXN1bHQpOwotICAgICAgICBub3RpZnlEb25lKCk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgZmFs
c2UpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wU3R5bGVzIiwgY2FsbGJhY2spOwot
fQotCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBTdHls
ZXModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51
bGwsIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51YXRpb24pOwogfQogCi1mdW5jdGlvbiBm
cm9udGVuZF9zZWxlY3RFbGVtZW50Q29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewotICAg
IGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJmb28iLCBmcm9u
dGVuZF9kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKTsKLX0KIDwvc2NyaXB0PgogPC9oZWFkPgog
Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxw
PgogVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBwcm9wZXIgc3R5bGVzIGluIHRoZSBz
aWRlYmFyIHBhbmVsLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzLXBhbmVsLXhodG1sLXN0cnVjdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtcGFuZWwteGh0bWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dAppbmRl
eCA3YzA3MDkzMGY0N2NmMzdiODY1N2VmOWYwY2ZlMjZlYWQzOGUwNzM0Li4wZDc5ODMwNmI3ZWI1
MzVmMzViMDg3YmNhZWQxZjljMTk4MmIwOWUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtcGFuZWwteGh0bWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwteGh0bWwtc3RydWN0dXJlLWV4cGVj
dGVkLnR4dApAQCAtNCwxMSArNCwxOCBAQCBQYXJhZ3JhcGggQlIgdGVzdAogTmV4dCBsaW5lCiAK
ICAKLWFwcGxpY2F0aW9uL3hodG1sK3htbCAKKwogPEhUTUwgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgotPEhlYWQ+4oCmCis8SGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPgorPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+Cis8L3Njcmlw
dD4KKzxzY3JpcHQ+Cis8IVtDREFUQVtmdW5jdGlvbiB0ZXN0KCl7ICAgIEluc3BlY3RvclRlc3Qu
cHVzaEFsbERPTShzdGVwMSk7ICAgIGZ1bmN0aW9uIHN0ZXAxKCkgICAgeyAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wTG9hZGVkRE9NKCk7ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOyAgICB9fV1dPgorPC9zY3JpcHQ+CiA8L0hlYWQ+Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgp
Ij4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPiJUZXN0cyB0aGF0IGVsZW1lbnRzIHBh
bmVsIHNob3dzIFhNTCBkb20gdHJlZSBzdHJ1Y3R1cmUgd2l0aCBjbG9zaW5nIHRhZ3MgZm9yIGFs
bCBlbGVtZW50cy4iCiA8L3A+CiA8aHI+CkBAIC0yMCwxMCArMjcsNiBAQCBhcHBsaWNhdGlvbi94
aHRtbCt4bWwKIDwhW0NEQVRBWyBDRGF0YSBDb250ZW50IF1dPgogPGltZyBhbHQ9IlJhbmRvbSBJ
bWFnZSI+CiA8L2ltZz4KLTxwcmUgaWQ9Im91dHB1dFByZSI+Ci08L3ByZT4KLTxkaXYgaWQ9Im91
dHB1dCIgc3R5bGU9IndoaXRlLXNwYWNlOiBwcmU7ICI+Ci08L2Rpdj4KIDwvYm9keT4KIDwvSFRN
TD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXho
dG1sLXN0cnVjdHVyZS54aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5l
bC14aHRtbC1zdHJ1Y3R1cmUueGh0bWwKaW5kZXggZDVmMDQ5MTMxOWFjMjUyM2NjNmVmZWU2OTIz
ZGZlN2M3NjQ2NGM5MC4uMTFiMmI3NDVjYzYyZDMzZGQ2ZTk2YTIwMmUxNTFjNDU1ZTI2OGRjOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXhodG1sLXN0
cnVjdHVyZS54aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwt
eGh0bWwtc3RydWN0dXJlLnhodG1sCkBAIC0xLDEwOSArMSwyNCBAQAogPEhUTUwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPEhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KIDwhW0NEQVRBWwotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAg
ICBmdW5jdGlvbiBwcmVPdXRwdXQocmVzdWx0KQotICAgIHsKLSAgICAgICAgdmFyIG91dHB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQcmUiKTsKLSAgICAgICAgb3V0cHV0LnRl
eHRDb250ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikucmVwbGFjZSgvXG4vZywg
IiIpLnJlcGxhY2UoLzwvZywgIlxuPCIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vZGVEdW1w
Q2FsbGJhY2soZHVtcCkKLSAgICB7Ci0gICAgICAgIHByZU91dHB1dChkdW1wKTsKLSAgICAgICAg
bm90aWZ5RG9uZSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vZGVFeHBhbmRlZENhbGxiYWNr
KHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHByZU91
dHB1dChyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAg
ICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1bXBBbGxFbGVtZW50cyIsIG5v
ZGVEdW1wQ2FsbGJhY2spOwotICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnB1c2hBbGxET00oc3Rl
cDEpOwogCi0gICAgZnVuY3Rpb24gZG9tTG9hZGVkQ2FsbGJhY2socmVzdWx0KQorICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHBy
ZU91dHB1dChyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2V4cGFuZE5vZGVzIiwgbm9k
ZUV4cGFuZGVkQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBMb2FkZWRET00o
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0KLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9sb2FkRE9NIiwgZG9tTG9hZGVkQ2FsbGJh
Y2spOwotfQotCi0KLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRf
ZHVtcEFsbEVsZW1lbnRzKHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICAvLyBOZWVkIHRlc3QgdG8gYmUgYXN5bmMgdG8gZXhwYW5kIHdo
b2xlIHRoZSB0cmVlIGZpcnN0LgotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4o
dGVzdENvbnRyb2xsZXIsIG51bGwsIGZyb250ZW5kX3JlcG9ydE1pbWVUeXBlQW5kQ29udGVudCk7
CiB9Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX3JlcG9ydE1pbWVUeXBlQW5kQ29udGVudCh0ZXN0Q29u
dHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFdlYkluc3BlY3Rvci5t
YWluUmVzb3VyY2UubWltZVR5cGUgKyAiICIgKyBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRz
LnRyZWVPdXRsaW5lLmVsZW1lbnQudGV4dENvbnRlbnQpOwotfQotCi1mdW5jdGlvbiBmcm9udGVu
ZF9leHBhbmROb2Rlcyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0cnkgewotICAgICAgICB2YXIg
aW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9pZFRvRE9NTm9kZTsKLSAgICAg
ICAgdmFyIHRyZWVFbGVtZW50ID0gZmFsc2U7Ci0gICAgICAgIHZhciByZXN1bHQgPSAiIjsKLQot
ICAgICAgICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7Ci0gICAgICAgICAgICB2
YXIgbm9kZSA9IGlubmVyTWFwcGluZ1tub2RlSWRdOwotICAgICAgICAgICAgcmVzdWx0ICs9IG5v
ZGUubm9kZU5hbWUgKyAiICI7Ci0gICAgICAgICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PT0gInAi
KSB7Ci0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVs
ZW1lbnRzLnRyZWVPdXRsaW5lLmNyZWF0ZVRyZWVFbGVtZW50Rm9yKG5vZGUpOwotICAgICAgICAg
ICAgICAgIGlmICh0cmVlRWxlbWVudCkgewotICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVu
dC5yZXZlYWwoKTsKLSAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCF0cmVlRWxlbWVudCkgewotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50ID09PSBmYWxzZSkK
LSAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJObyAncCcgRE9NIGVs
ZW1lbnQgZm91bmQiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCIncCcgdHJlZSBlbGVtZW50IGNvdWxkIG5vdCBiZSBjcmVhdGVk
Iik7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoIiIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCJleHBhbmROb2RlOiAiICsgZSk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiBmcm9udGVuZF9sb2FkRE9NKHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAvLyBOZWVkIHRlc3QgdG8gYmUgYXN5bmMgdG8gZXhw
YW5kIHdob2xlIHRoZSB0cmVlIGZpcnN0LgotICAgIHRyeSB7Ci0gICAgICAgIGZyb250ZW5kX2V4
cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIHRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUuYmluZCh0ZXN0Q29udHJvbGxlciwgIiIpKTsKLSAgICB9IGNhdGNoKGUpIHsK
LSAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgibG9hZERPTTogIiArIGUpOwotICAg
IH0KLX0KLQogXV0+CiA8L3NjcmlwdD4KIDwvSGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQo
KSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgZWxlbWVudHMg
cGFuZWwgc2hvd3MgWE1MIGRvbSB0cmVlIHN0cnVjdHVyZSB3aXRoIGNsb3NpbmcgdGFncyBmb3Ig
YWxsIGVsZW1lbnRzLgogPC9wPgpAQCAtMTE1LDggKzMwLDUgQEAgVGVzdHMgdGhhdCBlbGVtZW50
cyBwYW5lbCBzaG93cyBYTUwgZG9tIHRyZWUgc3RydWN0dXJlIHdpdGggY2xvc2luZyB0YWdzIGZv
ciBhbGwKIAogPGltZyBhbHQ9IlJhbmRvbSBJbWFnZSI+PC9pbWc+CiAKLTxwcmUgaWQ9Im91dHB1
dFByZSI+Ci08L3ByZT4KLQogPC9ib2R5PgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzLXRlc3RzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZTA2OTI2ZWEz
ZTllYmI3ODk0Y2FjOWQ5NTBkNjJkYzllMWUwODE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0
cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vLyBGcm9udGVuZCBmdW5jdGlv
bnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWUobm9kZSkKLXsKLSAgICBu
b2RlID0gbm9kZSB8fCBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQ7Ci0gICAgZnVuY3Rp
b24gcHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuKQotICAgIHsKLSAgICAgICBmb3IgKHZhciBpID0g
MDsgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICBmcm9u
dGVuZF9leHBhbmRET01TdWJ0cmVlKGNoaWxkcmVuW2ldKTsKLSAgICB9Ci0gICAgV2ViSW5zcGVj
dG9yLmRvbUFnZW50LmdldENoaWxkTm9kZXNBc3luYyhub2RlLCBwcm9jZXNzQ2hpbGRyZW4pOwot
fQotCi1mdW5jdGlvbiBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlQW5kUnVuKHRlc3RDb250cm9s
bGVyLCBub2RlLCBjb250aW51YXRpb24pCi17Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJl
ZShub2RlKTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGNv
bnRpbnVhdGlvbi5iaW5kKHRoaXMsIHRlc3RDb250cm9sbGVyKSk7Ci19Ci0KLWZ1bmN0aW9uIGZy
b250ZW5kX25vZGVGb3JJZChpZFZhbHVlKQotewotICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOwotICAgIGZvciAodmFyIG5vZGVJZCBpbiBp
bm5lck1hcHBpbmcpIHsKLSAgICAgICAgdmFyIG5vZGUgPSBpbm5lck1hcHBpbmdbbm9kZUlkXTsK
LSAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpID09PSBpZFZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotfQotCi1mdW5jdGlv
biBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCBpZFZhbHVlLCBj
b250aW51YXRpb24pCi17Ci0gICAgdmFyIG5vZGUgPSBmcm9udGVuZF9ub2RlRm9ySWQoaWRWYWx1
ZSk7Ci0gICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
Ik5vIG5vZGUgZm91bmQuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJJbnNw
ZWN0b3IudXBkYXRlRm9jdXNlZE5vZGUobm9kZS5pZCk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjb250aW51YXRpb24uYmluZCh0aGlzLCB0ZXN0Q29udHJv
bGxlcikpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVz
KHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoZnJvbnRl
bmRfZ2V0U2VsZWN0ZWRFbGVtZW50U3R5bGVzKGZhbHNlKSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250
ZW5kX2dldFNlbGVjdGVkRWxlbWVudFN0eWxlcyhleGNsdWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRj
aGVkKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uczsK
LSAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiBzdHlsZVNlY3Rpb25zKSB7Ci0gICAgICAgIHZhciBw
c2V1ZG9OYW1lID0gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVkb0lkTmFtZXNb
cHNldWRvSWRdOwotICAgICAgICB2YXIgc2VjdGlvbnMgPSBzdHlsZVNlY3Rpb25zW3BzZXVkb0lk
XTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uc1tpXTsKLSAgICAgICAgICAgIGlmIChz
ZWN0aW9uLmNvbXB1dGVkU3R5bGUgJiYgZXhjbHVkZUNvbXB1dGVkKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHNlY3Rpb24ucnVsZSAmJiBleGNsdWRlTWF0Y2hl
ZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uLmVs
ZW1lbnQucHJldmlvdXNTaWJsaW5nICYmIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcu
Y2xhc3NOYW1lID09PSAic3R5bGVzLXNpZGViYXItc2VwYXJhdG9yIikKLSAgICAgICAgICAgICAg
ICByZXN1bHQucHVzaCgiPT09PT09PT0gIiArIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxp
bmcudGV4dENvbnRlbnQgKyAiID09PT09PT09Iik7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgo
c2VjdGlvbi5leHBhbmRlZCA/ICJbZXhwYW5kZWRdICIgOiAiW2NvbGxhcHNlZF0gIikgKyBzZWN0
aW9uLnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCArICIgKCIgKyBzZWN0aW9uLnN1YnRpdGxlQXNU
ZXh0Rm9yVGVzdCArICIpIik7Ci0gICAgICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwotICAgICAg
ICAgICAgZnJvbnRlbmRfZHVtcFN0eWxlVHJlZU91dGxpbmUoc2VjdGlvbi5wcm9wZXJ0aWVzVHJl
ZU91dGxpbmUsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgiIik7Ci0gICAgICAg
IH0KLSAgICAgICAgcmVzdWx0LnB1c2goIiIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1mdW5jdGlvbiBmcm9udGVuZF9nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKHBy
b3BlcnR5TmFtZSkKLXsKLSAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3BlY3Rvci5wYW5l
bHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uc1swXTsKLSAgICB2YXIgZWxl
bWVudFN0eWxlU2VjdGlvbiA9IHN0eWxlU2VjdGlvbnNbMV07Ci0gICAgdmFyIG91dGxpbmUgPSBl
bGVtZW50U3R5bGVTZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHRy
ZWVJdGVtID0gb3V0bGluZS5jaGlsZHJlbltpXTsKLSAgICAgICAgaWYgKHRyZWVJdGVtLm5hbWUg
PT09IHByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiB0cmVlSXRlbTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG51bGw7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBTdHlsZVRyZWVPdXRs
aW5lKHRyZWVJdGVtLCByZXN1bHQpCi17Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hp
bGRyZW47Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAg
ICAgICAgZnJvbnRlbmRfZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHJlc3VsdCwgIiIp
OwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wU3R5bGVUcmVlSXRlbSh0cmVlSXRlbSwgcmVz
dWx0LCBwcmVmaXgpCi17Ci0gICAgLy8gRmlsdGVyIG91dCB3aWR0aCBhbmQgaGVpZ2h0IHByb3Bl
cnRpZXMgaW4gb3JkZXIgdG8gbWluaW1pemUKLSAgICAvLyBwb3RlbnRpYWwgZGlmZnMuCi0gICAg
aWYgKCF0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigid2lkdGgi
KSB8fAotICAgICAgICAhdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50LmluZGV4
T2YoImhlaWdodCIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodHJlZUl0ZW0ubGlzdEl0
ZW1FbGVtZW50Lmhhc1N0eWxlQ2xhc3MoImluaGVyaXRlZCIpKQotICAgICAgICByZXR1cm47Ci0g
ICAgdmFyIHR5cGVQcmVmaXggPSAiIjsKLSAgICBpZiAodHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50
Lmhhc1N0eWxlQ2xhc3MoIm92ZXJsb2FkZWQiKSkKLSAgICAgICAgdHlwZVByZWZpeCArPSAiLy0t
IG92ZXJsb2FkZWQgLS0vICI7Ci0gICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5oYXNT
dHlsZUNsYXNzKCJkaXNhYmxlZCIpKQotICAgICAgICB0eXBlUHJlZml4ICs9ICIvLS0gZGlzYWJs
ZWQgLS0vICI7Ci0gICAgdmFyIHRleHRDb250ZW50ID0gdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50
LnRleHRDb250ZW50OwotCi0gICAgLy8gQWRkIG5vbi1zZWxlY3RhYmxlIHVybCB0ZXh0LgotICAg
IHZhciB0ZXh0RGF0YSA9IHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5xdWVyeVNlbGVjdG9yKCJb
ZGF0YS11bmNvcHlhYmxlXSIpOwotICAgIGlmICh0ZXh0RGF0YSkKLSAgICAgICAgdGV4dENvbnRl
bnQgKz0gdGV4dERhdGEuZ2V0QXR0cmlidXRlKCJkYXRhLXVuY29weWFibGUiKTsKLQotICAgIHJl
c3VsdC5wdXNoKHByZWZpeCArIHR5cGVQcmVmaXggKyB0ZXh0Q29udGVudCk7Ci0gICAgdHJlZUl0
ZW0uZXhwYW5kKCk7Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAg
ICAgICAgZnJvbnRlbmRfZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHJlc3VsdCwgcHJl
Zml4ICsgIiAgICAiKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVt
ZW50cy10ZXN0czIuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdHMyLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1YjRmZmVhNDRiN2NlZmNlMjhjNGUyODI2
ZTlkM2QwODgzM2Q2YjA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0czIuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTkgKzAsMCBAQAotdmFyIGluaXRpYWxpemVfRWxlbWVudFRlc3QgPSBmdW5j
dGlvbigpIHsKLQotSW5zcGVjdG9yVGVzdC5leHBhbmRET01TdWJ0cmVlID0gZnVuY3Rpb24obm9k
ZSkKLXsKLSAgICBub2RlID0gbm9kZSB8fCBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQ7
Ci0gICAgZnVuY3Rpb24gcHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuKQotICAgIHsKLSAgICAgICBm
b3IgKHZhciBpID0gMDsgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWUoY2hpbGRyZW5baV0pOwotICAg
IH0KLSAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZ2V0Q2hpbGROb2Rlc0FzeW5jKG5vZGUsIHBy
b2Nlc3NDaGlsZHJlbik7Ci19OwotCi1JbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRS
dW4gPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykKLXsKLSAgICBJbnNwZWN0b3JUZXN0LmV4cGFu
ZERPTVN1YnRyZWUobm9kZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKGNhbGxiYWNrKTsKLX07Ci0KLUluc3BlY3RvclRlc3Qubm9kZUZvcklkID0gZnVuY3Rp
b24oaWRWYWx1ZSkKLXsKLSAgICB2YXIgaW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFn
ZW50Ll9pZFRvRE9NTm9kZTsKLSAgICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7
Ci0gICAgICAgIHZhciBub2RlID0gaW5uZXJNYXBwaW5nW25vZGVJZF07Ci0gICAgICAgIGlmIChu
b2RlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gaWRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBu
b2RlOwotICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLX07Ci0KLUluc3BlY3RvclRlc3Quc2VsZWN0
RWxlbWVudEFuZFJ1biA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQotewotICAgIHZhciBu
b2RlID0gSW5zcGVjdG9yVGVzdC5ub2RlRm9ySWQoaWRWYWx1ZSk7Ci0gICAgaWYgKG5vZGUpCi0g
ICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2VkTm9kZShub2RlLmlkKTsKLSAgICBJbnNw
ZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJhY2spOwotfTsKLQotSW5z
cGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oKQotewotICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVu
dFN0eWxlcyhmYWxzZSkpOwotfTsKLQotSW5zcGVjdG9yVGVzdC5nZXRTZWxlY3RlZEVsZW1lbnRT
dHlsZXMgPSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaGVkKQotewotICAg
IHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uczsKLSAgICBmb3IgKHZh
ciBwc2V1ZG9JZCBpbiBzdHlsZVNlY3Rpb25zKSB7Ci0gICAgICAgIHZhciBwc2V1ZG9OYW1lID0g
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVkb0lkTmFtZXNbcHNldWRvSWRdOwot
ICAgICAgICB2YXIgc2VjdGlvbnMgPSBzdHlsZVNlY3Rpb25zW3BzZXVkb0lkXTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
dmFyIHNlY3Rpb24gPSBzZWN0aW9uc1tpXTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uLmNvbXB1
dGVkU3R5bGUgJiYgZXhjbHVkZUNvbXB1dGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgaWYgKHNlY3Rpb24ucnVsZSAmJiBleGNsdWRlTWF0Y2hlZCkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uLmVsZW1lbnQucHJldmlv
dXNTaWJsaW5nICYmIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcuY2xhc3NOYW1lID09
PSAic3R5bGVzLXNpZGViYXItc2VwYXJhdG9yIikKLSAgICAgICAgICAgICAgICByZXN1bHQucHVz
aCgiPT09PT09PT0gIiArIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcudGV4dENvbnRl
bnQgKyAiID09PT09PT09Iik7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgoc2VjdGlvbi5leHBh
bmRlZCA/ICJbZXhwYW5kZWRdICIgOiAiW2NvbGxhcHNlZF0gIikgKyBzZWN0aW9uLnRpdGxlRWxl
bWVudC50ZXh0Q29udGVudCArICIgKCIgKyBzZWN0aW9uLnN1YnRpdGxlQXNUZXh0Rm9yVGVzdCAr
ICIpIik7Ci0gICAgICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU3R5bGVUcmVlT3V0bGluZShzZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGlu
ZSwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCIiKTsKLSAgICAgICAgfQotICAg
ICAgICByZXN1bHQucHVzaCgiIik7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19OwotCi0v
LyBGSVhNRTogdGhpcyByZXR1cm5zIHRoZSBmaXJzdCB0cmVlIGl0ZW0gZm91bmQgKG1heSBmYWls
IGZvciBzYW1lLW5hbWVkIHByb3BlcnRpZXMgaW4gYSBzdHlsZSkuCi1JbnNwZWN0b3JUZXN0Lmdl
dEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0gPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCi17
Ci0gICAgdmFyIHN0eWxlU2VjdGlvbnMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNp
ZGViYXJQYW5lcy5zdHlsZXMuc2VjdGlvbnNbMF07Ci0gICAgdmFyIGVsZW1lbnRTdHlsZVNlY3Rp
b24gPSBzdHlsZVNlY3Rpb25zWzFdOwotICAgIHZhciBvdXRsaW5lID0gZWxlbWVudFN0eWxlU2Vj
dGlvbi5wcm9wZXJ0aWVzVHJlZU91dGxpbmU7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRs
aW5lLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciB0cmVlSXRlbSA9IG91dGxp
bmUuY2hpbGRyZW5baV07Ci0gICAgICAgIGlmICh0cmVlSXRlbS5uYW1lID09PSBwcm9wZXJ0eU5h
bWUpCi0gICAgICAgICAgICByZXR1cm4gdHJlZUl0ZW07Ci0gICAgfQotICAgIHJldHVybiBudWxs
OwotfTsKLQotSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlT3V0bGluZSA9IGZ1bmN0aW9uKHRy
ZWVJdGVtLCByZXN1bHQpCi17Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlSXRlbShjaGlsZHJlbltpXSwgcmVzdWx0LCAiIik7
Ci19OwotCi1JbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVtID0gZnVuY3Rpb24odHJlZUl0
ZW0sIHJlc3VsdCwgcHJlZml4KQotewotICAgIC8vIEZpbHRlciBvdXQgd2lkdGggYW5kIGhlaWdo
dCBwcm9wZXJ0aWVzIGluIG9yZGVyIHRvIG1pbmltaXplCi0gICAgLy8gcG90ZW50aWFsIGRpZmZz
LgotICAgIGlmICghdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50LmluZGV4T2Yo
IndpZHRoIikgfHwKLSAgICAgICAgIXRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVu
dC5pbmRleE9mKCJoZWlnaHQiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHRyZWVJdGVt
Lmxpc3RJdGVtRWxlbWVudC5oYXNTdHlsZUNsYXNzKCJpbmhlcml0ZWQiKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHZhciB0eXBlUHJlZml4ID0gIiI7Ci0gICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVt
RWxlbWVudC5oYXNTdHlsZUNsYXNzKCJvdmVybG9hZGVkIikpCi0gICAgICAgIHR5cGVQcmVmaXgg
Kz0gIi8tLSBvdmVybG9hZGVkIC0tLyAiOwotICAgIGlmICh0cmVlSXRlbS5saXN0SXRlbUVsZW1l
bnQuaGFzU3R5bGVDbGFzcygiZGlzYWJsZWQiKSkKLSAgICAgICAgdHlwZVByZWZpeCArPSAiLy0t
IGRpc2FibGVkIC0tLyAiOwotICAgIHZhciB0ZXh0Q29udGVudCA9IHRyZWVJdGVtLmxpc3RJdGVt
RWxlbWVudC50ZXh0Q29udGVudDsKLQotICAgIC8vIEFkZCBub24tc2VsZWN0YWJsZSB1cmwgdGV4
dC4KLSAgICB2YXIgdGV4dERhdGEgPSB0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQucXVlcnlTZWxl
Y3RvcigiW2RhdGEtdW5jb3B5YWJsZV0iKTsKLSAgICBpZiAodGV4dERhdGEpCi0gICAgICAgIHRl
eHRDb250ZW50ICs9IHRleHREYXRhLmdldEF0dHJpYnV0ZSgiZGF0YS11bmNvcHlhYmxlIik7Ci0K
LSAgICByZXN1bHQucHVzaChwcmVmaXggKyB0eXBlUHJlZml4ICsgdGV4dENvbnRlbnQpOwotICAg
IHRyZWVJdGVtLmV4cGFuZCgpOwotICAgIHZhciBjaGlsZHJlbiA9IHRyZWVJdGVtLmNoaWxkcmVu
OwotICAgIGZvciAodmFyIGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyAr
K2kpCi0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0s
IHJlc3VsdCwgcHJlZml4ICsgIiAgICAiKTsKLX07Ci0KLX07CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3MgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3MKaW5k
ZXggYjFiMzAzNTZiYmQ2MmNhNzdjNmZkM2JmY2U0YjY1MGNhZDc2MGZmOC4uYmQ0NmM5NzI2N2I5
YWU3NDlhNWU2NTI4Y2NkZGY1ZWJjYWZiN2NmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuY3NzCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzcwpAQCAtMSwz
NCArMSwzNCBAQAogYm9keSB7Ci0JZm9udC1zaXplOiAxMnB4OworICAgIGZvbnQtc2l6ZTogMTJw
eDsKIH0KIAogI2NvbnRhaW5lciB7Ci0JZm9udC1mYW1pbHk6IHNlcmlmOwotCWZvbnQtc2l6ZTog
MTRweDsKKyAgICBmb250LWZhbWlseTogc2VyaWY7CisgICAgZm9udC1zaXplOiAxNHB4OwogfQog
CiAuZm9vIHsKLQljb2xvcjogYmxhY2s7Ci0JbWFyZ2luOiAxMHB4IDAgMnB4OwotCWJvcmRlci1y
YWRpdXM6IDVweDsKKyAgICBjb2xvcjogYmxhY2s7CisgICAgbWFyZ2luOiAxMHB4IDAgMnB4Owor
ICAgIGJvcmRlci1yYWRpdXM6IDVweDsKIH0KIAogLmZvbywgLmZvbzo6YmVmb3JlIHsKLQljb250
ZW50OiAiW2JlZm9yZSBGb29dIjsKLQljb2xvcjogYmx1ZTsKKyAgICBjb250ZW50OiAiW2JlZm9y
ZSBGb29dIjsKKyAgICBjb2xvcjogYmx1ZTsKIH0KIAogLmZvbzo6YmVmb3JlIHsKLQljb2xvcjog
cmVkOworICAgIGNvbG9yOiByZWQ7CiB9CiAKIC5mb286OmFmdGVyIHsKLQljb250ZW50OiAiW2Fm
dGVyIEZvb10iOwotCWNvbG9yOiBncmVlbjsKKyAgICBjb250ZW50OiAiW2FmdGVyIEZvb10iOwor
ICAgIGNvbG9yOiBncmVlbjsKIH0KIC5mb286OmFmdGVyIHsKLQlmb250LWZhbWlseTogY291cmll
cjsKLQljb250ZW50OiAiW2FmdGVyIEZvbyAyXSI7CisgICAgZm9udC1mYW1pbHk6IGNvdXJpZXI7
CisgICAgY29udGVudDogIlthZnRlciBGb28gMl0iOwogfQogCiAuZm9vIHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLWlmcmFtZS1kYXRhLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1pZnJhbWUtZGF0YS5odG1s
CmluZGV4IDBmNDk2NmJmOWU0YTEwNmY0YzJmMzQzMTdhMDU0Yjg3ZTQ5NGIyNTcuLjhiMWQ0YzAz
NzQ0YzI1ZjEyMDZjYTViZjllYjcyM2E2YzdiYjRiOTYgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLWlmcmFtZS1kYXRhLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtaWZyYW1lLWRhdGEuaHRtbApAQCAtMTEs
NyArMTEsNyBAQCBmdW5jdGlvbiBpZnJhbWVPbmxvYWQoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAK
LTxib2R5IG9ubG9hZD0iaWZyYW1lT25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJpZnJhbWVPbmxv
YWQoKSIgaWQ9ImlmcmFtZUJvZHkiPgogPC9ib2R5PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2UuaHRtbAppbmRleCBk
YWZlNDJmNzYwNWMyYTUwNmMzZTY5YTQ3YjNmM2JjOWE1ZGE2ODFiLi40ODdmNzBmNDFlZmY5YTQ0
M2JkMjQzYzA1MmFjYzU2MmU2NTM1NDIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdG9yYWdlLXBhbmVsLWRvbS1zdG9yYWdlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVu
Y3Rpb24gcG9wdWxhdGVET01TdG9yYWdlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzLWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sCmluZGV4IDQ5Njg5MmRjMTRlMDZkOTY5
MTZlNDU4ZmI2MmY3MWRiYjc4NDQ0MzMuLmI1N2NmZjg2YTVmZDMzNWZkZDVjYzBmMDdhOGVlZjkw
NWNjMjYwOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtYWRkLWJs
YW5rLXByb3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1hZGQt
YmxhbmstcHJvcGVydHkuaHRtbApAQCAtMSw4OSArMSw3MSBAQAogPGh0bWw+CiA8aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iZWxlbWVudHMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3Qo
KQogewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGR1bXBB
cnJheShyZXN1bHQpOwotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRl
SW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7Ci19CisgICAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CiAKLS8vIEZy
b250ZW5kIGZ1bmN0aW9ucy4KKyAgICB2YXIgdHJlZUVsZW1lbnQ7CiAKLWZ1bmN0aW9uIGZyb250
ZW5kX3J1blRlc3QodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRy
b2xsZXIsIG51bGwsIGZyb250ZW5kX3NlbGVjdEluc3BlY3RlZEVsZW1lbnQpOwotfQotCi1mdW5j
dGlvbiBmcm9udGVuZF9zZWxlY3RJbnNwZWN0ZWRFbGVtZW50KHRlc3RDb250cm9sbGVyKQotewot
ICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJpbnNwZWN0
ZWQiLCBmcm9udGVuZF9kdW1wSW5zcGVjdGVkU3R5bGUpOwotfQorICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgYXBwZW5k
OiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBJbnNwZWN0ZWRTdHlsZSh0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkJlZm9yZSBhcHBlbmQ6Iik7
Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cyA9IHRlc3RDb250cm9sbGVyLnJlc3VsdHMuY29u
Y2F0KGZyb250ZW5kX2dldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKSk7CisgICAgICAgIHZh
ciBzZWN0aW9uID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5
bGVzLnNlY3Rpb25zWzBdWzFdOworICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwogCi0gICAgdmFy
IHNlY3Rpb24gPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHls
ZXMuc2VjdGlvbnNbMF1bMV07Ci0gICAgc2VjdGlvbi5leHBhbmQoKTsKLSAgICB2YXIgdHJlZUVs
ZW1lbnQgPSBzZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKTsKLSAgICB2YXIgZW50ZXJLZXlE
b3duID0gZnJvbnRlbmRfY3JlYXRlS2V5RXZlbnQoIkVudGVyIik7CisgICAgICAgIC8vIENyZWF0
ZSBhbmQgaW5jcmVtZW50LgorICAgICAgICB0cmVlRWxlbWVudCA9IHNlY3Rpb24uYWRkTmV3Qmxh
bmtQcm9wZXJ0eSgpOworICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVkaXRpbmcoKTsKKyAgICAg
ICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAibWFyZ2luLWxlZnQiOwor
ICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRl
c3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiMXB4IjsKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVFbGVt
ZW50LmZpcnN0Q2hpbGQuc2VsZWN0KCk7CisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVu
dC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIlVwIikpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDIpOworICAg
IH0KIAotICAgIGZ1bmN0aW9uIHJlbW92ZUVtcHR5KCkKKyAgICBmdW5jdGlvbiBzdGVwMigpCiAg
ICAgewotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5kaXNwYXRjaEV2
ZW50KGVudGVyS2V5RG93bik7Ci0gICAgICAgIGZyb250ZW5kX2R1bXBSZXN1bHRzKHRlc3RDb250
cm9sbGVyKTsKKyAgICAgICAgLy8gSW5jcmVtZW50IGFnYWluLgorICAgICAgICB0cmVlRWxlbWVu
dC52YWx1ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50
KCJVcCIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVz
KHN0ZXAzKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBjb21taXQoKQorICAgIGZ1bmN0aW9uIHN0
ZXAzKCkKICAgICB7Ci0gICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2
ZW50KGVudGVyS2V5RG93bik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGlu
Z0Rpc3BhdGNoZXMocmVtb3ZlRW1wdHkuYmluZCh0aGlzKSk7CisgICAgICAgIC8vIENvbW1pdC4K
KyAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxl
Y3ROb2RlV2l0aElkKCJvdGhlciIsIHN0ZXA0KTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBpbmNy
ZW1lbnRBZ2FpbigpCisgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKLSAgICAgICAgdHJlZUVs
ZW1lbnQudmFsdWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZnJvbnRlbmRfY3JlYXRlS2V5RXZlbnQo
IlVwIikpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVz
KGNvbW1pdC5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0
aElkKCJpbnNwZWN0ZWQiLCBzdGVwNSk7CiAgICAgfQogCi0gICAgdHJlZUVsZW1lbnQuc3RhcnRF
ZGl0aW5nKCk7Ci0gICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAibWFy
Z2luLWxlZnQiOwotICAgIHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZW50
ZXJLZXlEb3duKTsKLSAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAi
MXB4IjsKLSAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsK
LSAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChmcm9udGVuZF9jcmVh
dGVLZXlFdmVudCgiVXAiKSk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlz
cGF0Y2hlcyhpbmNyZW1lbnRBZ2Fpbi5iaW5kKHRoaXMpKTsKLX0KLQotZnVuY3Rpb24gZnJvbnRl
bmRfZHVtcFJlc3VsdHModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgZnVuY3Rpb24gcmVwb3J0UmVz
dWx0cygpCisgICAgZnVuY3Rpb24gc3RlcDUoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJBZnRlciBhcHBlbmQ6Iik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxl
Y3RlZEVsZW1lbnRTdHlsZXModHJ1ZSkpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKHRlc3RDb250cm9sbGVyLnJlc3VsdHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQWZ0ZXIgYXBwZW5kOiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3Rl
ZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CiAgICAgfQotICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xs
ZXIsICJpbnNwZWN0ZWQiLCByZXBvcnRSZXN1bHRzKTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgog
PHA+CiBUZXN0cyB0aGF0IGFkZGluZyBhIG5ldyBibGFuayBwcm9wZXJ0eSB3b3Jrcy4KIDwvcD4K
IAogPGRpdiBpZD0iaW5zcGVjdGVkIiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij5UZXh0PC9kaXY+
Cis8ZGl2IGlkPSJvdGhlciI+PC9kaXY+CiAKIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbAppbmRleCA4ZjY2NjA4
NGZlYjFhNmZlNzNlYWYzYjBlZjliNWRhYWRlMWVlNGQyLi4xNGUyNmQ1OTMwNWQ1ZWJkMzk0YWJm
MmRiMmI5MzVjNTQ0ZDQ2Mjk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzLWNvbXB1dGVkLXRyYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy1jb21wdXRlZC10cmFjZS5odG1sCkBAIC0yNiw1MSArMjYsMzMgQEAgYm9keSB7CiB9CiAKIDwv
c3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5j
dGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAg
ICAgICBkdW1wQXJyYXkocmVzdWx0KTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAg
ICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9ydW5UZXN0IiwgY2FsbGJhY2spOwot
fQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiaWQxIiwgc3RlcDEpOwogCi0v
LyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX3J1blRlc3QodGVzdENv
bnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGZy
b250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZyb250
ZW5kX3NlbGVjdE5lc3RlZEVsZW1lbnQpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9zZWxlY3RO
ZXN0ZWRFbGVtZW50KHRlc3RDb250cm9sbGVyKQotewotICAgIGZyb250ZW5kX3NlbGVjdEVsZW1l
bnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJpZDEiLCBmcm9udGVuZF9kdW1wSUQxU3R5bGUpOwot
fQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDEgPT09PSIpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpOwogCi1mdW5j
dGlvbiBmcm9udGVuZF9kdW1wSUQxU3R5bGUodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDEgPT09PSIp
OwotICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNv
bmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpKTsKLSAg
ICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAiaWQyIiwgZnJv
bnRlbmRfZHVtcElEMlN0eWxlKTsKLX0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2Rl
V2l0aElkKCJpZDIiLCBzdGVwMik7CisgICAgfQogCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wSUQy
U3R5bGUodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDIgPT09PSIpOwotICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxl
Y3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpKTsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIj09PT0gQ29tcHV0ZWQgc3R5bGUgZm9yIElEMiA9PT09Iik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQogfQotCiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgY29tcHV0ZWQgc3R5bGVzIGV4cGFuZCBhbmQg
YWxsb3cgdHJhY2luZyB0byBzdHlsZSBydWxlcy4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbAppbmRleCAyOWY5Mjc1YmE0
ODliZDFlODdlMjI3NDI0ODgwZDU0ZGM2MDYyYzdiLi5mY2U5Y2MzMjlhYzljZWU4NTdjNDQ5YTZj
YzM4NGQ4NGU0OGZjYTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
LWRpc2FibGUtaW5oZXJpdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy1kaXNhYmxlLWluaGVyaXRlZC5odG1sCkBAIC0xLDYzICsxLDQxIEBACiA8aHRtbD4KIDxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24g
dGVzdCgpCiB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAg
ZHVtcEFycmF5KHJlc3VsdCk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZh
bHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfcnVuVGVzdCIsIGNhbGxiYWNrKTsKLX0KLQot
Ly8gRnJvbnRlbmQgZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9ydW5UZXN0KHRlc3RD
b250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBm
cm9udGVuZF9leHBhbmRET01TdWJ0cmVlQW5kUnVuKHRlc3RDb250cm9sbGVyLCBudWxsLCBmcm9u
dGVuZF9zZWxlY3ROZXN0ZWRFbGVtZW50KTsKLX0KIAotZnVuY3Rpb24gZnJvbnRlbmRfc2VsZWN0
TmVzdGVkRWxlbWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBmcm9udGVuZF9zZWxlY3RFbGVt
ZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAibmVzdGVkIiwgZnJvbnRlbmRfZHVtcE5lc3RlZFN0
eWxlKTsKLX0KKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoIm5lc3RlZCIsIHN0
ZXAxKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcE5lc3RlZFN0eWxlKHRlc3RDb250cm9sbGVy
KQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5kX2dldEVsZW1lbnRTdHlsZVByb3BlcnR5
VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCJCZWZvcmUgZGlzYWJsZSIpOwotICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMgPSB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXMo
dHJ1ZSkpOworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIHZhciB0cmVlSXRl
bSA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiZm9udC13
ZWlnaHQiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkJlZm9yZSBkaXNhYmxl
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVl
KTsKIAotICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJj
b250YWluZXIiLCBmcm9udGVuZF9kaXNhYmxlQ29udGFpbmVyU3R5bGUpOwotfQorICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImNvbnRhaW5lciIsIHN0ZXAyKTsKKyAgICB9
CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2Rpc2FibGVDb250YWluZXJTdHlsZSh0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICB2YXIgdHJlZUl0ZW0gPSBmcm9udGVuZF9nZXRFbGVtZW50U3R5bGVQcm9wZXJ0
eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOwotICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0
YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9KTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzKGZyb250ZW5kX2R1bXBSZXN1bHRzLmJpbmQodGhpcywgdGVzdENv
bnRyb2xsZXIpKTsKLX0KKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICB2YXIg
dHJlZUl0ZW0gPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0o
ImZvbnQtd2VpZ2h0Iik7CisgICAgICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6
IHsgY2hlY2tlZDogZmFsc2UgfSB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2Rl
V2l0aElkKCJuZXN0ZWQiLCBzdGVwMyk7CisgICAgfQogCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1w
UmVzdWx0cyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBmdW5jdGlvbiByZXBvcnRSZXN1bHRzKCkK
KyAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIkFmdGVyIGRpc2FibGU6Iik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3Vs
dHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVs
ZW1lbnRTdHlsZXModHJ1ZSkpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRl
c3RDb250cm9sbGVyLnJlc3VsdHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
QWZ0ZXIgZGlzYWJsZToiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVt
ZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwog
ICAgIH0KLSAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAi
bmVzdGVkIiwgcmVwb3J0UmVzdWx0cyk7CiB9Ci0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9k
eSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVz
dHMgdGhhdCBkaXNhYmxpbmcgaW5oZXJpdGVkIHN0eWxlIHByb3BlcnR5IGRvZXMgbm90IGJyZWFr
IGZ1cnRoZXIgc3R5bGUgaW5zcGVjdGlvbi4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS10aGVuLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKaW5kZXggMjJmYmNkNWUy
MGNjZGRmZWZhNmM0MWY1Yjc4YTQ0MTFjZWIxNTZiZS4uYzM1YWE2ZjM4Y2QwMzJjYTRlYTEzNmVk
YTBkZGFjN2E4ZTYzMjYzZCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKQEAgLTEsNDQgKzEsMzkgQEAKIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0czIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3Qu
anMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgZnVuY3Rp
b24gc2VsZWN0Q29udGFpbmVyRWxlbWVudENvbnRpbnVhdGlvbigpCi0gICAgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNlbGVjdEVsZW1lbnRBbmRSdW4oImNvbnRhaW5lciIsIGRpc2FibGVDb250
YWluZXJTdHlsZSk7Ci0gICAgfQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgi
Y29udGFpbmVyIiwgc3RlcDEpOwogCi0gICAgZnVuY3Rpb24gZGlzYWJsZUNvbnRhaW5lclN0eWxl
KCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB2YXIgdHJlZUl0ZW0gPSBJ
bnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0
Iik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgZGlzYWJsZSIpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdHMoSW5zcGVjdG9yVGVzdC5nZXRTZWxlY3Rl
ZEVsZW1lbnRTdHlsZXModHJ1ZSwgdHJ1ZSkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
ZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgdHJ1ZSk7CiAKKyAgICAgICAgdmFyIHRyZWVJdGVt
ID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdl
aWdodCIpOwogICAgICAgICB0cmVlSXRlbS50b2dnbGVFbmFibGVkKHsgdGFyZ2V0OiB7IGNoZWNr
ZWQ6IGZhbHNlIH0gfSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlz
cGF0Y2hlcyhjaGFuZ2VDb250YWluZXJTdHlsZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gY2hh
bmdlQ29udGFpbmVyU3R5bGUoKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAg
IHZhciB0cmVlSXRlbSA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVl
SXRlbSgiZm9udC13ZWlnaHQiKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFm
dGVyIGRpc2FibGUiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHRzKEluc3BlY3Rv
clRlc3QuZ2V0U2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIHRydWUpKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIHRydWUpOwogCisgICAg
ICAgIHZhciB0cmVlSXRlbSA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlU
cmVlSXRlbSgiZm9udC13ZWlnaHQiKTsKICAgICAgICAgdHJlZUl0ZW0uYXBwbHlTdHlsZVRleHQo
ImNvbG9yOiBncmVlbiIsIHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMoZHVtcFJlc3VsdHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDMpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGR1bXBS
ZXN1bHRzKCkKKyAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgY2hhbmdlIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVl
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVl
LCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0K
LSAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc2VsZWN0Q29u
dGFpbmVyRWxlbWVudENvbnRpbnVhdGlvbik7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS10aGVuLWRlbGV0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0
bWwKaW5kZXggNTIxNDNiMzQwMmRhNTI0NTVkM2MxNTIwOTM5MjU5OTY4NmRlMTE2NS4uYjM5YTli
YTM5MGIwMGUxZTQyNjBiNzE4MjUwZmVjMzlmYjU1MWZkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0bWwKQEAgLTEsNzIg
KzEsNTggQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRz
LXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVu
Y3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhy
ZXN1bHQpCi0gICAgewotICAgICAgICBkdW1wQXJyYXkocmVzdWx0KTsKLSAgICAgICAgbm90aWZ5
RG9uZSgpOwotICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9ydW5U
ZXN0IiwgY2FsbGJhY2spOwotfQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgi
Y29udGFpbmVyIiwgc3RlcDEpOwogCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCisgICAgZnVuY3Rp
b24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgLy8gRGlzYWJsZSBwcm9wZXJ0eQorICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQmVmb3JlIGRpc2FibGUiKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIHRydWUpOwogCi1mdW5jdGlv
biBmcm9udGVuZF9ydW5UZXN0KHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlQW5kUnVuKHRl
c3RDb250cm9sbGVyLCBudWxsLCBmcm9udGVuZF9zZWxlY3RDb250YWluZXJFbGVtZW50Q29udGlu
dWF0aW9uKTsKLX0KKyAgICAgICAgdmFyIHRyZWVJdGVtID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVt
ZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOworICAgICAgICB0cmVlSXRl
bS50b2dnbGVFbmFibGVkKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSk7CiAKLWZ1bmN0
aW9uIGZyb250ZW5kX3NlbGVjdENvbnRhaW5lckVsZW1lbnRDb250aW51YXRpb24odGVzdENvbnRy
b2xsZXIpCi17Ci0gICAgZnJvbnRlbmRfc2VsZWN0RWxlbWVudEFuZFJ1bih0ZXN0Q29udHJvbGxl
ciwgImNvbnRhaW5lciIsIGZyb250ZW5kX2Rpc2FibGVDb250YWluZXJTdHlsZSk7Ci19CisgICAg
ICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CisgICAg
fQogCi1mdW5jdGlvbiBmcm9udGVuZF9kaXNhYmxlQ29udGFpbmVyU3R5bGUodGVzdENvbnRyb2xs
ZXIpCi17Ci0gICAgdmFyIHRyZWVJdGVtID0gZnJvbnRlbmRfZ2V0RWxlbWVudFN0eWxlUHJvcGVy
dHlUcmVlSXRlbSgiZm9udC13ZWlnaHQiKTsKLSAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkJlZm9yZSBkaXNhYmxlIik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cyA9IHRlc3RD
b250cm9sbGVyLnJlc3VsdHMuY29uY2F0KGZyb250ZW5kX2dldFNlbGVjdGVkRWxlbWVudFN0eWxl
cyh0cnVlLCB0cnVlKSk7CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgLy8g
RGVsZXRlIHN0eWxlCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZnRlciBkaXNh
YmxlIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0
cnVlLCB0cnVlKTsKIAotICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6IHsgY2hl
Y2tlZDogZmFsc2UgfSB9KTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKGZyb250ZW5kX2RlbGV0ZUNvbnRhaW5lclN0eWxlLmJpbmQodGhpcywgdGVzdENvbnRy
b2xsZXIpKTsKLX0KKyAgICAgICAgdmFyIHRyZWVJdGVtID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVt
ZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOworICAgICAgICB0cmVlSXRl
bS5hcHBseVN0eWxlVGV4dCgiIiwgdHJ1ZSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2RlbGV0ZUNv
bnRhaW5lclN0eWxlKHRlc3RDb250cm9sbGVyKQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250
ZW5kX2dldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJBZnRlciBkaXNhYmxlIik7Ci0gICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cyA9IHRlc3RDb250cm9sbGVyLnJlc3VsdHMuY29uY2F0KGZyb250ZW5k
X2dldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVlKSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7CisgICAgfQogCi0gICAgdHJl
ZUl0ZW0uYXBwbHlTdHlsZVRleHQoIiIsIHRydWUpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnJvbnRlbmRfcmVzZWxlY3ROb2RlQW5kRHVtcFJlc3VsdHMu
YmluZCh0aGlzLCB0ZXN0Q29udHJvbGxlcikpOwotfQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgib3RoZXIiLCBzdGVw
NCk7CisgICAgfQogCi1mdW5jdGlvbiBmcm9udGVuZF9yZXNlbGVjdE5vZGVBbmREdW1wUmVzdWx0
cyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBmdW5jdGlvbiBjb250aW51YXRpb24oKQorICAgIGZ1
bmN0aW9uIHN0ZXA0KCkKICAgICB7Ci0gICAgICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRS
dW4odGVzdENvbnRyb2xsZXIsICJjb250YWluZXIiLCBmcm9udGVuZF9kdW1wUmVzdWx0cyk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiY29udGFpbmVyIiwgc3RlcDUp
OwogICAgIH0KLSAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVy
LCAib3RoZXIiLCBjb250aW51YXRpb24pOwotfQogCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wUmVz
dWx0cyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB2YXIgdHJlZUl0ZW0gPSBmcm9udGVuZF9nZXRF
bGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOwotICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiQWZ0ZXIgZGVsZXRlIik7Ci0gICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cyA9IHRlc3RDb250cm9sbGVyLnJlc3VsdHMuY29uY2F0KGZyb250ZW5kX2dldFNlbGVj
dGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVlKSk7Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGZ1bmN0aW9uIHN0ZXA1KG5vZGUpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgZGVsZXRlIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJv
ZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRl
c3RzIHRoYXQgcmVtb3ZhbCBvZiBwcm9wZXJ0eSBmb2xsb3dpbmcgaXRzIGRpc2FibGluZyB3b3Jr
cy4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtZGlzYWJs
ZS10aGVuLWVuYWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxl
LXRoZW4tZW5hYmxlLmh0bWwKaW5kZXggNzAxOTMzMjdkOWM3ZTBiODAxNDAxNzkzMmI0OGJlZTA5
YTZhMGIyMC4uNTlmM2Y0NmI4ZjE5OTQ4NjRkNzE0M2QxMWY3ZTA2YmNiODFhZTEyMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxl
Lmh0bWwKQEAgLTEsNjMgKzEsNDYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5j
dGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBkdW1wQXJyYXkocmVzdWx0KTsK
LSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9y
KCJmcm9udGVuZF9ydW5UZXN0IiwgY2FsbGJhY2spOwotfQotCi0vLyBGcm9udGVuZCBmdW5jdGlv
bnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX3J1blRlc3QodGVzdENvbnRyb2xsZXIpCi17Ci0gICAg
dGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1
YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZyb250ZW5kX3NlbGVjdENvbnRhaW5l
ckVsZW1lbnRDb250aW51YXRpb24pOwotfQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdp
dGhJZCgiY29udGFpbmVyIiwgc3RlcDEpOwogCi1mdW5jdGlvbiBmcm9udGVuZF9zZWxlY3RDb250
YWluZXJFbGVtZW50Q29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewotICAgIGZyb250ZW5k
X3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJjb250YWluZXIiLCBmcm9udGVu
ZF9kaXNhYmxlQ29udGFpbmVyU3R5bGUpOwotfQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgZGlzYWJsZSIpOworICAg
ICAgICB2YXIgdHJlZUl0ZW0gPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5
VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxl
VHJlZUl0ZW0odHJlZUl0ZW0sICIiKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfZGlzYWJsZUNvbnRh
aW5lclN0eWxlKHRlc3RDb250cm9sbGVyKQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5k
X2dldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVz
dENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJCZWZvcmUgZGlzYWJsZSIpOwotICAgIGZyb250ZW5k
X2R1bXBTdHlsZVRyZWVJdGVtKHRyZWVJdGVtLCB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLCAiIik7
CisgICAgICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFs
c2UgfSB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVz
KHN0ZXAyKTsKKyAgICB9CiAKLSAgICB0cmVlSXRlbS50b2dnbGVFbmFibGVkKHsgdGFyZ2V0OiB7
IGNoZWNrZWQ6IGZhbHNlIH0gfSk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5n
RGlzcGF0Y2hlcyhmcm9udGVuZF9lbmFibGVDb250YWluZXJTdHlsZS5iaW5kKHRoaXMsIHRlc3RD
b250cm9sbGVyKSk7Ci19CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIGRpc2FibGUiKTsKKyAgICAgICAgdmFyIHRyZWVJ
dGVtID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250
LXdlaWdodCIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVtKHRyZWVJ
dGVtLCAiIik7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2VuYWJsZUNvbnRhaW5lclN0eWxlKHRlc3RD
b250cm9sbGVyKQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5kX2dldEVsZW1lbnRTdHls
ZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVz
dWx0cy5wdXNoKCJBZnRlciBkaXNhYmxlIik7Ci0gICAgZnJvbnRlbmRfZHVtcFN0eWxlVHJlZUl0
ZW0odHJlZUl0ZW0sIHRlc3RDb250cm9sbGVyLnJlc3VsdHMsICIiKTsKKyAgICAgICAgdHJlZUl0
ZW0udG9nZ2xlRW5hYmxlZCh7IHRhcmdldDogeyBjaGVja2VkOiB0cnVlIH0gfSk7CisgICAgICAg
IEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7CisgICAgfQog
Ci0gICAgdHJlZUl0ZW0udG9nZ2xlRW5hYmxlZCh7IHRhcmdldDogeyBjaGVja2VkOiB0cnVlIH0g
fSk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmcm9udGVu
ZF9kdW1wUmVzdWx0cy5iaW5kKHRoaXMsIHRlc3RDb250cm9sbGVyKSk7Ci19CisgICAgZnVuY3Rp
b24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVy
IGVuYWJsZSIpOworICAgICAgICB2YXIgdHJlZUl0ZW0gPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1l
bnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFN0eWxlVHJlZUl0ZW0odHJlZUl0ZW0sICIiKTsKIAotZnVuY3Rpb24gZnJvbnRl
bmRfZHVtcFJlc3VsdHModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdmFyIHRyZWVJdGVtID0gZnJv
bnRlbmRfZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiZm9udC13ZWlnaHQiKTsKLSAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkFmdGVyIGVuYWJsZSIpOwotICAgIGZyb250
ZW5kX2R1bXBTdHlsZVRyZWVJdGVtKHRyZWVJdGVtLCB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLCAi
Iik7Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRz
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgZGlzYWJsaW5nIHN0eWxlIHByb3BlcnR5IHdv
cmtzLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJh
bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUtZXhw
ZWN0ZWQudHh0CmluZGV4IGE4YTlmOTdjOWViMDNkMmQ0ZGRiNDkyMGZlOWQ0YTZiNjI2ZTU1YTku
LmI3OWJlNzgzNTZkYWVhZTcxMWNjZDZjM2RhZWYyYjJhZTRiMmEwNjAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEs
MjggQEAKIFRlc3RzIHRoYXQgcHJvcGVyIChhbmQgZGlmZmVyZW50KSBzdHlsZXMgYXJlIHJldHVy
bmVkIGZvciBib2R5IGVsZW1lbnRzIG9mIG1haW4gZG9jdW1lbnQgYW5kIGlmcmFtZS4KIAogCi1T
dHlsZTogMAoteyJtYXJnaW4iOiI4cHgifQoteyJiYWNrZ3JvdW5kIjoiYmx1ZSJ9Ci1TdHlsZTog
MQoteyJtYXJnaW4iOiI4cHgifQoteyJiYWNrZ3JvdW5kIjoiZ3JlZW4ifQorTWFpbiBmcmFtZSBz
dHlsZToKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCisKKz09PT09PT09IE1hdGNoZWQg
Q1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIGJvZHkgeyAoc3R5bGVzLWlmcmFtZS5odG1s
OjUpCitiYWNrZ3JvdW5kOiBibHVlOworCitbZXhwYW5kZWRdIGJvZHkgeyAodXNlciBhZ2VudCBz
dHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CittYXJnaW46IDhweDsKKworCitpZnJhbWUgc3R5
bGU6CitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENT
UyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSBib2R5IHsgKHN0eWxlcy1pZnJhbWUtZGF0YS5o
dG1sOjQpCitiYWNrZ3JvdW5kOiBncmVlbjsKKworW2V4cGFuZGVkXSBib2R5IHsgKHVzZXIgYWdl
bnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworbWFyZ2luOiA4cHg7CisKKwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbAppbmRleCAwMmYxN2U0M2FjMDljMTdi
NzFlOTU4OGE4YzA0NjJjODRkZjdkOGQwLi4xOWI4MmE1ODE2N2EwNjlkMzkwNTI1NWFmOTE3OGY2
ZTE0NzYzMjliIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFt
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLmh0bWwKQEAg
LTUsNzUgKzUsMzIgQEAKICAgYm9keSB7IGJhY2tncm91bmQ6Ymx1ZTsgfQogPC9zdHlsZT4KIAot
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVz
dCgpCiB7Ci0gICAgcnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZChmdW5jdGlvbigpIHsKLSAgICAgICAg
ZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIG91dHB1
dCgiU3R5bGU6ICIgKyBpKTsKLSAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlZFJ1bGVzID0gcmVz
dWx0W2ldLm1hdGNoZWRDU1NSdWxlczsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
bWF0Y2hlZFJ1bGVzICYmIGogPCBtYXRjaGVkUnVsZXMubGVuZ3RoOyArK2opIHsKLSAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0KEpTT04uc3RyaW5naWZ5KG1hdGNoZWRSdWxlc1tqXS5zdHlsZS5z
aG9ydGhhbmRWYWx1ZXMpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZXZhbHVhdGVJbldlYklu
c3BlY3RvcigiZnJvbnRlbmRfZHVtcFN0eWxlcyIsIGNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQor
ICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgibWFpbkJvZHkiLCBzdGVwMSk7CiAK
LS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFN0eWxlcyh0
ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwg
ZnJvbnRlbmRfZHVtcFN0eWxlc0NvbnRpbnVhdGlvbik7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5k
X2R1bXBTdHlsZXNDb250aW51YXRpb24odGVzdENvbnRyb2xsZXIpCi17Ci0gICAgLy8gMS4gR2V0
IHN0eWxlcyBmb3IgYm9keSwgc3RvcmUgdGhlbSBpbiBtYWluU3R5bGVzIHZhci4KLSAgICB2YXIg
Ym9keSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudC5ib2R5OwotICAgIHZhciBtYWlu
U3R5bGVzID0gbnVsbDsKLSAgICBmdW5jdGlvbiBtYWluRnJhbWVDYWxsYmFjayhzdHlsZXMpCisg
ICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgbWFpblN0eWxlcyA9IHN0eWxlczsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1haW4gZnJhbWUgc3R5bGU6Iik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiaWZyYW1l
Qm9keSIsIHN0ZXAyKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlc0Zv
ck5vZGUoYm9keS5pZCwgbWFpbkZyYW1lQ2FsbGJhY2spOwotCi0gICAgLy8gMi4gRmluZCBpZnJh
bWUgbm9kZQotICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lk
VG9ET01Ob2RlOwotICAgIHZhciBpZnJhbWVCb2R5ID0gbnVsbDsKLQotICAgIGZvciAodmFyIG5v
ZGVJZCBpbiBpbm5lck1hcHBpbmcpIHsKLSAgICAgICAgaWYgKGlubmVyTWFwcGluZ1tub2RlSWRd
Lm5vZGVOYW1lID09PSAiSUZSQU1FIikKLSAgICAgICAgICAgIGlmcmFtZUJvZHkgPSBpbm5lck1h
cHBpbmdbbm9kZUlkXS5maXJzdENoaWxkLmxhc3RDaGlsZDsKLSAgICB9Ci0gICAgaWYgKCFpZnJh
bWVCb2R5KSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoWyJObyBpZnJhbWUg
bm9kZSBmb3VuZCJdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIDMuIEdldCBz
dHlsZXMgZm9yIGlmcmFtZSdzIGJvZHksIHJldHVybiB0aGVtIHRvZ2V0aGVyIHdpdGggbWFpbiBz
dHlsZXMuCi0gICAgZnVuY3Rpb24gaWZyYW1lQ2FsbGJhY2soc3R5bGVzKQorICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoW21haW5T
dHlsZXMsIHN0eWxlc10pOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiaWZyYW1l
IHN0eWxlOiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHls
ZXModHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOwogICAgIH0KLQotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShpZnJh
bWVCb2R5LmlkLCBpZnJhbWVDYWxsYmFjayk7CiB9Ci0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08
Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuQWZ0ZXJJZnJhbWVJc0xv
YWRlZCgpIiBpZD0ibWFpbkJvZHkiPgogPHA+CiBUZXN0cyB0aGF0IHByb3BlciAoYW5kIGRpZmZl
cmVudCkgc3R5bGVzIGFyZSByZXR1cm5lZCBmb3IgYm9keSBlbGVtZW50cyBvZiBtYWluIGRvY3Vt
ZW50IGFuZCBpZnJhbWUuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQ
SS5odG1sCmluZGV4IDY3M2MyODAyMGE5YjY4Mjc4N2U1ZWM3NTc4OWI1YjIyODM2YmYzZTQuLjg4
NWQxMTU1M2VjYzVjYmRlMjUwYTE1ZGE3YmFhZTEwODhjMzQ5NmEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMtbmV3LUFQSS5odG1sCkBAIC0zLDI2NCArMywyNjMgQEAKIAogPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzIj4KIAot
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVz
dCgpCiB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAgZHVt
cEFycmF5KHJlc3VsdCk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVh
dGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfcnVuVGVzdCIsIGNhbGxiYWNrKTsKLX0KLQotCi0v
LyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX3J1blRlc3QodGVzdENv
bnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGZy
b250ZW5kX2V4cGFuZERPTVN1YnRyZWUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50KTsK
LSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkg
ewotCi0gICAgICAgIGZ1bmN0aW9uIHRhYmxlU3R5bGVzQ2FsbGJhY2sodGVzdENvbnRyb2xsZXIs
IHN0eWxlcykKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5w
dXNoKCIiKTsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEF0
dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PSIpOwotICAgICAgICAgICAgZm9yICh2YXIgYXR0
ciBpbiBzdHlsZXMuc3R5bGVBdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKCJBdHRyaWJ1dGU6ICIgKyBhdHRyKTsKLSAgICAgICAgICAgICAg
ICBmcm9udGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHN0eWxlcy5zdHlsZUF0
dHJpYnV0ZXNbYXR0cl0pOwotICAgICAgICAgICAgfQorICAgIHRlc3Rfc3R5bGVzKCk7CiAKLSAg
ICAgICAgICAgIGZyb250ZW5kX3Rlc3RTdHlsZVNoZWV0cyh0ZXN0Q29udHJvbGxlcik7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzdHlsZXNDYWxsYmFjayh0ZXN0Q29udHJvbGxlciwg
c3R5bGVzKQorICAgIGZ1bmN0aW9uIHRlc3Rfc3R5bGVzKG5vZGUpCisgICAgeworICAgICAgICBm
dW5jdGlvbiBjYWxsYmFjayhzdHlsZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIj09PSBDb21wdXRlZCBzdHlsZSBwcm9wZXJ0eSBjb3VudCBmb3IgYm9keSA9PT0i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ29tcHV0ZWQgc3R5bGUgcHJvcGVydHkgY291
bnQgZm9yIGJvZHkgPT09Iik7CiAgICAgICAgICAgICB2YXIgcHJvcENvdW50ID0gc3R5bGVzLmNv
bXB1dGVkU3R5bGUuY3NzUHJvcGVydGllcy5sZW5ndGg7Ci0gICAgICAgICAgICB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLnB1c2gocHJvcENvdW50ID4gMjAwID8gIk9LIiA6ICJGQUlMICgiICsgcHJv
cENvdW50ICsgIikiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByb3BD
b3VudCA+IDIwMCA/ICJPSyIgOiAiRkFJTCAoIiArIHByb3BDb3VudCArICIpIik7CiAKLSAgICAg
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgICAgICB0ZXN0
Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBNYXRjaGVkIHJ1bGVzIGZvciBib2R5ID09PSIp
OwotICAgICAgICAgICAgZnJvbnRlbmRfZHVtcFJ1bGVzQXJyYXkodGVzdENvbnRyb2xsZXIsIHN0
eWxlcy5tYXRjaGVkQ1NTUnVsZXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBNYXRjaGVk
IHJ1bGVzIGZvciBib2R5ID09PSIpOworICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVz
Lm1hdGNoZWRDU1NSdWxlcyk7CiAKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMu
cHVzaCgiIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBQ
c2V1ZG8gcnVsZXMgZm9yIGJvZHkgPT09Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IFBz
ZXVkbyBydWxlcyBmb3IgYm9keSA9PT0iKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3R5bGVzLnBzZXVkb0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJQc2V1ZG9JZD0iICsgc3R5bGVzLnBzZXVkb0Vs
ZW1lbnRzW2ldLnBzZXVkb0lkKTsKLSAgICAgICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVsZXNB
cnJheSh0ZXN0Q29udHJvbGxlciwgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnJ1bGVzKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUHNldWRvSWQ9IiArIHN0eWxl
cy5wc2V1ZG9FbGVtZW50c1tpXS5wc2V1ZG9JZCk7CisgICAgICAgICAgICAgICAgZHVtcFJ1bGVz
QXJyYXkoc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnJ1bGVzKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICAgICAgICAg
IHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEluaGVyaXRlZCBzdHlsZXMgZm9yIGJv
ZHkgPT09Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEluaGVyaXRlZCBzdHlsZXMgZm9y
IGJvZHkgPT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5pbmhl
cml0ZWQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIkxldmVsPSIgKyAoaSArIDEpKTsKLSAgICAgICAgICAgICAgICBmcm9udGVuZF9k
dW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHN0eWxlcy5pbmhlcml0ZWRbaV0uaW5saW5l
U3R5bGUpOwotICAgICAgICAgICAgICAgIGZyb250ZW5kX2R1bXBSdWxlc0FycmF5KHRlc3RDb250
cm9sbGVyLCBzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkxldmVsPSIgKyAoaSArIDEpKTsKKyAgICAg
ICAgICAgICAgICBkdW1wUnVsZU9yU3R5bGUoc3R5bGVzLmluaGVyaXRlZFtpXS5pbmxpbmVTdHls
ZSk7CisgICAgICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVzLmluaGVyaXRlZFtpXS5t
YXRjaGVkQ1NTUnVsZXMpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLnB1c2goIiIpOwotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCI9PT0gSW5saW5lIHN0eWxlIGZvciBib2R5ID09PSIpOwotICAgICAgICAgICAgZnJv
bnRlbmRfZHVtcFJ1bGVPclN0eWxlKHRlc3RDb250cm9sbGVyLCBzdHlsZXMuaW5saW5lU3R5bGUp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBJbmxpbmUgc3R5bGUgZm9yIGJvZHkgPT09Iik7
CisgICAgICAgICAgICBkdW1wUnVsZU9yU3R5bGUoc3R5bGVzLmlubGluZVN0eWxlKTsKKyAgICAg
ICAgICAgIHRlc3RfdGFibGVTdHlsZXMoKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLmdldFN0eWxlc0Zvck5vZGUoZnJvbnRlbmRfbm9kZUZvcklkKCJ0aGV0YWJs
ZSIpLmlkLCB0YWJsZVN0eWxlc0NhbGxiYWNrLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsK
KyAgICAgICAgZnVuY3Rpb24gbm9kZUNhbGxiYWNrKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShub2RlLmlkLCBjYWxsYmFjayk7
CiAgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJtYWlu
Qm9keSIsIG5vZGVDYWxsYmFjayk7CisgICAgfQogCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQu
Z2V0U3R5bGVzRm9yTm9kZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwg
c3R5bGVzQ2FsbGJhY2suYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQor
ICAgIGZ1bmN0aW9uIHRlc3RfdGFibGVTdHlsZXMoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soc3R5bGVzKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEF0
dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PSIpOworICAgICAgICAgICAgZm9yICh2YXIgYXR0
ciBpbiBzdHlsZXMuc3R5bGVBdHRyaWJ1dGVzKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkF0dHJpYnV0ZTogIiArIGF0dHIpOworICAgICAgICAgICAgICAgIGR1
bXBSdWxlT3JTdHlsZShzdHlsZXMuc3R5bGVBdHRyaWJ1dGVzW2F0dHJdKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHRlc3Rfc3R5bGVTaGVldHMoKTsKKyAgICAgICAgfQogCi1mdW5jdGlv
biBmcm9udGVuZF90ZXN0U3R5bGVTaGVldHModGVzdENvbnRyb2xsZXIpCi17Ci12YXIgbmV3U3R5
bGVTaGVldFRleHQgPQotImJvZHkubWFpbnBhZ2Uge1wKLSAgICB0ZXh0LWRlY29yYXRpb246IHN0
cmlrZXRocm91Z2g7XAotICAgIGJhZHByb3BlcnR5OiAyYmFkdmFsdWUyO1wKLX1cCi1cCi1ib2R5
IHtcCi0gICAgdGV4dC1hbGlnbjoganVzdGlmeTtcCi19XAotIjsKLQotICAgIGZ1bmN0aW9uIHBh
dGNoU3R5bGVTaGVldCh0ZXN0Q29udHJvbGxlciwgc3R5bGVTaGVldCkKKyAgICAgICAgZnVuY3Rp
b24gbm9kZUNhbGxiYWNrKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShub2RlLmlkLCBjYWxsYmFjayk7CisgICAgICAgIH0KKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKCJ0aGV0YWJsZSIsIG5vZGVDYWxsYmFjayk7
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3Rfc3R5bGVTaGVldHMoKQogICAgIHsKLSAg
ICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICAgICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKCI9PT0gTGFzdCBzdHlsZXNoZWV0IHBhdGNoZWQgPT09Iik7Ci0g
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldC5zdHls
ZVNoZWV0SWQsIG5ld1N0eWxlU2hlZXRUZXh0LAotICAgICAgICAgICAgZnJvbnRlbmRfbG9hZEFu
ZER1bXBTdHlsZVNoZWV0LmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQuc3R5
bGVTaGVldElkLCBmcm9udGVuZF9jaGFuZ2VTZWxlY3Rvci5iaW5kKG51bGwsIHRlc3RDb250cm9s
bGVyKSkpOworICAgICAgICB2YXIgbmV3U3R5bGVTaGVldFRleHQgPQorICAgICAgICAgICAgImJv
ZHkubWFpbnBhZ2UgeyIgKworICAgICAgICAgICAgIiAgICB0ZXh0LWRlY29yYXRpb246IHN0cmlr
ZXRocm91Z2g7IiArCisgICAgICAgICAgICAiICAgIGJhZHByb3BlcnR5OiAyYmFkdmFsdWUyOyIg
KworICAgICAgICAgICAgIn0iICsKKyAgICAgICAgICAgICJib2R5IHsiICsKKyAgICAgICAgICAg
ICIgICAgdGV4dC1hbGlnbjoganVzdGlmeTsiICsKKyAgICAgICAgICAgICJ9IjsKKworICAgICAg
ICBmdW5jdGlvbiBwYXRjaFN0eWxlU2hlZXQoc3R5bGVTaGVldCkKKyAgICAgICAgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIj09PSBMYXN0IHN0eWxlc2hlZXQgcGF0Y2hlZCA9PT0iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldC5zdHls
ZVNoZWV0SWQsIG5ld1N0eWxlU2hlZXRUZXh0LAorICAgICAgICAgICAgICAgIGxvYWRBbmREdW1w
U3R5bGVTaGVldC5iaW5kKG51bGwsIHN0eWxlU2hlZXQuc3R5bGVTaGVldElkLCB0ZXN0X2NoYW5n
ZVNlbGVjdG9yKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0SWRz
TG9hZGVkKGlkcykKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBbGwgc3R5
bGVzaGVldHMgPT09Iik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgICAgICBsb2FkQW5kRHVtcFN0eWxlU2hlZXQoaWRzW2ldLCAo
aSA8IGlkcy5sZW5ndGggLSAxKSA/IG51bGwgOiBwYXRjaFN0eWxlU2hlZXQpOworICAgICAgICB9
CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0QWxsU3R5bGVzKHN0eWxlU2hlZXRJZHNMb2Fk
ZWQpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRJZHNMb2FkZWQodGVzdENvbnRy
b2xsZXIsIGlkcykKKyAgICBmdW5jdGlvbiB0ZXN0X2NoYW5nZVNlbGVjdG9yKHN0eWxlU2hlZXQp
CiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIiIpOwotICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBBbGwgc3R5bGVzaGVldHMgPT09Iik7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0KHRlc3RDb250cm9sbGVyLCBpZHNbaV0s
IChpIDwgaWRzLmxlbmd0aCAtIDEpID8gbnVsbCA6IHBhdGNoU3R5bGVTaGVldC5iaW5kKG51bGws
IHRlc3RDb250cm9sbGVyKSk7CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFNlbGVjdG9yKHJ1bGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgc2VsZWN0b3Igc2V0
ID09PSIpOworICAgICAgICAgICAgbG9hZEFuZER1bXBTdHlsZVNoZWV0KHJ1bGUucnVsZUlkLnN0
eWxlU2hlZXRJZCwgdGVzdF9zZXRTdHlsZVRleHQpOworICAgICAgICB9CisKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRSdWxlU2VsZWN0b3Ioc3R5bGVTaGVldC5ydWxlc1swXS5ydWxlSWQs
ICJodG1sICosIGJvZHlbZm9vPVwiYmFyXCJdIiwgZGlkU2V0U2VsZWN0b3IpOwogICAgIH0KLSAg
ICBJbnNwZWN0b3JCYWNrZW5kLmdldEFsbFN0eWxlcyhzdHlsZVNoZWV0SWRzTG9hZGVkLmJpbmQo
bnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKLX0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY2hhbmdlU2Vs
ZWN0b3IodGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQpCi17Ci0gICAgZnVuY3Rpb24gZGlkU2V0
U2VsZWN0b3IodGVzdENvbnRyb2xsZXIsIHJ1bGUpCisgICAgZnVuY3Rpb24gdGVzdF9zZXRTdHls
ZVRleHQoc3R5bGVTaGVldCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMu
cHVzaCgiIik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVy
IHNlbGVjdG9yIHNldCA9PT0iKTsKLSAgICAgICAgZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNo
ZWV0KHRlc3RDb250cm9sbGVyLCBydWxlLnJ1bGVJZC5zdHlsZVNoZWV0SWQsIGZyb250ZW5kX3Nl
dFN0eWxlVGV4dC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfQorICAgICAgICBm
dW5jdGlvbiBkaWRTZXRTdHlsZVRleHQoc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCI9PT0gQWZ0ZXIgc3R5bGUgdGV4dCBzZXQgPT09Iik7CisgICAgICAgICAgICBsb2Fk
QW5kRHVtcFN0eWxlU2hlZXQoc3R5bGUuc3R5bGVJZC5zdHlsZVNoZWV0SWQsIHRlc3RfYWRkUnVs
ZSk7CisgICAgICAgIH0KIAotICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UnVsZVNlbGVjdG9yKHN0
eWxlU2hlZXQucnVsZXNbMF0ucnVsZUlkLCAiaHRtbCAqLCBib2R5W2Zvbz1cImJhclwiXSIsIGRp
ZFNldFNlbGVjdG9yLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKLX0KKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVRleHQoc3R5bGVTaGVldC5ydWxlc1swXS5zdHlsZS5z
dHlsZUlkLCAwLCAiIiwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVy
dHlUZXh0KHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgIiIsIHRydWUpOwog
Ci1mdW5jdGlvbiBmcm9udGVuZF9zZXRTdHlsZVRleHQodGVzdENvbnRyb2xsZXIsIHN0eWxlU2hl
ZXQpCi17Ci0gICAgZnVuY3Rpb24gZGlkU2V0U3R5bGVUZXh0KHRlc3RDb250cm9sbGVyLCBzdHls
ZSkKLSAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAg
ICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHN0eWxlIHRleHQgc2V0
ID09PSIpOwotICAgICAgICBmcm9udGVuZF9sb2FkQW5kRHVtcFN0eWxlU2hlZXQodGVzdENvbnRy
b2xsZXIsIHN0eWxlLnN0eWxlSWQuc3R5bGVTaGVldElkLCBmcm9udGVuZF9hZGRSdWxlLmJpbmQo
bnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKKyAgICAgICAgLy8gVGhpcyBvcGVyYXRpb24gc2hvdWxk
IG5vdCB1cGRhdGUgdGhlIHN0eWxlIGFzIHRoZSBuZXcgcHJvcGVydHkgdGV4dCBpcyBub3QgcGFy
c2FibGUuCisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hl
ZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgInp6ejsiLCBmYWxzZSk7CisgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUu
c3R5bGVJZCwgMCwgImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZDogYmxhY2s7IiwgZmFsc2UsIGRp
ZFNldFN0eWxlVGV4dCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0
eVRleHQoc3R5bGVTaGVldC5ydWxlc1swXS5zdHlsZS5zdHlsZUlkLCAwLCAiIiwgdHJ1ZSk7Ci0g
ICAgSW5zcGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVRleHQoc3R5bGVTaGVldC5ydWxlc1swXS5z
dHlsZS5zdHlsZUlkLCAwLCAiIiwgdHJ1ZSk7CisgICAgZnVuY3Rpb24gdGVzdF9hZGRSdWxlKCkK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRpZEdldFN0eWxlcyhzdHlsZXMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gTWF0Y2hlZCBydWxlcyBhZnRlciBydWxlIGFkZGVk
ID09PSIpOworICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVzLm1hdGNoZWRDU1NSdWxl
cyk7CisgICAgICAgICAgICB0ZXN0X2Rpc2FibGVQcm9wZXJ0eSgpOworICAgICAgICB9CiAKLSAg
ICAvLyBUaGlzIG9wZXJhdGlvbiBzaG91bGQgbm90IHVwZGF0ZSB0aGUgc3R5bGUgYXMgdGhlIG5l
dyBwcm9wZXJ0eSB0ZXh0IGlzIG5vdCBwYXJzYWJsZS4KLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNl
dFByb3BlcnR5VGV4dChzdHlsZVNoZWV0LnJ1bGVzWzBdLnN0eWxlLnN0eWxlSWQsIDAsICJ6eno7
IiwgZmFsc2UpOwotICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hl
ZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZDog
YmxhY2s7IiwgZmFsc2UsIGRpZFNldFN0eWxlVGV4dC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVy
KSk7Ci19CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFN0eWxlVGV4dChzdHlsZSkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZXNGb3JOb2RlKFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5kb2N1bWVudC5ib2R5LmlkLCBkaWRHZXRTdHlsZXMpOworICAgICAgICB9
CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2FkZFJ1bGUodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgZnVu
Y3Rpb24gZGlkR2V0U3R5bGVzKHRlc3RDb250cm9sbGVyLCBzdHlsZXMpCi0gICAgewotICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIiIpOwotICAgICAgICB0ZXN0Q29udHJvbGxl
ci5yZXN1bHRzLnB1c2goIj09PSBNYXRjaGVkIHJ1bGVzIGFmdGVyIHJ1bGUgYWRkZWQgPT09Iik7
Ci0gICAgICAgIGZyb250ZW5kX2R1bXBSdWxlc0FycmF5KHRlc3RDb250cm9sbGVyLCBzdHlsZXMu
bWF0Y2hlZENTU1J1bGVzKTsKLSAgICAgICAgZnJvbnRlbmRfZGlzYWJsZVByb3BlcnR5KHRlc3RD
b250cm9sbGVyKTsKLSAgICB9CisgICAgICAgIGZ1bmN0aW9uIHJ1bGVBZGRlZChydWxlKQorICAg
ICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChydWxl
LnN0eWxlLnN0eWxlSWQsIDAsICJmb250LWZhbWlseTogc2VyaWY7IiwgZmFsc2UsIGRpZFNldFN0
eWxlVGV4dCk7CisgICAgICAgIH0KIAotICAgIGZ1bmN0aW9uIGRpZFNldFN0eWxlVGV4dCh0ZXN0
Q29udHJvbGxlciwgc3R5bGUpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0
eWxlc0Zvck5vZGUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50LmJvZHkuaWQsIGRpZEdl
dFN0eWxlcy5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7CisgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuYWRkUnVsZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwgImJv
ZHkiLCBydWxlQWRkZWQpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHJ1bGVBZGRlZCh0ZXN0Q29u
dHJvbGxlciwgcnVsZSkKKyAgICBmdW5jdGlvbiB0ZXN0X2Rpc2FibGVQcm9wZXJ0eSgpCiAgICAg
ewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChydWxlLnN0eWxlLnN0
eWxlSWQsIDAsICJmb250LWZhbWlseTogc2VyaWY7IiwgZmFsc2UsIGRpZFNldFN0eWxlVGV4dC5i
aW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfQorICAgICAgICBmdW5jdGlvbiBkaWRE
aXNhYmxlUHJvcGVydHkoc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9
PT0gQWZ0ZXIgdHdvIHByb3BlcnRpZXMgZGlzYWJsZWQsIG9uZSBwcm9wZXJ0eSBhZGRlZCwgb25l
IHByb3BlcnR5IHJlbW92ZWQgPT09Iik7CisgICAgICAgICAgICBkdW1wUnVsZU9yU3R5bGUoc3R5
bGUpOworICAgICAgICAgICAgdGVzdF9lbmFibGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkKTsKKyAg
ICAgICAgfQogCi0gICAgSW5zcGVjdG9yQmFja2VuZC5hZGRSdWxlKFdlYkluc3BlY3Rvci5kb21B
Z2VudC5kb2N1bWVudC5ib2R5LmlkLCAiYm9keSIsIHJ1bGVBZGRlZC5iaW5kKG51bGwsIHRlc3RD
b250cm9sbGVyKSk7Ci19CisgICAgICAgIGZ1bmN0aW9uIHN0eWxlc0NhbGxiYWNrKHN0eWxlcykK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gaGVpZ2h0IDogMTAwJSA7CisgICAgICAgICAgICAv
LyBib3JkZXI6IDFweCBzb2xpZDsKKyAgICAgICAgICAgIC8vIGJvcmRlci13aWR0aDogMnB4Owor
ICAgICAgICAgICAgLy8gYmFja2dyb3VuZC1jb2xvciA6ICMzM0ZGMzM7CisgICAgICAgICAgICAv
LyBnb29nbGVzOiBhYnJhOworICAgICAgICAgICAgLy8gZm9vOiAuYmFyOworICAgICAgICAgICAg
Ly8gLW1vei1nb29nOiAxKioqOworICAgICAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAwcHg7CisK
KyAgICAgICAgICAgIHZhciBzdHlsZSA9IHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXNbMV0uc3R5bGU7
CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZVByb3BlcnR5KHN0eWxlLnN0eWxl
SWQsIDAsIHRydWUpOyAvLyBoZWlnaHQ6IDEwMCUKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tl
bmQudG9nZ2xlUHJvcGVydHkoc3R5bGUuc3R5bGVJZCwgNywgdHJ1ZSk7IC8vIGJvcmRlci13aWR0
aDogMHB4CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChzdHls
ZS5zdHlsZUlkLCA3LCAiZm9udC1zaXplOiAxMnB4OyIsIGZhbHNlKTsKKyAgICAgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlLnN0eWxlSWQsIDksICJmb250LXNp
emU6IDE0cHg7IiwgZmFsc2UpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50b2dnbGVQ
cm9wZXJ0eShzdHlsZS5zdHlsZUlkLCA5LCB0cnVlKTsgLy8gZm9udC1zaXplOiAxNHB4CisgICAg
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChzdHlsZS5zdHlsZUlkLCA4
LCAiYm9yZGVyLXdpZHRoOiAxcHg7IiwgdHJ1ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnRvZ2dsZVByb3BlcnR5KHN0eWxlLnN0eWxlSWQsIDgsIGZhbHNlKTsgLy8gYm9yZGVyLXdp
ZHRoOiAxcHgKKyAgICAgICAgICAgIC8vIGhlaWdodCA6IDEwMCUgOyBbZF0KKyAgICAgICAgICAg
IC8vIGJvcmRlcjogMXB4IHNvbGlkOworICAgICAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAycHg7
CisgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIDogIzMzRkYzMzsKKyAgICAgICAgICAg
IC8vIGdvb2dsZXM6IGFicmE7CisgICAgICAgICAgICAvLyBmb286IC5iYXI7CisgICAgICAgICAg
ICAvLyAtbW96LWdvb2c6IDEqKio7CisgICAgICAgICAgICAvLyBmb250LXNpemU6IDEycHg7Cisg
ICAgICAgICAgICAvLyBib3JkZXItd2lkdGg6IDFweDsKKyAgICAgICAgICAgIC8vIGZvbnQtc2l6
ZTogMTRweDsgW2RdCisKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlU
ZXh0KHN0eWxlLnN0eWxlSWQsIDMsICIiLCB0cnVlLCBkaWREaXNhYmxlUHJvcGVydHkpOworICAg
ICAgICB9CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2Rpc2FibGVQcm9wZXJ0eSh0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICBmdW5jdGlvbiBkaWREaXNhYmxlUHJvcGVydHkodGVzdENvbnRyb2xsZXIsIHN0
eWxlKQotICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAg
ICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCI9PT0gQWZ0ZXIgdHdvIHByb3BlcnRp
ZXMgZGlzYWJsZWQsIG9uZSBwcm9wZXJ0eSBhZGRlZCwgb25lIHByb3BlcnR5IHJlbW92ZWQgPT09
Iik7Ci0gICAgICAgIGZyb250ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJvbGxlciwgc3R5
bGUpOwotICAgICAgICBmcm9udGVuZF9lbmFibGVQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgc3R5
bGUuc3R5bGVJZCk7CisgICAgICAgIGZ1bmN0aW9uIG5vZGVDYWxsYmFjayhub2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlc0Zvck5vZGUobm9kZS5p
ZCwgc3R5bGVzQ2FsbGJhY2spOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3Qubm9k
ZVdpdGhJZCgidG9nZ2xlIiwgbm9kZUNhbGxiYWNrKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
dHlsZXNDYWxsYmFjayh0ZXN0Q29udHJvbGxlciwgc3R5bGVzKQorICAgIGZ1bmN0aW9uIHRlc3Rf
ZW5hYmxlUHJvcGVydHkoc3R5bGVJZCkKICAgICB7Ci0gICAgICAgIC8vIGhlaWdodCA6IDEwMCUg
OwotICAgICAgICAvLyBib3JkZXI6IDFweCBzb2xpZDsKLSAgICAgICAgLy8gYm9yZGVyLXdpZHRo
OiAycHg7Ci0gICAgICAgIC8vIGJhY2tncm91bmQtY29sb3IgOiAjMzNGRjMzOwotICAgICAgICAv
LyBnb29nbGVzOiBhYnJhOwotICAgICAgICAvLyBmb286IC5iYXI7Ci0gICAgICAgIC8vIC1tb3ot
Z29vZzogMSoqKjsKLSAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAwcHg7Ci0KLSAgICAgICAgdmFy
IHN0eWxlID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlc1sxXS5zdHlsZTsKLSAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkLCAwLCB0cnVlKTsgLy8gaGVp
Z2h0OiAxMDAlCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlUHJvcGVydHkoc3R5bGUu
c3R5bGVJZCwgNywgdHJ1ZSk7IC8vIGJvcmRlci13aWR0aDogMHB4Ci0gICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlLnN0eWxlSWQsIDcsICJmb250LXNpemU6IDEy
cHg7IiwgZmFsc2UpOwotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChz
dHlsZS5zdHlsZUlkLCA5LCAiZm9udC1zaXplOiAxNHB4OyIsIGZhbHNlKTsKLSAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkLCA5LCB0cnVlKTsgLy8g
Zm9udC1zaXplOiAxNHB4Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0
KHN0eWxlLnN0eWxlSWQsIDgsICJib3JkZXItd2lkdGg6IDFweDsiLCB0cnVlKTsKLSAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkLCA4LCBmYWxzZSk7
IC8vIGJvcmRlci13aWR0aDogMXB4Ci0gICAgICAgIC8vIGhlaWdodCA6IDEwMCUgOyBbZF0KLSAg
ICAgICAgLy8gYm9yZGVyOiAxcHggc29saWQ7Ci0gICAgICAgIC8vIGJvcmRlci13aWR0aDogMnB4
OwotICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIDogIzMzRkYzMzsKLSAgICAgICAgLy8gZ29v
Z2xlczogYWJyYTsKLSAgICAgICAgLy8gZm9vOiAuYmFyOwotICAgICAgICAvLyAtbW96LWdvb2c6
IDEqKio7Ci0gICAgICAgIC8vIGZvbnQtc2l6ZTogMTJweDsKLSAgICAgICAgLy8gYm9yZGVyLXdp
ZHRoOiAxcHg7Ci0gICAgICAgIC8vIGZvbnQtc2l6ZTogMTRweDsgW2RdCi0KLSAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVRleHQoc3R5bGUuc3R5bGVJZCwgMywgIiIsIHRydWUs
IGRpZERpc2FibGVQcm9wZXJ0eS5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7CisgICAgICAg
IGZ1bmN0aW9uIGRpZEVuYWJsZVByb3BlcnR5KHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQgPT09Iik7CisgICAgICAgICAg
ICBkdW1wUnVsZU9yU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xl
UHJvcGVydHkoc3R5bGVJZCwgNiwgZmFsc2UpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRv
Z2dsZVByb3BlcnR5KHN0eWxlSWQsIDgsIGZhbHNlLCBkaWRFbmFibGVQcm9wZXJ0eSk7CiAgICAg
fQogCi0gICAgdmFyIHRvZ2dsZUVsZW1lbnQgPSBmcm9udGVuZF9ub2RlRm9ySWQoInRvZ2dsZSIp
OwotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZSh0b2dnbGVFbGVtZW50Lmlk
LCBzdHlsZXNDYWxsYmFjay5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci19CisgICAgLy8g
RGF0YSBkdW1waW5nCiAKLWZ1bmN0aW9uIGZyb250ZW5kX2VuYWJsZVByb3BlcnR5KHRlc3RDb250
cm9sbGVyLCBzdHlsZUlkKQotewotICAgIGZ1bmN0aW9uIGRpZEVuYWJsZVByb3BlcnR5KHRlc3RD
b250cm9sbGVyLCBzdHlsZSkKKyAgICBmdW5jdGlvbiBkdW1wUnVsZXNBcnJheShydWxlcykKICAg
ICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQgPT09
Iik7Ci0gICAgICAgIGZyb250ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJvbGxlciwgc3R5
bGUpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RDb250cm9sbGVyLnJl
c3VsdHMpOworICAgICAgICBpZiAoIXJ1bGVzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgZHVt
cFJ1bGVPclN0eWxlKHJ1bGVzW2ldKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnRv
Z2dsZVByb3BlcnR5KHN0eWxlSWQsIDYsIGZhbHNlKTsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnRv
Z2dsZVByb3BlcnR5KHN0eWxlSWQsIDgsIGZhbHNlLCBkaWRFbmFibGVQcm9wZXJ0eS5iaW5kKG51
bGwsIHRlc3RDb250cm9sbGVyKSk7Ci19Ci0KLS8vIERhdGEgZHVtcGluZwotCi1mdW5jdGlvbiBm
cm9udGVuZF9kdW1wUnVsZXNBcnJheSh0ZXN0Q29udHJvbGxlciwgcnVsZXMpCi17Ci0gICAgaWYg
KCFydWxlcykKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMu
bGVuZ3RoOyArK2kpCi0gICAgICAgIGZyb250ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJv
bGxlciwgcnVsZXNbaV0pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wUnVsZU9yU3R5bGUo
dGVzdENvbnRyb2xsZXIsIHJ1bGVPclN0eWxlKQotewotICAgIGlmICghcnVsZU9yU3R5bGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICB2YXIgaXNSdWxlID0gISEocnVsZU9yU3R5bGUuc3R5bGUpOwot
ICAgIHZhciBzdHlsZSA9IGlzUnVsZSA/IHJ1bGVPclN0eWxlLnN0eWxlIDogcnVsZU9yU3R5bGU7
Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICB0ZXN0Q29udHJvbGxl
ci5yZXN1bHRzLnB1c2goaXNSdWxlID8gInJ1bGUiIDogInN0eWxlIik7Ci0gICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKChpc1J1bGUgPyAocnVsZU9yU3R5bGUuc2VsZWN0b3JUZXh0ICsg
IjogWyIgKyBydWxlT3JTdHlsZS5vcmlnaW4gKyAiXSIpIDogInJhdyBzdHlsZSIpKTsKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgdmFyIHByb3BlcnR5ID0gc3R5bGUuY3NzUHJvcGVydGllc1tpXTsKLSAgICAgICAgaWYg
KHByb3BlcnR5LnN0YXR1cyAhPT0gImRpc2FibGVkIikKLSAgICAgICAgICAgIHRlc3RDb250cm9s
bGVyLnJlc3VsdHMucHVzaCgiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHku
dmFsdWUgKyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPT09ICJpbXBvcnRhbnQiID8gIiBpcy1p
bXBvcnRhbnQiIDogIiIpICsgKHByb3BlcnR5LnBhcnNlZE9rID8gIiIgOiAiIG5vbi1wYXJzZWQi
KSArIl0gQFsiICsgcHJvcGVydHkuc3RhcnRPZmZzZXQgKyAiLSIgKyBwcm9wZXJ0eS5lbmRPZmZz
ZXQgKyAiXSAiICsgcHJvcGVydHkuc3RhdHVzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAi
J10gIiArIHByb3BlcnR5LnN0YXR1cyk7CisgICAgZnVuY3Rpb24gZHVtcFJ1bGVPclN0eWxlKHJ1
bGVPclN0eWxlKQorICAgIHsKKyAgICAgICAgaWYgKCFydWxlT3JTdHlsZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdmFyIGlzUnVsZSA9ICEhKHJ1bGVPclN0eWxlLnN0eWxlKTsKKyAg
ICAgICAgdmFyIHN0eWxlID0gaXNSdWxlID8gcnVsZU9yU3R5bGUuc3R5bGUgOiBydWxlT3JTdHls
ZTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChpc1J1bGUgPyAicnVsZSIgOiAic3R5bGUiKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoKGlzUnVsZSA/IChydWxlT3JTdHlsZS5zZWxlY3RvclRleHQg
KyAiOiBbIiArIHJ1bGVPclN0eWxlLm9yaWdpbiArICJdIikgOiAicmF3IHN0eWxlIikpOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQiKQorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbJyIgKyBwcm9wZXJ0eS5uYW1lICsgIic6
JyIgKyBwcm9wZXJ0eS52YWx1ZSArICInIiArIChwcm9wZXJ0eS5wcmlvcml0eSA9PT0gImltcG9y
dGFudCIgPyAiIGlzLWltcG9ydGFudCIgOiAiIikgKyAocHJvcGVydHkucGFyc2VkT2sgPyAiIiA6
ICIgbm9uLXBhcnNlZCIpICsiXSBAWyIgKyBwcm9wZXJ0eS5zdGFydE9mZnNldCArICItIiArIHBy
b3BlcnR5LmVuZE9mZnNldCArICJdICIgKyBwcm9wZXJ0eS5zdGF0dXMpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbdGV4dD0nIiAr
IHByb3BlcnR5LnRleHQgKyAiJ10gIiArIHByb3BlcnR5LnN0YXR1cyk7CisgICAgICAgIH0KICAg
ICB9Ci19CiAKIAotZnVuY3Rpb24gZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0KHRlc3RD
b250cm9sbGVyLCBzdHlsZVNoZWV0SWQsIGNvbnRpbnVhdGlvbikKLXsKLSAgICBmdW5jdGlvbiBz
dHlsZVNoZWV0TG9hZGVkKHRlc3RDb250cm9sbGVyLCBzdHlsZVNoZWV0KQorICAgIGZ1bmN0aW9u
IGxvYWRBbmREdW1wU3R5bGVTaGVldChzdHlsZVNoZWV0SWQsIGNvbnRpbnVhdGlvbikKICAgICB7
Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiU3R5bGVTaGVldDogJyIgKyBzdHlsZVNoZWV0LnRleHQg
KyAiJyIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlU2hlZXQucnVsZXMubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENvbnRy
b2xsZXIsIHN0eWxlU2hlZXQucnVsZXNbaV0pOwotICAgICAgICBpZiAoY29udGludWF0aW9uKQot
ICAgICAgICAgICAgY29udGludWF0aW9uKHN0eWxlU2hlZXQpOwotICAgIH0KKyAgICAgICAgZnVu
Y3Rpb24gc3R5bGVTaGVldExvYWRlZChzdHlsZVNoZWV0KQorICAgICAgICB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiU3R5bGVTaGVldDogJyIgKyBzdHlsZVNoZWV0LnRleHQgKyAiJyIpOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LnJ1bGVzLmxlbmd0aDsgKytp
KQorICAgICAgICAgICAgICAgIGR1bXBSdWxlT3JTdHlsZShzdHlsZVNoZWV0LnJ1bGVzW2ldKTsK
KyAgICAgICAgICAgIGlmIChjb250aW51YXRpb24pCisgICAgICAgICAgICAgICAgY29udGludWF0
aW9uKHN0eWxlU2hlZXQpOworICAgICAgICB9CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0
eWxlU2hlZXQoc3R5bGVTaGVldElkLCBzdHlsZVNoZWV0TG9hZGVkLmJpbmQobnVsbCwgdGVzdENv
bnRyb2xsZXIpKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZVNoZWV0KHN0eWxl
U2hlZXRJZCwgc3R5bGVTaGVldExvYWRlZCk7CisgICAgfQogfQogCiAvKgpAQCAtMjkyLDcgKzI5
MSw3IEBAIGJvZHkubWFpbnBhZ2UgewogPC9zdHlsZT4KIDwvaGVhZD4KIAotPGJvZHkgY2xhc3M9
Im1haW4xIG1haW4yIG1haW5wYWdlIiBvbmxvYWQ9Im9ubG9hZCgpIiBzdHlsZT0iZm9udC13ZWln
aHQ6IG5vcm1hbDsgd2lkdGg6IDg1JSI+Cis8Ym9keSBpZD0ibWFpbkJvZHkiIGNsYXNzPSJtYWlu
MSBtYWluMiBtYWlucGFnZSIgb25sb2FkPSJydW5UZXN0KCkiIHN0eWxlPSJmb250LXdlaWdodDog
bm9ybWFsOyB3aWR0aDogODUlIj4KIDxwPgogVGVzdHMgdGhhdCBJbnNwZWN0b3JDU1NBZ2VudCBB
UEkgbWV0aG9kcyB3b3JrIGFzIGV4cGVjdGVkLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtZXhwZWN0ZWQudHh0CmluZGV4IDY2MTgz
NzljODQ3YmMzMzE2MDk5MTQ0YmI2MDA5YjllMjYxNzgxYzEuLjhlYjAyMjA2YTNhMjc2YmM1MWNm
MjEyMmVhNzY5MTgyNTAzNTViODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMtc291cmNlLWxpbmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzLXNvdXJjZS1saW5lcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSwyNiBAQAogVGVz
dHMgdGhhdCBwcm9wZXIgc291cmNlIGxpbmVzIGFyZSByZXBvcnRlZCBmb3IgdGhlIHBhcnNlZCBz
dHlsZXMuCiAKLUxpbmU6MTUJYm9keSwgLmF0X2xpbmVfMTU6OmJlZm9yZQotTGluZToyOQlib2R5
LCAuYXRfbGluZV8yOQotTGluZTo0Mwlib2R5LCAuYXRfbGluZV80MwotTGluZTo1MAlib2R5LCAu
YXRfbGluZV81MAorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKKworPT09PT09PT0gTWF0
Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gYm9keSwgLmF0X2xpbmVfNTAgeyAo
c3R5bGVzLXNvdXJjZS1saW5lcy5odG1sOjUwKQorYm9yZGVyOiAxcHggc29saWQKKyAgICByZWQ7
CisKK1tleHBhbmRlZF0gYm9keSwgLmF0X2xpbmVfNDMgeyAoc3R5bGVzLXNvdXJjZS1saW5lcy5o
dG1sOjQzKQorZm9udC1zaXplOiAxMHB4OworCitbZXhwYW5kZWRdIGJvZHksIC5hdF9saW5lXzI5
IHsgKHN0eWxlcy1zb3VyY2UtbGluZXMuaHRtbDoyOSkKK2ZvbnQtZmFtaWx5OiAvKiAgQ29tbWVu
dCBpbiAKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgKi9jb3VyaWVyOworCitbZXhwYW5k
ZWRdIGJvZHksIC5hdF9saW5lXzE1OjpiZWZvcmUgeyAoc3R5bGVzLXNvdXJjZS1saW5lcy5odG1s
OjE1KQorY29sb3I6IHJlZDsKK2NvbnRlbnQ6ICJCZWZvcmUiOworCitbZXhwYW5kZWRdIGJvZHkg
eyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CittYXJnaW46IDhweDsK
KworCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxp
bmVzLWlubGluZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGlu
ZXMtaW5saW5lLmh0bWwKaW5kZXggZGNjOGEyMTIwN2Y4ZWZlMjhkMDhhMDMxYmQwNTZiMzYwMDgz
YzhiMC4uYzI3YmUyYzVjNTdiMjNiYjI2ZjI0ZjZlZTk2YmJmZTBjNTc4YzY3MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0
bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIAogPHN0
eWxlPgogLmZvbyB7CkBAIC0xMSw0MSArMTEsMjEgQEAKIAogPHNjcmlwdD4KIAotZnVuY3Rpb24g
ZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBydW5BZnRlcklmcmFtZUlzTG9hZGVkKGZ1
bmN0aW9uKCkgewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGR1bXBBcnJheShyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgp
OwotICAgICAgICB9Ci0gICAgICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1
bXBTdHlsZXMiLCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLS8vIEZyb250ZW5kIGZ1bmN0aW9u
cy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFN0eWxlcyh0ZXN0Q29udHJvbGxlcikKLXsKLSAg
ICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9N
U3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfc2VsZWN0RWxlbWVu
dENvbnRpbnVhdGlvbik7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJm
b28iLCBzdGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51YXRp
b24odGVzdENvbnRyb2xsZXIpCi17Ci0gICAgZnJvbnRlbmRfc2VsZWN0RWxlbWVudEFuZFJ1bih0
ZXN0Q29udHJvbGxlciwgImZvbyIsIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51YXRpb24y
KTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfc2VsZWN0RWxlbWVudENvbnRpbnVhdGlvbjIodGVz
dENvbnRyb2xsZXIpCi17Ci0gICAgdmFyIHJlc3VsdCA9IGZyb250ZW5kX2dldFNlbGVjdGVkRWxl
bWVudFN0eWxlcyh0cnVlKTsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7
CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
U2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgog
Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxw
PgogVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBwcm9wZXIgaW5saW5lIHN0eWxlIGxv
Y2F0aW9ucyBpbiB0aGUgc2lkZWJhciBwYW5lbC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzLXNvdXJjZS1saW5lcy5odG1sCmluZGV4IDIzZWJmYWE1NzA2M2NjYTYwNjJm
NGIzNGIwY2Q3YTAyZTY0ODFhNDIuLjdkYzMxZTA3OTBmZDYyNzRjOWViMzRhYjE2YzViYTUyNDA4
OTgwMGMgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxp
bmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMu
aHRtbApAQCAtNTMsNDcgKzUzLDI1IEBAIGJvZHksIC5hdF9saW5lXzUwCiB9CiA8L3N0eWxlPgog
Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0
ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhzdHlsZXMpCi0gICAgewotICAgICAgICB2
YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlczsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVkQ1NTUnVsZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIGlmIChtYXRjaGVkQ1NTUnVsZXNbaV0ub3JpZ2luICE9PSAiIikKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIG91dHB1dCgiTGluZToiICsgKG1hdGNoZWRDU1NSdWxl
c1tpXS5zb3VyY2VMaW5lICsgMSkgKyAiXHQiICsgbWF0Y2hlZENTU1J1bGVzW2ldLnNlbGVjdG9y
VGV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wU291cmNlTGluZXMiLCBjYWxsYmFjayk7
Ci19Ci0KLQotLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0
Tm9kZVdpdGhJZCgibWFpbkJvZHkiLCBzdGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBT
b3VyY2VMaW5lcyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJv
bGxlciwgbnVsbCwgZnJvbnRlbmRfZ2V0UmF3U3R5bGVzKTsKLX0KLQotZnVuY3Rpb24gZnJvbnRl
bmRfZ2V0UmF3U3R5bGVzKHRlc3RDb250cm9sbGVyKQotewotICAgIGZ1bmN0aW9uIGNhbGxiYWNr
KHN0eWxlcykKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKHN0eWxlcyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVj
dGVkRWxlbWVudFN0eWxlcyh0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CiAgICAgfQotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVz
Rm9yTm9kZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwgY2FsbGJhY2sp
OwogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSIgaWQ9Im1haW5Cb2R5Ij4KIDxwPgogVGVzdHMgdGhhdCBw
cm9wZXIgc291cmNlIGxpbmVzIGFyZSByZXBvcnRlZCBmb3IgdGhlIHBhcnNlZCBzdHlsZXMuCiA8
L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZz
ZXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0
bWwKaW5kZXggOTBhNzIzZWU5YjdhMDQ0MDE4ZmRmZTE5NTgxNWNkNDI4YmU5YWZjNy4uMGFiYTMx
ZDIzYjQ1ZThjZGZkNzg2NDJmZmY0NTg5NWE3MTMwZjI5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtc291cmNlLW9mZnNldHMuaHRtbApAQCAtMyw3MSArMyw1MSBAQAog
CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXMtc291cmNlLW9m
ZnNldHMuY3NzIiAtLT4KIAotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRv
aXQoKQorZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQor
ICAgIGZ1bmN0aW9uIGR1bXBTdHlsZURhdGEocnVsZU9yU3R5bGUpCiAgICAgewotICAgICAgICBp
ZiAocmVzdWx0ID09PSAicmVmcmVzaGluZyIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGR1bXBBcnJheShyZXN1bHQpOwotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7Ci19Ci0K
LQotLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9ydW5UZXN0KHRl
c3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlKFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVu
dCk7Ci0KLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0
aW9uKCkgewotICAgICAgICBmdW5jdGlvbiBzdHlsZXNDYWxsYmFjayh0ZXN0Q29udHJvbGxlciwg
c3R5bGVzKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5
bGVzLm1hdGNoZWRDU1NSdWxlczsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0
Y2hlZENTU1J1bGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJ1bGUgPSBt
YXRjaGVkQ1NTUnVsZXNbaV07Ci0gICAgICAgICAgICAgICAgZnJvbnRlbmRfZHVtcFN0eWxlRGF0
YSh0ZXN0Q29udHJvbGxlciwgcnVsZSwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZnJvbnRlbmRfZHVtcFN0eWxlRGF0YSh0ZXN0Q29udHJvbGxlciwgc3R5bGVzLmlubGluZVN0
eWxlLCB0cnVlKTsKKyAgICAgICAgdmFyIGlzUnVsZSA9ICEhKHJ1bGVPclN0eWxlLnN0eWxlKTsK
KyAgICAgICAgdmFyIHN0eWxlOworICAgICAgICB2YXIgaGVhZGVyID0gIiI7CisgICAgICAgIGlm
IChpc1J1bGUpIHsKKyAgICAgICAgICAgIGlmIChydWxlT3JTdHlsZS5vcmlnaW4gIT09ICIiKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN0eWxlID0gcnVsZU9yU3R5bGUu
c3R5bGU7CisgICAgICAgICAgICBoZWFkZXIgPSBydWxlT3JTdHlsZS5zZWxlY3RvclRleHQgKyAi
OiBbIiArIChydWxlT3JTdHlsZS5zZWxlY3RvclJhbmdlID8gcnVsZU9yU3R5bGUuc2VsZWN0b3JS
YW5nZS5zdGFydCArICItIiArIHJ1bGVPclN0eWxlLnNlbGVjdG9yUmFuZ2UuZW5kIDogIiIpICAr
ICJdIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0eWxlID0gcnVsZU9yU3R5bGU7
CisgICAgICAgICAgICBoZWFkZXIgPSAiZWxlbWVudC5zdHlsZToiOwogICAgICAgICB9Ci0gICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShXZWJJbnNwZWN0b3IuZG9tQWdl
bnQuZG9jdW1lbnQuYm9keS5pZCwgc3R5bGVzQ2FsbGJhY2suYmluZChudWxsLCB0ZXN0Q29udHJv
bGxlcikpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wU3R5bGVEYXRhKHRl
c3RDb250cm9sbGVyLCBydWxlT3JTdHlsZSwgc2hvdWxkQmFpbCkKLXsKLSAgICB2YXIgaXNSdWxl
ID0gISEocnVsZU9yU3R5bGUuc3R5bGUpOwotICAgIHZhciBzdHlsZTsKLSAgICB2YXIgaGVhZGVy
ID0gIiI7Ci0gICAgaWYgKGlzUnVsZSkgewotICAgICAgICBpZiAocnVsZU9yU3R5bGUub3JpZ2lu
ICE9PSAiIikgewotICAgICAgICAgICAgaWYgKHNob3VsZEJhaWwpCi0gICAgICAgICAgICAgICAg
dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRzKTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaGVhZGVyICsg
IiBbIiArIHN0eWxlLnByb3BlcnRpZXMuc3RhcnRPZmZzZXQgICsgIi0iICsgc3R5bGUucHJvcGVy
dGllcy5lbmRPZmZzZXQgKyAiXSIpOworICAgICAgICB2YXIgYWxsUHJvcGVydGllcyA9IHN0eWxl
LmNzc1Byb3BlcnRpZXM7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsUHJvcGVydGll
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gYWxsUHJvcGVydGll
c1tpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5zdGF0dXMgPT09ICJzdHlsZSIpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHkudmFsdWUgKyAiJyIgKyAo
cHJvcGVydHkucHJpb3JpdHkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsgKHByb3BlcnR5LnBhcnNl
ZE9rID8gIiIgOiAiIG5vbi1wYXJzZWQiKSArIl0gQFsiICsgcHJvcGVydHkuc3RhcnRPZmZzZXQg
KyAiLSIgKyBwcm9wZXJ0eS5lbmRPZmZzZXQgKyAiXSIpOwogICAgICAgICB9Ci0gICAgICAgIHN0
eWxlID0gcnVsZU9yU3R5bGUuc3R5bGU7Ci0gICAgICAgIGhlYWRlciA9IHJ1bGVPclN0eWxlLnNl
bGVjdG9yVGV4dCArICI6IFsiICsgKHJ1bGVPclN0eWxlLnNlbGVjdG9yUmFuZ2UgPyBydWxlT3JT
dHlsZS5zZWxlY3RvclJhbmdlLnN0YXJ0ICsgIi0iICsgcnVsZU9yU3R5bGUuc2VsZWN0b3JSYW5n
ZS5lbmQgOiAiIikgICsgIl0iOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0eWxlID0gcnVsZU9y
U3R5bGU7Ci0gICAgICAgIGhlYWRlciA9ICJlbGVtZW50LnN0eWxlOiI7CiAgICAgfQotICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaChoZWFkZXIgKyAiIFsiICsgc3R5bGUucHJvcGVydGll
cy5zdGFydE9mZnNldCAgKyAiLSIgKyBzdHlsZS5wcm9wZXJ0aWVzLmVuZE9mZnNldCArICJdIik7
Ci0gICAgdmFyIGFsbFByb3BlcnRpZXMgPSBzdHlsZS5jc3NQcm9wZXJ0aWVzOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYWxsUHJvcGVydGllcy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIg
cHJvcGVydHkgPSBhbGxQcm9wZXJ0aWVzW2ldOwotICAgICAgICBpZiAocHJvcGVydHkuc3RhdHVz
ID09PSAic3R5bGUiKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRlc3RDb250cm9s
bGVyLnJlc3VsdHMucHVzaCgiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHku
dmFsdWUgKyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsg
KHByb3BlcnR5LnBhcnNlZE9rID8gIiIgOiAiIG5vbi1wYXJzZWQiKSArIl0gQFsiICsgcHJvcGVy
dHkuc3RhcnRPZmZzZXQgKyAiLSIgKyBwcm9wZXJ0eS5lbmRPZmZzZXQgKyAiXSIpOworICAgIAor
ICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgibWFpbkJvZHkiLCBzdGVwMSk7CisK
KyAgICBmdW5jdGlvbiBzdGVwMShub2RlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5nZXRTdHlsZXNGb3JOb2RlKG5vZGUuaWQsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdGVwMihzdHlsZXMpCisgICAgeworICAgICAgICB2YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5
bGVzLm1hdGNoZWRDU1NSdWxlczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVk
Q1NTUnVsZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBkdW1wU3R5bGVEYXRhKG1hdGNoZWRD
U1NSdWxlc1tpXSk7CisgICAgICAgIGR1bXBTdHlsZURhdGEoc3R5bGVzLmlubGluZVN0eWxlKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0gICAgaWYgKHNo
b3VsZEJhaWwpCi0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUodGVzdENvbnRyb2xs
ZXIucmVzdWx0cyk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtODIsNyArNjIsNyBAQCBib2R5Lm1haW5w
YWdlIHsKIDwvc3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGNsYXNzPSJtYWluMSBtYWluMiBtYWlu
cGFnZSIgb25sb2FkPSJvbmxvYWQoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdpZHRo
OiA4MCUiPgorPGJvZHkgaWQ9Im1haW5Cb2R5IiBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBhZ2Ui
IG9ubG9hZD0icnVuVGVzdCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2lkdGg6IDgw
JSI+CiA8cD4KIFRlc3RzIHRoYXQgcHJvcGVyIGRhdGEgYW5kIHN0YXJ0L2VuZCBvZmZzZXQgcG9z
aXRpb25zIGFyZSByZXBvcnRlZCBmb3IgQ1NTIHN0eWxlIGRlY2xhcmF0aW9ucyBhbmQgcHJvcGVy
dGllcy4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtdXJs
LWxpbmtpZnkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtdXJsLWxpbmtpZnku
aHRtbAppbmRleCBmZTY3MTc3YWZjNDEyYTI0YzA1NTliZDEzZDBiZDkwYWZmN2JjMmRjLi5hMDY5
YjU1MDExYzE3OWQxNjczMDBhYmE5OTM1MDY2NzkyMjNhMzdjIDEwMDc1NQotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXVybC1saW5raWZ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy11cmwtbGlua2lmeS5odG1sCkBAIC0xLDI1ICsxLDMwIEBACiA8aHRt
bD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRl
c3RzMi5qcyI+PC9zY3JpcHQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy9zdHlsZXMtdXJsLWxpbmtpZnkuY3NzIj4KKworPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogCi1mdW5jdGlvbiBydW5BZnRlcklmcmFtZUxvYWRlZCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsK
LSAgICBmdW5jdGlvbiBzdGVwKCkKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVVSTChiYXNlVVJMLCBo
cmVmKQogICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVkKQotICAgICAgICAg
ICAgc2V0VGltZW91dChzdGVwLCAxMDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBydW5U
ZXN0KCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KFdlYkluc3BlY3Rvci5jb21w
bGV0ZVVSTChiYXNlVVJMLCBocmVmKSk7CiAgICAgfQotICAgIHNldFRpbWVvdXQoc3RlcCwgMTAw
KTsKLX0KIAotZnVuY3Rpb24gdGVzdCgpCi17CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlBhcnRpYWwgVVJMcyBjb21wbGV0ZWQ6Iik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFt
cGxlLmNvbSIsICIvIik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJt
b28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRwczovL3Nl
Y3VyZS5jb20vbW9vIik7CisgICAgY29tcGxldGVVUkwoImh0dHBzOi8vZXhhbXBsZS5jb20vZm9v
IiwgIi8vc2VjdXJlLmNvbS9tb28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUu
Y29tL2Zvby96b28iLCAiL21vbyIpOworICAgIGNvbXBsZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5j
b20vZm9vL3pvby8iLCAibW9vIik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNv
bS9mb28vem9vIiwgImJvby9tb28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUu
Y29tL2ZvbyIsICJtb28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUuY29tL2Zv
byIsICI/YT1iIik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28/Yz1k
IiwgIj9hPWIiKTsKKwogICAgIGZ1bmN0aW9uIGR1bXBIcmVmKCkKICAgICB7CiAgICAgICAgIHZh
ciBocmVmOwpAQCAtNDEsNTIgKzQ2LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChvdXRwdXQuam9pbigiLyIpKTsKICAgICB9CiAKLSAgICBmdW5j
dGlvbiBzZWxlY3RMb2NhbEVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5z
ZWxlY3RFbGVtZW50QW5kUnVuKCJsb2NhbCIsIGV4ZWN1dGVMb2NhbFRlc3QpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGNvbXBsZXRlVVJMKGJhc2VVUkwsIGhyZWYpCi0gICAgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdChXZWJJbnNwZWN0b3IuY29tcGxldGVVUkwoYmFzZVVSTCwg
aHJlZikpOwotICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImxvY2Fs
Iiwgc3RlcDEpOwogCi0gICAgZnVuY3Rpb24gY29tcGxldGVVUkxUZXN0KCkKKyAgICBmdW5jdGlv
biBzdGVwMSgpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUGFydGlh
bCBVUkxzIGNvbXBsZXRlZDoiKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxl
LmNvbSIsICIvIik7Ci0gICAgICAgIGNvbXBsZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5jb20iLCAi
bW9vIik7Ci0gICAgICAgIGNvbXBsZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHBz
Oi8vc2VjdXJlLmNvbS9tb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0dHBzOi8vZXhhbXBs
ZS5jb20vZm9vIiwgIi8vc2VjdXJlLmNvbS9tb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28vem9vIiwgIi9tb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28vem9vLyIsICJtb28iKTsKLSAgICAgICAgY29tcGxldGVV
UkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28vem9vIiwgImJvby9tb28iKTsKLSAgICAgICAgY29t
cGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28iLCAibW9vIik7Ci0gICAgICAgIGNvbXBs
ZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vIiwgIj9hPWIiKTsKLSAgICAgICAgY29tcGxl
dGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28/Yz1kIiwgIj9hPWIiKTsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBleGVjdXRlTG9jYWxUZXN0KCkKLSAgICB7Ci0gICAgICAgIGNvbXBsZXRlVVJM
VGVzdCgpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGluayBmb3IgYSBVUkkg
ZnJvbSBDU1MgZG9jdW1lbnQ6Iik7CiAgICAgICAgIGR1bXBIcmVmKCk7Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3Quc2VsZWN0RWxlbWVudEFuZFJ1bigiaWZyYW1lZCIsIGV4ZWN1dGVJZnJhbWVkVGVz
dCk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiaWZyYW1lZCIsIHN0
ZXAyKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBleGVjdXRlSWZyYW1lZFRlc3QoKQorICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJM
aW5rIGZvciBhIFVSSSBmcm9tIGlmcmFtZSBpbmxpbmUgc3R5bGVzaGVldDoiKTsKICAgICAgICAg
ZHVtcEhyZWYoKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc2VsZWN0
TG9jYWxFbGVtZW50KTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1
bkFmdGVySWZyYW1lTG9hZGVkKCkiPgorPGJvZHkgb25sb2FkPSJydW5BZnRlcklmcmFtZUlzTG9h
ZGVkKCkiPgogPHA+CiBUZXN0cyB0aGF0IFVSTHMgYXJlIGxpbmtlZCB0byBhbmQgY29tcGxldGVk
IGNvcnJlY3RseS4gQnVncyA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTY2MyI+NTE2NjM8L2E+LCA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzE3MSI+NTMxNzE8L2E+CiA8L3A+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82279</attachid>
            <date>2011-02-13 14:27:47 -0800</date>
            <delta_ts>2011-02-14 02:23:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54354-20110214012744.patch</filename>
            <type>text/plain</type>
            <size>180952</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5M2QyZWRkYjFhMzA0YmU0YzY1ZTA2
YzUxZjBmNGU5NGQxMGYwMDM5Li5mMTFlZjQwNzRlMDA4MjNmOWQyNTljMTJmYjU2MDg3ODA5YmQy
MjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTAyLTEzICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtsYXlvdXQgdGVzdHNdIGdldCByaWQgb2Yg
ZWxlbWVudHMtdGVzdHMuanMgaW4gZmF2b3Igb2YgZWxlbWVudHMtdGVzdHMyLmpzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDM1NAorCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanM6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzMi5qcy4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29ja2V0LWVycm9yLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHIt
bG9nZ2luZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci10ZXN0Mi5qcy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdDIuanM6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNv
bnZlcnNpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLWhhci1jb252ZXJzaW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtcGFyYW1ldGVycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlLXRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy10ZXN0LmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdGVzdDIuanMuCisgICAgICAgICogaW5z
cGVjdG9yL2NvbW1hbmQtbGluZS1hcGkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29s
ZS1hcGktb24tY2FsbC1mcmFtZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWFz
c2VydC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWNsZWFyLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2NvbnNvbGUtY29tbWFuZC1jbGVhci1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2NvbnNvbGUtY29tbWFuZC1jbGVhci5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlLWRpci1nbG9iYWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29u
c29sZS1kaXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1kaXJ4bWwuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1ldmFsLWdsb2JhbC5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9jb25zb2xlLWV2YWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29s
ZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9j
b25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25z
b2xlLWZvcm1hdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZm9y
bWF0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtbG9nLWJlZm9yZS1pbnNwZWN0
b3Itb3Blbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWxvZy1zeW50YXgtZXJy
b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1vYmplY3QtY29uc3RydWN0b3It
bmFtZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLXRlc3RzLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2NvbnNvbGUtdHJhY2UtaW4tZXZhbC5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlLXRyYWNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUt
dW5jYXVnaHQtZXhjZXB0aW9uLWluLWV2YWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29u
c29sZS11bmNhdWdodC1leGNlcHRpb24uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXItYXV0b2NvbnRpbnVlLW9uLXN5bnRheC1lcnJvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyLWV2YWwtb24tY2FsbC1mcmFtZS5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci1leHBhbmQtc2NvcGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXItbm8tbmVzdGVkLXBhdXNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXBh
dXNlLWluLWV2YWwtc2NyaXB0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXBh
dXNlLW9uLWJyZWFrcG9pbnQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1
c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyLXBhdXNlLW9uLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1wcm90by1wcm9wZXJ0eS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zY3Jp
cHRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyLXN1c3BlbmQtYWN0aXZlLWRvbS1vYmplY3RzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RvbS1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1kZWxl
dGUtaW5saW5lLXN0eWxlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzLWltZy10
b29sdGlwLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRv
b2x0aXAuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1j
aGlsZHJlbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVs
LWxpbWl0ZWQtY2hpbGRyZW4uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFu
ZWwtcmV3cml0ZS1ocmVmLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVu
dHMtcGFuZWwtcmV3cml0ZS1ocmVmLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRz
LXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZyZXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZWxlbWVudHMtcGFuZWwtc2VsZWN0aW9uLW9uLXJlZnJlc2guaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9lbGVtZW50cy1wYW5lbC14aHRtbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC14aHRtbC1zdHJ1Y3R1cmUueGh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9lbGVtZW50cy10ZXN0czIuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Jl
c291cmNlcy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9y
ZXNvdXJjZXMvc3R5bGVzLWlmcmFtZS1kYXRhLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0
b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
LWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtY29t
cHV0ZWQtdHJhY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLWRpc2FibGUtaW5o
ZXJpdGVkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tY2hh
bmdlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRl
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9zdHlsZXMtaWZyYW1lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy1uZXctQVBJLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Ut
bGluZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtc291cmNlLWxp
bmVzLWlubGluZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVz
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtdXJsLWxpbmtpZnkuaHRtbDoKKwogMjAxMS0wMi0x
MSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc4MzMxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLmh0bWwK
aW5kZXggNWFkNmVjZTU2OWE3MWUwNTYwMWQ5MzhiNTU0YWI5NjQ1Yjg1YWZjOS4uMjNiZjA1ZTNl
ZTY1YTQzYzU4YzM2YTdhYmExMTYyOTc2NDZkZDI4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXJlc291cmNlLWVycm9ycy5o
dG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSJjb25zb2xl
LXRlc3RzMi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29uc29sZS10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgogCiA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJtaXNzaW5nLmNzcyI+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3Rz
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM2NjMyMTU5OTM2MDg3YWZmZDZjZTI3MDll
NzAzY2JjNDRmODQ3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8gSW5zcGVjdGVkIFBhZ2UgZnVuY3Rpb25z
LgotCi1mdW5jdGlvbiBkdW1wQ29uc29sZU1lc3NhZ2VzKG5vTm90aWZ5RG9uZSkgewotICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXS50ZXh0
KTsKLSAgICAgICAgaWYgKCFub05vdGlmeURvbmUpCi0gICAgICAgICAgICBub3RpZnlEb25lKCk7
Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1bXBDb25zb2xl
TWVzc2FnZXMiLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIGR1bXBDb25zb2xlTWVzc2FnZXNX
aXRoQ2xhc3Nlcyhzb3J0TWVzc2FnZXMpIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQp
Ci0gICAgewotICAgICAgICB2YXIgbWVzc2FnZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBtZXNzYWdlcy5wdXNoKHJl
c3VsdFtpXS50ZXh0ICsgIiAiICsgcmVzdWx0W2ldLmNsYXp6KTsKLSAgICAgICAgaWYgKHNvcnRN
ZXNzYWdlcykKLSAgICAgICAgICAgIG1lc3NhZ2VzLnNvcnQoKTsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChtZXNz
YWdlc1tpXSk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJbldl
Ykluc3BlY3RvcigiZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKLX0K
LQotCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBDb25z
b2xlTWVzc2FnZXMoKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgbWVzc2FnZXMg
PSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gbWVzc2FnZXNb
aV0udG9NZXNzYWdlRWxlbWVudCgpOwotICAgICAgICByZXN1bHQucHVzaCh7IHRleHQ6IGVsZW1l
bnQudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csICIiKSwgY2xheno6IGVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJjbGFzcyIpfSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29j
a2V0LWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xl
LXdlYnNvY2tldC1lcnJvci5odG1sCmluZGV4IGVhNDEzOGUyYzcxOWZmOTIxY2Q2NjYzNWI2NTZi
OTFjNjk4OTE5YjUuLmQ5YTMzNTUxYTBkYjI3OGI2ZTEzYTA0NTU5NDM0ZjBlOTAyZWRjY2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29j
a2V0LWVycm9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29u
c29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbApAQCAtMSwxNyArMSwxNyBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iY29uc29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRl
c3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjb25zb2xlLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIHZhciB0ZXN0RnVuY3Rpb25zID0gW3Rlc3RETlNMb29rdXAsIHRlc3RTU0xD
ZXJ0aWZpY2F0ZV07CiB2YXIgbmV4dFRlc3RJbmRleCA9IDA7CiAKLWZ1bmN0aW9uIGRvaXQoKQor
ZnVuY3Rpb24gb25sb2FkKCkKIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgaWYg
KCF3aW5kb3cuV2ViU29ja2V0KSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKCJXZWJTb2NrZXQgaXMg
bm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAgZHVtcENvbnNvbGVNZXNzYWdlcyhmYWxzZSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgY29uc29sZS5sb2coIldlYlNvY2tldCBpcyBub3Qgc3Vw
cG9ydGVkLiIpOyByZXR1cm47CiAgICAgfQogICAgIGRvTmV4dFRlc3QoKTsKIH0KQEAgLTE5LDcg
KzE5LDcgQEAgZnVuY3Rpb24gZG9pdCgpCiBmdW5jdGlvbiBkb05leHRUZXN0KCkKIHsKICAgICBp
ZiAobmV4dFRlc3RJbmRleCA9PSB0ZXN0RnVuY3Rpb25zLmxlbmd0aCkgewotICAgICAgICBkdW1w
Q29uc29sZU1lc3NhZ2VzKGZhbHNlKTsKKyAgICAgICAgcnVuVGVzdCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHZhciB0ZXN0RnVuY3Rpb24gPSB0ZXN0RnVuY3Rpb25zW25leHRUZXN0
SW5kZXhdOwpAQCAtNjUsNiArNjUsMTMgQEAgZnVuY3Rpb24gdGVzdFNTTENlcnRpZmljYXRlKCkK
ICAgICAgICAgZG9OZXh0VGVzdCgpOwogICAgIH07CiB9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVNZXNzYWdlcygpOworICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7Cit9CisKIDwvc2NyaXB0PgogPC9oZWFkPgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhy
LWxvZ2dpbmctZXhwZWN0ZWQudHh0CmluZGV4IGRlMzcxZTg1MDdkYzI0NWU0NmY2ODkwNjEzOWZk
YWU0MGY5Y2IwNGYuLmNlMWM2MjFiMWEwNTllM2Q2NDRmN2E3MWViNjQ2MjJkYjdlODNhNTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxv
Z2dpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDI0ICsxLDIwIEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTE6IGVuYWJsZWQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA0MDog
c2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogc2Vu
ZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogc2VuZGlu
ZyBhICVzIHJlcXVlc3QgdG8gJXMKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMTogZGlzYWJsZWQK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA0MDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA0MDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxMDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxMDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxMDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAxMDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxMDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
MDogc2VuZGluZyBhICVzIHJlcXVlc3QgdG8gJXMKIFRlc3RzIHRoYXQgWE1MSHR0cFJlcXVlc3Qg
TG9nZ2luZyB3b3JrcyB3aGVuIEVuYWJsZWQgYW5kIGRvZXNuJ3Qgc2hvdyBsb2dzIHdoZW4gRGlz
YWJsZWQuCiAKLWNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoxMWVuYWJsZWQKLWNvbnNvbGUteGhy
LWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhyLWV4
aXN0cy5odG1sCitjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTBzZW5kaW5nIGEgR0VUIHJlcXVl
c3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbAogWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0bWwi
LgotY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJl
c291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAorY29uc29sZS14aHItbG9nZ2luZy5odG1s
OjEwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3Qu
aHRtbAogeGhyLWRvZXMtbm90LWV4aXN0Lmh0bWxHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9yZXNvdXJjZXMveGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwgNDA0IChOb3QgRm91bmQp
CiBYSFIgZmluaXNoZWQgbG9hZGluZzogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
cmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sIi4KLWNvbnNvbGUteGhyLWxvZ2dpbmcu
aHRtbDo0MHNlbmRpbmcgYSBQT1NUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNn
aQorY29uc29sZS14aHItbG9nZ2luZy5odG1sOjEwc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0byBy
ZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dpCiBYSFIgZmluaXNoZWQgbG9hZGluZzogImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaSIuCi1jb25z
b2xlLXhoci1sb2dnaW5nLmh0bWw6MjFkaXNhYmxlZAotY29uc29sZS14aHItbG9nZ2luZy5odG1s
OjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291cmNlcy94aHItZXhpc3RzLmh0bWwKLWNv
bnNvbGUteGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJj
ZXMveGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwKK2NvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoxMHNl
bmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhyLWV4aXN0cy5odG1sCitjb25zb2xl
LXhoci1sb2dnaW5nLmh0bWw6MTBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3ho
ci1kb2VzLW5vdC1leGlzdC5odG1sCiB4aHItZG9lcy1ub3QtZXhpc3QuaHRtbEdFVCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRt
bCA0MDQgKE5vdCBGb3VuZCkKLWNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBQ
T1NUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaQorY29uc29sZS14aHItbG9n
Z2luZy5odG1sOjEwc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0byByZXNvdXJjZXMvcG9zdC10YXJn
ZXQuY2dpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUteGhyLWxvZ2dpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbAppbmRleCBkYzUyYTcyYjZiYTBkZWNlMGM3ZDFhYzll
MDBhYzFjNjllYzVhZDhjLi4yYjdjMTMzYmI4MTYyYWYzY2FlOWY0MDE4Nzg5Zjg5OWFkNGVmYmMz
IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXho
ci1sb2dnaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29u
c29sZS14aHItbG9nZ2luZy5odG1sCkBAIC0xLDI3ICsxLDE2IEBACiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJj
b25zb2xlLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdDIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICAvLyBFbmFibGUgWE1MSHR0cFJlcXVl
c3QgTG9nZ2luZy4KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9lbmFibGVY
TUxIdHRwUmVxdWVzdExvZ2dpbmciLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgY29uc29s
ZS5sb2cocmVzdWx0KTsKLSAgICAgICAgbWFrZVJlcXVlc3RzKCk7Ci0gICAgICAgIHRlc3REaXNh
YmxlZCgpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0RGlzYWJsZWQoKQorZnVuY3Rpb24g
cmVxdWVzdEhlbHBlcihtZXRob2QsIHVybCkKIHsKLSAgICAvLyBEaXNhYmxlIFhNTEh0dHBSZXF1
ZXN0IExvZ2dpbmcuCi0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZGlzYWJs
ZVhNTEh0dHBSZXF1ZXN0TG9nZ2luZyIsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBjb25z
b2xlLmxvZyhyZXN1bHQpOwotICAgICAgICBtYWtlUmVxdWVzdHMoKTsKLSAgICAgICAgZHVtcENv
bnNvbGVNZXNzYWdlcygpOwotICAgIH0pOworICAgIC8vIE1ha2Ugc3luY2hyb25vdXMgcmVxdWVz
dHMgZm9yIHNpbXBsaWNpdHkuCisgICAgY29uc29sZS5sb2coInNlbmRpbmcgYSAlcyByZXF1ZXN0
IHRvICVzIiwgbWV0aG9kLCB1cmwpOworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKKyAgICB4aHIub3BlbihtZXRob2QsIHVybCwgZmFsc2UpOworICAgIHhoci5zZW5kKCk7CiB9
CiAKIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0cygpCkBAIC0zNCwzNyArMjMsNDMgQEAgZnVuY3Rpb24g
bWFrZVJlcXVlc3RzKCkKICAgICByZXF1ZXN0SGVscGVyKCJQT1NUIiwgInJlc291cmNlcy9wb3N0
LXRhcmdldC5jZ2kiKTsKIH0KIAotZnVuY3Rpb24gcmVxdWVzdEhlbHBlcihtZXRob2QsIHVybCkK
LXsKLSAgICAvLyBNYWtlIHN5bmNocm9ub3VzIHJlcXVlc3RzIGZvciBzaW1wbGljaXR5LgotICAg
IGNvbnNvbGUubG9nKCJzZW5kaW5nIGEgJXMgcmVxdWVzdCB0byAlcyIsIG1ldGhvZCwgdXJsKTsK
LSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9wZW4obWV0aG9k
LCB1cmwsIGZhbHNlKTsKLSAgICB4aHIuc2VuZCgpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9l
bmFibGVYTUxIdHRwUmVxdWVzdExvZ2dpbmcodGVzdENvbnRyb2xsZXIpCitmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFJFbmFibGVkKHRydWUs
IGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJlbmFibGVk
Iik7Ci0gICAgfSk7CisgICAgc3RlcDEoKTsKIAotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLX0KKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBmdW5jdGlv
biBjYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoIm1ha2VSZXF1ZXN0cygpIiwgc3RlcDIpOworICAgICAgICB9CisgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQodHJ1ZSwgY2FsbGJhY2spOwor
ICAgIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfZGlzYWJsZVhNTEh0dHBSZXF1ZXN0TG9nZ2luZyh0
ZXN0Q29udHJvbGxlcikKLXsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFJF
bmFibGVkKGZhbHNlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgiZGlzYWJsZWQiKTsKLSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgewor
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm1ha2VSZXF1ZXN0cygpIiwgc3RlcDMpOworICAgICAg
ICB9CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoZmFs
c2UsIGNhbGxiYWNrKTsKKyAgICB9CiAKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZmluaXNo
KCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wQ29uc29sZU1lc3Nh
Z2VzKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAg
ICB9CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmaW5p
c2gpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25s
b2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyB0aGF0IFhNTEh0
dHBSZXF1ZXN0IExvZ2dpbmcgd29ya3Mgd2hlbiBFbmFibGVkIGFuZCBkb2Vzbid0IHNob3cgbG9n
cyB3aGVuIERpc2FibGVkLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI0ODYxNzllZGNkNjc4YmFlOGQy
NjBkY2ZhN2RkZmZhNmNiMzhiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAgLTAsMCArMSwxNDggQEAKK3ZhciBp
bml0aWFsaXplX0VsZW1lbnRUZXN0ID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3QucHVz
aEFsbERPTSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvclRlc3Qubm9kZVdp
dGhJZCgvbm9uc3RyaW5nLywgY2FsbGJhY2spOworfQorCitJbnNwZWN0b3JUZXN0Lm5vZGVXaXRo
SWQgPSBmdW5jdGlvbihpZFZhbHVlLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgcmVzdWx0ID0gbnVs
bDsKKyAgICB2YXIgdG9wTGV2ZWxDaGlsZHJlblJlcXVlc3RlZCA9IGZhbHNlOworICAgIHZhciBw
ZW5kaW5nUmVxdWVzdHMgPSAwOworICAgIGZ1bmN0aW9uIHByb2Nlc3NDaGlsZHJlbih0b3BMZXZl
bCwgY2hpbGRyZW4pCisgICAgeworICAgICAgICBwZW5kaW5nUmVxdWVzdHMtLTsKKyAgICAgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2
YXIgY2hpbGROb2RlID0gY2hpbGRyZW5baV07CisgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmdl
dEF0dHJpYnV0ZSgiaWQiKSA9PT0gaWRWYWx1ZSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGNoaWxkTm9kZTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3RzKys7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQuZ2V0Q2hpbGROb2Rlc0FzeW5jKGNoaWxkTm9kZSwgcHJvY2Vzc0No
aWxkcmVuLmJpbmQobnVsbCwgZmFsc2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0b3BM
ZXZlbCkKKyAgICAgICAgICAgIHRvcExldmVsQ2hpbGRyZW5SZXF1ZXN0ZWQgPSB0cnVlOworICAg
ICAgICBpZiAodG9wTGV2ZWxDaGlsZHJlblJlcXVlc3RlZCAmJiAhcmVzdWx0ICYmICFwZW5kaW5n
UmVxdWVzdHMpCisgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsgICAgCisgICAgfQorICAgIHBl
bmRpbmdSZXF1ZXN0cysrOworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5nZXRDaGlsZE5vZGVz
QXN5bmMoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50LCBwcm9jZXNzQ2hpbGRyZW4uYmlu
ZCh0aGlzLCB0cnVlKSk7Cit9OworCitJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQgPSBm
dW5jdGlvbihpZFZhbHVlLCBjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBteWNhbGxiYWNrKG5v
ZGUpCisgICAgeworICAgICAgICBpZiAobm9kZSkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci51
cGRhdGVGb2N1c2VkTm9kZShub2RlLmlkKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGNhbGxiYWNrLmJp
bmQobnVsbCwgbm9kZSkpOworICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRoSWQoaWRW
YWx1ZSwgbXljYWxsYmFjayk7Cit9OworCitJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1l
bnRTdHlsZXMgPSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaGVkLCBvbWl0
TG9uZ2hhbmRzKQoreworICAgIHZhciBzdHlsZVNlY3Rpb25zID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zOworICAgIGZvciAodmFyIHBz
ZXVkb0lkIGluIHN0eWxlU2VjdGlvbnMpIHsKKyAgICAgICAgdmFyIHBzZXVkb05hbWUgPSBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuUHNldWRvSWROYW1lc1twc2V1ZG9JZF07CisgICAg
ICAgIHZhciBzZWN0aW9ucyA9IHN0eWxlU2VjdGlvbnNbcHNldWRvSWRdOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNlY3Rpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
c2VjdGlvbiA9IHNlY3Rpb25zW2ldOworICAgICAgICAgICAgaWYgKHNlY3Rpb24uY29tcHV0ZWRT
dHlsZSAmJiBleGNsdWRlQ29tcHV0ZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAoc2VjdGlvbi5ydWxlICYmIGV4Y2x1ZGVNYXRjaGVkKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1Np
YmxpbmcgJiYgc2VjdGlvbi5lbGVtZW50LnByZXZpb3VzU2libGluZy5jbGFzc05hbWUgPT09ICJz
dHlsZXMtc2lkZWJhci1zZXBhcmF0b3IiKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCI9PT09PT09PSAiICsgc2VjdGlvbi5lbGVtZW50LnByZXZpb3VzU2libGluZy50
ZXh0Q29udGVudCArICIgPT09PT09PT0iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KChzZWN0aW9uLmV4cGFuZGVkID8gIltleHBhbmRlZF0gIiA6ICJbY29sbGFwc2VkXSAi
KSArIHNlY3Rpb24udGl0bGVFbGVtZW50LnRleHRDb250ZW50ICsgIiAoIiArIHNlY3Rpb24uc3Vi
dGl0bGVBc1RleHRGb3JUZXN0ICsgIikiKTsKKyAgICAgICAgICAgIHNlY3Rpb24uZXhwYW5kKCk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVPdXRsaW5lKHNlY3Rpb24u
cHJvcGVydGllc1RyZWVPdXRsaW5lLCBvbWl0TG9uZ2hhbmRzID8gMSA6IDIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICB9CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICB9Cit9OworCisvLyBGSVhNRTogdGhpcyByZXR1
cm5zIHRoZSBmaXJzdCB0cmVlIGl0ZW0gZm91bmQgKG1heSBmYWlsIGZvciBzYW1lLW5hbWVkIHBy
b3BlcnRpZXMgaW4gYSBzdHlsZSkuCitJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3Bl
cnR5VHJlZUl0ZW0gPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCit7CisgICAgdmFyIHN0eWxlU2Vj
dGlvbnMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHlsZXMu
c2VjdGlvbnNbMF07CisgICAgdmFyIGVsZW1lbnRTdHlsZVNlY3Rpb24gPSBzdHlsZVNlY3Rpb25z
WzFdOworICAgIHZhciBvdXRsaW5lID0gZWxlbWVudFN0eWxlU2VjdGlvbi5wcm9wZXJ0aWVzVHJl
ZU91dGxpbmU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRsaW5lLmNoaWxkcmVuLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHZhciB0cmVlSXRlbSA9IG91dGxpbmUuY2hpbGRyZW5baV07Cisg
ICAgICAgIGlmICh0cmVlSXRlbS5uYW1lID09PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgICAgICBy
ZXR1cm4gdHJlZUl0ZW07CisgICAgfQorICAgIHJldHVybiBudWxsOworfTsKKworSW5zcGVjdG9y
VGVzdC5kdW1wU3R5bGVUcmVlT3V0bGluZSA9IGZ1bmN0aW9uKHRyZWVJdGVtLCBkZXB0aCkKK3sK
KyAgICB2YXIgY2hpbGRyZW4gPSB0cmVlSXRlbS5jaGlsZHJlbjsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
dHlsZVRyZWVJdGVtKGNoaWxkcmVuW2ldLCAiIiwgZGVwdGggfHwgMik7Cit9OworCitJbnNwZWN0
b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVtID0gZnVuY3Rpb24odHJlZUl0ZW0sIHByZWZpeCwgZGVw
dGgpCit7CisgICAgLy8gRmlsdGVyIG91dCB3aWR0aCBhbmQgaGVpZ2h0IHByb3BlcnRpZXMgaW4g
b3JkZXIgdG8gbWluaW1pemUKKyAgICAvLyBwb3RlbnRpYWwgZGlmZnMuCisgICAgaWYgKCF0cmVl
SXRlbS5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigid2lkdGgiKSB8fAorICAg
ICAgICAhdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50LmluZGV4T2YoImhlaWdo
dCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50
Lmhhc1N0eWxlQ2xhc3MoImluaGVyaXRlZCIpKQorICAgICAgICByZXR1cm47CisgICAgdmFyIHR5
cGVQcmVmaXggPSAiIjsKKyAgICBpZiAodHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50Lmhhc1N0eWxl
Q2xhc3MoIm92ZXJsb2FkZWQiKSkKKyAgICAgICAgdHlwZVByZWZpeCArPSAiLy0tIG92ZXJsb2Fk
ZWQgLS0vICI7CisgICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5oYXNTdHlsZUNsYXNz
KCJkaXNhYmxlZCIpKQorICAgICAgICB0eXBlUHJlZml4ICs9ICIvLS0gZGlzYWJsZWQgLS0vICI7
CisgICAgdmFyIHRleHRDb250ZW50ID0gdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250
ZW50OworCisgICAgLy8gQWRkIG5vbi1zZWxlY3RhYmxlIHVybCB0ZXh0LgorICAgIHZhciB0ZXh0
RGF0YSA9IHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS11bmNv
cHlhYmxlXSIpOworICAgIGlmICh0ZXh0RGF0YSkKKyAgICAgICAgdGV4dENvbnRlbnQgKz0gdGV4
dERhdGEuZ2V0QXR0cmlidXRlKCJkYXRhLXVuY29weWFibGUiKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChwcmVmaXggKyB0eXBlUHJlZml4ICsgdGV4dENvbnRlbnQpOworICAgIGlmICgt
LWRlcHRoKSB7CisgICAgICAgIHRyZWVJdGVtLmV4cGFuZCgpOworICAgICAgICB2YXIgY2hpbGRy
ZW4gPSB0cmVlSXRlbS5jaGlsZHJlbjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVu
ICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHByZWZpeCArICIgICAgIiwgZGVwdGgpOwor
ICAgIH0KK307CisKK0luc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRzVHJlZSA9IGZ1bmN0aW9uKCkK
K3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnVwZGF0ZU1vZGlmaWVkTm9kZXMo
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLnRyZWVPdXRsaW5lLmVsZW1lbnQudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csICIi
KS5yZXBsYWNlKC9cbi9nLCAiIikucmVwbGFjZSgvPC9nLCAiXG48IikpOworfTsKKworSW5zcGVj
dG9yVGVzdC5kdW1wTG9hZGVkRE9NID0gZnVuY3Rpb24oKQoreworICAgIGZ1bmN0aW9uIGV4cGFu
ZCh0cmVlSXRlbSwgdG9wTGV2ZWwpCisgICAgeworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0cmVl
SXRlbS5jaGlsZHJlbjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuICYmIGkgPCBj
aGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY2hpbGRyZW5baV0uZXhwYW5kKCk7
CisgICAgICAgICAgICBleHBhbmQoY2hpbGRyZW5baV0sIGZhbHNlKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodG9wTGV2ZWwpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBFbGVtZW50
c1RyZWUoKTsKKyAgICB9CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy51cGRhdGVN
b2RpZmllZE5vZGVzKCk7CisgICAgZXhwYW5kKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMu
dHJlZU91dGxpbmUsIHRydWUpOworfTsKKworfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdDIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dDIuanMKaW5kZXggNmIzNDFmNzE2YjE5NDNhMmU1MDgzNGVhYzExY2I2NGYwOTI0MjRiMS4uZDhi
MDYxYzllNDA0NzRiNDlmMjgzZTAxYzEwMThkYTA1Yzk1ZGUyYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwpAQCAtMzUsNyAr
MzUsMTIgQEAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZUFuZER1bXAgPSBmdW5jdGlv
bihjb2RlLCBjYWxsYmFjaykKIAogSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSA9IGZ1bmN0
aW9uKGNvZGUsIGNhbGxiYWNrKQogewotICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGUoY29k
ZSwgImNvbnNvbGUiLCBmYWxzZSwgY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fSk7CisgICAgZnVu
Y3Rpb24gbXljYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAgICBpZiAoY2FsbGJhY2spCisg
ICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2Fk
KHJlc3VsdCkpOworICAgIH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKGNvZGUsICJj
b25zb2xlIiwgZmFsc2UsIG15Y2FsbGJhY2spOwogfQogCiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlV2l0aFRpbWVvdXQgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKQEAgLTEwNywxNyAr
MTEyLDYgQEAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWxvYWRQYWdlKGZhbHNlKTsKIH0KIAotSW5zcGVjdG9yVGVz
dC5yZWxvYWRQYWdlSWZOZWVkZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBpZiAoIUlu
c3BlY3RvclRlc3QuX3BhZ2VXYXNSZWxvYWRlZCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0Ll9w
YWdlV2FzUmVsb2FkZWQgPSB0cnVlOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
Y2FsbGJhY2spOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgfQotfQotCiBJbnNwZWN0b3JUZXN0LnBhZ2VSZWxvYWRlZCA9
IGZ1bmN0aW9uKCkKIHsKICAgICByZXN1bHRzU3luY2hyb25pemVkID0gZmFsc2U7CkBAIC0yMTAs
NiArMjA0LDIwIEBAIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIgPSBmdW5jdGlvbihyZWNlaXZl
ciwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCiB2YXIgcnVuVGVzdENhbGxJZCA9
IDA7CiB2YXIgY29tcGxldGVUZXN0Q2FsbElkID0gMTsKIAorZnVuY3Rpb24gcnVuQWZ0ZXJJZnJh
bWVJc0xvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGZ1bmN0aW9u
IHN0ZXAoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVkKQorICAgICAg
ICAgICAgc2V0VGltZW91dChzdGVwLCAxMDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
dW5UZXN0KCk7CisgICAgfQorICAgIHNldFRpbWVvdXQoc3RlcCwgMTAwKTsKK30KKwogZnVuY3Rp
b24gcnVuVGVzdCgpCiB7CiAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
Y29udmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi1leHBlY3RlZC50eHQKaW5kZXggODE3OTQzMTExNGI1
MGQwN2U4ZjhiYTgwMTdkYmVhMjIwYWJiYTBkNS4uNWM3MzAyNmZlNjJhNzUzODIxY2Y0NWU1OTVk
YTMyZGZmMjVjMTNkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLWV4cGVjdGVkLnR4
dApAQCAtMTE2LDcgKzExNiw3IEBAIFBhZ2UgcmVsb2FkZWQuCiAgICAgICAgIHRpbWUgOiA8bnVt
YmVyPgogICAgICAgICByZXF1ZXN0IDogewogICAgICAgICAgICAgbWV0aG9kIDogIkdFVCIKLSAg
ICAgICAgICAgIHVybCA6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNl
LXRlc3QyLmpzIgorICAgICAgICAgICAgdXJsIDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvcmVzb3VyY2VzLXRlc3QuanMiCiAgICAgICAgICAgICBoZWFkZXJzIDogPG9iamVjdD4K
ICAgICAgICAgICAgIGhlYWRlcnNTaXplIDogLTEKICAgICAgICAgICAgIGJvZHlTaXplIDogPG51
bWJlcj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLWhhci1jb252ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCmluZGV4IGJkZjBmM2Y3MWJjZjk1NWFmZjg0
YTA3ZmEwNjE5N2RjZGUyM2FkYzEuLmMwNjVlMGQ1ZjI0MjhmNDA3ZDc1YTlmNDFlMzUxNDVmZDRh
MjU0MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLWhhci1jb252ZXJzaW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxodG1s
PgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2UtdGVzdDIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJpbnNw
ZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgogCiA8c2NyaXB0PgpAQCAtMjUsNyArMjUsNyBAQCB2
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIEluc3BlY3RvclRl
c3QucmVsb2FkUGFnZUlmTmVlZGVkKGZ1bmN0aW9uKCkgeworICAgIEluc3BlY3RvclRlc3QucmVs
b2FkUGFnZShmdW5jdGlvbigpIHsKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5ldmFsdWF0ZSgi
ZG9YSFIoKSIsICJjb25zb2xlIiwgZmFsc2UsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYWRk
Q29va2llSGVhZGVyc1RvUmVzb3VyY2UoZmluZFJlc291cmNlQnlVUkwoL2luc3BlY3Rvci10ZXN0
MlwuanMkLykpOwogICAgICAgICAgICAgdmFyIGVudHJpZXMgPSAobmV3IFdlYkluc3BlY3Rvci5I
QVJMb2coKSkuYnVpbGQoKS5lbnRyaWVzOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4
dAppbmRleCAyMmZjZmVlMGIxNjMxODZhNjAyMDU0OGMyMzgxZDE0MThmMDZjYjZhLi42NTk3Mzgy
OTUxYzQyMWYyN2ZkNTUwZTBmZWY5ZDg3MzRiYTZkZmRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJz
LWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCByZXNvdXJjZXMgcGFuZWwg
c2hvd3MgZm9ybSBkYXRhIHBhcmFtZXRlcnMuCiAKIHsKICAgICBwYWdlcmVmIDogImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaT9xdWVyeVBh
cmFtMT1xdWVyeVZhbHVlMSZxdWVyeVBhcmFtMj0iCi0gICAgc3RhcnRlZERhdGVUaW1lIDogPHN0
cmluZz4KKyAgICBzdGFydGVkRGF0ZVRpbWUgOiA8b2JqZWN0PgogICAgIHRpbWUgOiA8bnVtYmVy
PgogICAgIHJlcXVlc3QgOiB7CiAgICAgICAgIG1ldGhvZCA6ICJQT1NUIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy5o
dG1sCmluZGV4IDZkNjEyZDQ4ZGE1ZmZhODVjNTFjYmRjZWY3ZDEwNzlkMzU4ODZiYjEuLjNhNTA1
ODE0NDBiNTk3MDUzZjIzOTgwOWU4OTVkMTAxZDVlNjM3MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXBhcmFtZXRlcnMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJzLmh0bWwK
QEAgLTEsNDIgKzEsMzEgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlLXRlc3RzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy10ZXN0LmpzIj48L3NjcmlwdD4KIAogPHNjcmlwdD4KLWZ1bmN0aW9u
IGRvaXQoKQorZnVuY3Rpb24gc3VibWl0KCkKIHsKLSAgICB3aW5kb3cuc3VibWl0Q2FsbGVkID0g
dHJ1ZTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikuY2xpY2soKTsKIH0K
IAotZnVuY3Rpb24gb25JZnJhbWVMb2FkKCkKK2Z1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICgh
d2luZG93LnN1Ym1pdENhbGxlZCkKLSAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoInN1Ym1pdCgpIik7CisgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLCAiZGlkRmluaXNoTG9h
ZGluZyIsIGR1bXBIQVIpOwogCi0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIGZ1
bmN0aW9uIGR1bXBIQVIoKQogICAgIHsKLSAgICAgICAgZHVtcE9iamVjdChyZXN1bHQsIEhBUk5v
bmRldGVybWluaXN0aWNQcm9wZXJ0aWVzKTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOworICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwoImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaT9xdWVyeVBhcmFt
MT1xdWVyeVZhbHVlMSZxdWVyeVBhcmFtMj0iKTsKKyAgICAgICAgaWYgKHJlc291cmNlKQorICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE9iamVjdChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5
KHJlc291cmNlKS5idWlsZCgpLCBJbnNwZWN0b3JUZXN0LkhBUk5vbmRldGVybWluaXN0aWNQcm9w
ZXJ0aWVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0g
ICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcEZvcm1EYXRhIiwgY2FsbGJh
Y2spOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wRm9ybURhdGEodGVzdENvbnRyb2xsZXIp
Ci17Ci0gICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKCJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9wb3N0LXRhcmdldC5jZ2k/cXVl
cnlQYXJhbTE9cXVlcnlWYWx1ZTEmcXVlcnlQYXJhbTI9Iik7Ci0KLSAgICBpZiAoIXJlc291cmNl
KSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoIk5vIHJlc291cmNlIGZvdW5k
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZShuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJlc291cmNlKS5idWlsZCgpKTsKIH0KIAogPC9z
Y3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgdGhhdCByZXNvdXJjZXMgcGFuZWwgc2hvd3MgZm9ybSBk
YXRhIHBhcmFtZXRlcnMuCiA8L3A+CkBAIC00NSw2ICszNCw2IEBAIFRlc3RzIHRoYXQgcmVzb3Vy
Y2VzIHBhbmVsIHNob3dzIGZvcm0gZGF0YSBwYXJhbWV0ZXJzLgogPGlucHV0IG5hbWU9ImZvcm1Q
YXJhbTIiPgogPGlucHV0IGlkPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCI+CiA8L2Zvcm0+Ci08aWZy
YW1lIG5hbWU9InRhcmdldC1pZnJhbWUiIG9ubG9hZD0ib25JZnJhbWVMb2FkKCk7Ij48L2lmcmFt
ZT4KKzxpZnJhbWUgbmFtZT0idGFyZ2V0LWlmcmFtZSI+PC9pZnJhbWU+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZS10ZXN0cy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRl
c3RzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGQ5NTM2YzI2MTEyNGJhMWU3
ZTYwZTgyMDU3Njg5ZWJhMjlmM2ZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRl
c3RzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotdmFyIEhBUk5vbmRldGVybWlu
aXN0aWNQcm9wZXJ0aWVzID0gewotICAgIHN0YXJ0ZWREYXRlVGltZTogMSwKLSAgICB0aW1lOiAx
LAotICAgIHdhaXQ6IDEsCi0gICAgcmVjZWl2ZTogMSwKLSAgICBoZWFkZXJzOiAxLAotICAgIHRp
bWluZ3M6IDEsCi19OwotCi1mdW5jdGlvbiByZXNvdXJjZVVSTENvbXBhcmVyKHIxLCByMikKLXsK
LSAgICByZXR1cm4gcjEucmVxdWVzdC51cmwubG9jYWxlQ29tcGFyZShyMi5yZXF1ZXN0LnVybCk7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29tbWFuZC1saW5lLWFwaS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbW1hbmQtbGluZS1hcGkuaHRtbAppbmRleCAz
NTYzNDAyYWNiZTQ5ZDg4MTFiNjM5YjRkZjUyYzBlZDg3YTVhNjAyLi5lYjgwNzAwMGNhMzE2MjNj
ZWVkZDQ2ZWRhOTRjNjQyMGRmMzc5NWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29tbWFuZC1saW5lLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb21t
YW5kLWxpbmUtYXBpLmh0bWwKQEAgLTEsMTggKzEsMTEgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAogdmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgSW5zcGVjdG9yVGVz
dC5leHBhbmRET01TdWJ0cmVlQW5kUnVuKG51bGwsIHN0ZXAxKTsKLQotICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0RWxlbWVudEFuZFJ1bigi
Zm9vIiwgc3RlcDIpOwotICAgIH0KLQogICAgIHZhciBleHByZXNzaW9ucyA9IFsKICAgICAgICAg
IiQwLnRvU3RyaW5nKCkiLAogICAgICAgICAia2V5cyhbMyw0XSkudG9TdHJpbmcoKSIsCkBAIC0y
MSw3ICsxNCw5IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAiJCQoJ3AjZm9vJyku
dG9TdHJpbmcoKSIKICAgICBdOwogCi0gICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIEluc3BlY3Rv
clRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiZm9vIiwgc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3Rl
cDEobm9kZSkKICAgICB7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbnMubGVuZ3RoKSB7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwpAQCAtMjksNyArMjQsNyBAQCB2
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgfQogICAgICAgICB2YXIgZXhwcmVzc2lvbiA9
IGV4cHJlc3Npb25zWzBdOwogICAgICAgICBleHByZXNzaW9ucy5zcGxpY2UoMCwgMSk7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKGV4cHJlc3Npb24sIHN0
ZXAyKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZUFuZER1bXAoZXhw
cmVzc2lvbiwgc3RlcDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUtYXBpLW9uLWNhbGwtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWwKaW5kZXggYjI5NjBkYTc3ZTFjZmVm
ODNmZDYxYzNjOGQ3NjI1MjVlNTJiNWJmNS4uY2YwM2YwODJjM2Y1Mzk5ZWMzOWM2ZDZkYTA3OTkz
ZTkxNGI1ZGFiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtYXBp
LW9uLWNhbGwtZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1h
cGktb24tY2FsbC1mcmFtZS5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHdpbmRvdy5pbnNwZWN0ID0g
Imluc3BlY3QiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtYXNz
ZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1hc3NlcnQuaHRtbAppbmRl
eCA1ZDI5OGE0NzQ4OTdhZWI2NWFjOWQ2MTg2ZTQ2MmFmMjY1ZmMwMWU0Li5hOWQxNTEyOTBiNzA2
YTg4NjllOTU2MjVmYjEyNjYwMWI3MzVjYjU2IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1hc3NlcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1hc3NlcnQuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGIoKQpA
QCAtMTMsMzMgKzEzLDI3IEBAIGZ1bmN0aW9uIGIoKQogZnVuY3Rpb24gYSgpCiB7CiAgICAgYigp
OwotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2V4cGFuZENvbnNvbGVNZXNz
YWdlcyIpOwotICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKIH0KIAotZnVuY3Rpb24gZG9pdCgp
CitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBzZXRUaW1lb3V0KGEsIDApOwotfQotCi1mdW5jdGlv
biBmcm9udGVuZF9leHBhbmRDb25zb2xlTWVzc2FnZXMoKQotewotICAgIHZhciBtZXNzYWdlcyA9
IFdlYkluc3BlY3Rvci5jb25zb2xlLm1lc3NhZ2VzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWVzc2FnZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBtZXNzYWdlc1tp
XS50b01lc3NhZ2VFbGVtZW50KCk7Ci0gICAgICAgIHZhciBub2RlID0gZWxlbWVudDsKLSAgICAg
ICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgICAgIGlmIChub2RlLnRyZWVFbGVtZW50Rm9yVGVz
dCkKLSAgICAgICAgICAgICAgICBub2RlLnRyZWVFbGVtZW50Rm9yVGVzdC5leHBhbmQoKTsKLSAg
ICAgICAgICAgIG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUoZWxlbWVudCk7CisgICAgdmFy
IGNhbGxDb3VudCA9IDA7CisgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgIHsKKyAgICAgICAg
aWYgKCsrY2FsbENvdW50ID09PSAyKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFu
ZENvbnNvbGVNZXNzYWdlcygpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wQ29uc29s
ZU1lc3NhZ2VzKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwog
ICAgICAgICB9CiAgICAgfQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInNldFRp
bWVvdXQoYSwgMCkiKTsKKyAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwgY2FsbGJhY2ssIHRydWUpOwog
fQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgY29uc29sZS5hc3NlcnQoKSB3
aWxsIGR1bXAgYSBtZXNzYWdlIGFuZCBzdGFjayB0cmFjZSB3aXRoIHNvdXJjZSBVUkxzIGFuZCBs
aW5lIG51bWJlcnMuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1jbGVhci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtY2xlYXIuaHRt
bAppbmRleCBkODM5NWQ2Y2U1ZTgxMTdkZDBlM2RlZTk3OGFjMzU5NWVkYjJjYjdmLi5kYTA3MmE0
OTlmYTg2OTU1OTk2ZTM1MGNlNzUxYTZlNDVjY2M5NTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS1jbGVhci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWNsZWFyLmh0bWwKQEAgLTEsMjkgKzEsMzkgQEAKIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVz
dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9u
IGRvaXQoKQoteworZnVuY3Rpb24gbG9nKCkgeworICAgIC8vIEZpbGwgY29uc29sZS4KICAgICBj
b25zb2xlLmxvZygib25lIik7CiAgICAgY29uc29sZS5sb2coInR3byIpOwogICAgIGNvbnNvbGUu
bG9nKCJ0aHJlZSIpOworfQorCitsb2coKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEJlZm9yZSBjbGVhciA9PT0iKTsgCisgICAgSW5z
cGVjdG9yVGVzdC5kdW1wQ29uc29sZU1lc3NhZ2VzKCk7CiAKLSAgICBvdXRwdXQoIj09PSBCZWZv
cmUgY2xlYXIgPT09Iik7IAotICAgIGR1bXBDb25zb2xlTWVzc2FnZXModHJ1ZSk7CisgICAgV2Vi
SW5zcGVjdG9yLmNvbnNvbGUucmVxdWVzdENsZWFyTWVzc2FnZXMoKTsKKyAgICAKICAgICBmdW5j
dGlvbiBjYWxsYmFjaygpCiAgICAgewotICAgICAgICBvdXRwdXQoIj09PSBBZnRlciBjbGVhciA9
PT0iKTsgCi0gICAgICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBjbGVhciA9PT0iKTsgCisgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcENvbnNvbGVNZXNzYWdlcygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJXZWJJbnNwZWN0
b3IuY29uc29sZS5yZXF1ZXN0Q2xlYXJNZXNzYWdlcygpIiwgY2FsbGJhY2spOworICAgIEluc3Bl
Y3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjYWxsYmFjayk7CiB9CiAKIDwvc2Ny
aXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgdGhhdCBjb25zb2xlIGlzIGNsZWFyZWQgdXBvbiByZXF1
ZXN0Q2xlYXJNZXNzYWdlcyBjYWxsLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUtY29tbWFuZC1jbGVhci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS1jb21tYW5kLWNsZWFyLWV4cGVjdGVkLnR4dAppbmRleCA4NDhlOGMy
MjJiYjBhZTZlNDNjOTVmY2RiMTQxNGQ3NjY5ZjY3MzFkLi4yM2VlYzEyNjY3ZTA5NzQyN2IyNGQx
ZWRlMDBlMWViNmU0ODRhN2I2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1jb21tYW5kLWNsZWFyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS1jb21tYW5kLWNsZWFyLWV4cGVjdGVkLnR4dApAQCAtOCw0ICs4LDUgQEAgY29u
c29sZS1jb21tYW5kLWNsZWFyLmh0bWw6OW9uZQogY29uc29sZS1jb21tYW5kLWNsZWFyLmh0bWw6
MTB0d28KIGNvbnNvbGUtY29tbWFuZC1jbGVhci5odG1sOjExdGhyZWUKID09PSBBZnRlciBjbGVh
ciA9PT0KK3VuZGVmaW5lZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1jb21tYW5kLWNsZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1j
b21tYW5kLWNsZWFyLmh0bWwKaW5kZXggNjM5YjBiNDRkNTVjMzc1YzJmNTJjMGI2NGZjYjUyMGU0
OTI3ZTk3NC4uMTg0M2NiZTU3MjBjMzk0NjgyYWRkYjkyZjYwNGRiOTcwY2E1Y2VlNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtY29tbWFuZC1jbGVhci5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWNvbW1hbmQtY2xlYXIuaHRtbApAQCAt
MSwzMSArMSwzOSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCi17CitmdW5jdGlvbiBsb2co
KSB7CisgICAgLy8gRmlsbCBjb25zb2xlLgogICAgIGNvbnNvbGUubG9nKCJvbmUiKTsKICAgICBj
b25zb2xlLmxvZygidHdvIik7CiAgICAgY29uc29sZS5sb2coInRocmVlIik7Cit9CisKK2xvZygp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9
PT0gQmVmb3JlIGNsZWFyID09PSIpOyAKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xlTWVz
c2FnZXMoKTsKIAotICAgIG91dHB1dCgiPT09IEJlZm9yZSBjbGVhciA9PT0iKTsgCi0gICAgZHVt
cENvbnNvbGVNZXNzYWdlcyh0cnVlKTsKICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCiAgICAgewot
ICAgICAgICBvdXRwdXQoIj09PSBBZnRlciBjbGVhciA9PT0iKTsgCi0gICAgICAgIGR1bXBDb25z
b2xlTWVzc2FnZXMoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRl
ciBjbGVhciA9PT0iKTsgCisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVNZXNzYWdl
cygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKCdjbGVhcigp
JywgJycsIHRydWUsIGZ1bmN0aW9uKCkge30pIiwgY2FsbGJhY2spOworICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJbkNvbnNvbGUoImNsZWFyKCkiLCBjYWxsYmFjayk7CiB9CiAKIDwvc2NyaXB0
PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KIDxwPgotVGVzdHMgdGhhdCBjb25zb2xlIGlzIGNsZWFyZWQgdXBvbiBjbGVhcigp
IGV2YWwgaW4gY29uc29sZS4KKyAgICBUZXN0cyB0aGF0IGNvbnNvbGUgaXMgY2xlYXJlZCB1cG9u
IGNsZWFyKCkgZXZhbCBpbiBjb25zb2xlLgogPC9wPgogCiA8L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0bWwKaW5kZXggNjg4NTBjZDlmMDg3NThk
ZjZiZTBjY2U5ZmFjM2FlZGJiOGE2OGMzNy4uYTcwOGQxNGMzMjQwYmQ5NzA3ZWYyZjY1ZDA3MDg0
OTQzOTk0NTA3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGly
LWdsb2JhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpci1nbG9i
YWwuaHRtbApAQCAtMSwyNyArMSwxNyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gZG9pdCgpCiB7CiAg
ICAgY29uc29sZS5kaXIod2luZG93KTsKLQotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkK
LSAgICB7Ci0gICAgICAgIGR1bXBPYmplY3QocmVzdWx0KTsKLSAgICAgICAgbm90aWZ5RG9uZSgp
OwotICAgIH0KLQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2V4cGFuZEFu
ZER1bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7CisgICAgcnVuVGVzdCgpOwogfQogCi1m
dW5jdGlvbiBmcm9udGVuZF9leHBhbmRBbmREdW1wQ29uc29sZU1lc3NhZ2VzKHRlc3RDb250cm9s
bGVyKQorZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgLy8gTmVlZCB0ZXN0IHRvIGJlIGFzeW5jIHRv
IGV4cGFuZCBjb25zb2xlIG9iamVjdHMuCi0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotCiAgICAgSW5zcGVjdG9yQmFja2VuZC5ldmFsdWF0ZSgid2luZG93IiwgImNvbnNvbGUi
LCBmYWxzZSwgZXZhbENhbGxiYWNrKTsKIAogICAgIGZ1bmN0aW9uIGV2YWxDYWxsYmFjayhyZXN1
bHQpCkBAIC0zNSwyMSArMjUsMjIgQEAgZnVuY3Rpb24gZnJvbnRlbmRfZXhwYW5kQW5kRHVtcENv
bnNvbGVNZXNzYWdlcyh0ZXN0Q29udHJvbGxlcikKICAgICBmdW5jdGlvbiBnZXRQcm9wZXJ0aWVz
Q2FsbGJhY2socHJvcGVydGllcykKICAgICB7CiAgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJ
bnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uQ29tcGFyZVByb3BlcnRpZXMpOwotICAg
ICAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgICAgIHZhciBnb2xkZW4gPSB7ICJ3aW5kb3ciOiAx
LCAiZG9jdW1lbnQiOiAxLCAiZXZhbCI6IDEsICJjb25zb2xlIjogMSwgImZyYW1lcyI6IDEsICJB
cnJheSI6IDEsICJkb2l0IjogMSB9OyAKKyAgICAgICAgdmFyIHJlc3VsdCA9IHt9OwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICAgIHZhciBuYW1lID0gcHJvcGVydGllc1tpXS5uYW1lOwogICAgICAgICAgICAgaWYgKGdvbGRl
bltuYW1lXSkKICAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSAxOwogICAgICAgICB9Ci0g
ICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QocmVzdWx0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKICAgICB9CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9
Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0iZG9pdCgpIj4KIDxwPgogVGVzdHMgdGhhdCBjb25z
b2xlIGR1bXBzIGdsb2JhbCBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzLgogPC9wPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbAppbmRleCAxOTJmNzEwZDU0MDFjMWQyMTMxZGY1M2M4
NDk4MjNiN2E0NGE0NDVlLi42NmY1OGI4NWNjODA4ZGFjMDE0NTE5NDU1YWQzNDU0MzI3MGMyZjU5
IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbApAQCAtMSwzNyArMSwxOSBA
QAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiBvbmxvYWQoKQogewogICAgIGNv
bnNvbGUuZGlyKFsidGVzdDEiLCAidGVzdDIiXSk7CiAgICAgY29uc29sZS5kaXIoZG9jdW1lbnQu
Y2hpbGROb2Rlcyk7CiAgICAgY29uc29sZS5kaXIoZG9jdW1lbnQuZXZhbHVhdGUoIi8vaGVhZCIs
IGRvY3VtZW50LCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVFlQRSwgbnVsbCkpOwotCi0gICAgZXhw
YW5kQW5kRHVtcENvbnNvbGVNZXNzYWdlcygpOwotfQotCi1mdW5jdGlvbiBleHBhbmRBbmREdW1w
Q29uc29sZU1lc3NhZ2VzKG5vTm90aWZ5RG9uZSkgewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJl
c3VsdCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldLnRpdGxlKTsKLSAgICAgICAgICAg
IHZhciBwcm9wZXJ0aWVzID0gcmVzdWx0W2ldLnByb3BlcnRpZXM7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBqID0gMDsgcHJvcGVydGllcyAmJiBqIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraikKLSAg
ICAgICAgICAgICAgICBvdXRwdXQoIiAgICAiICsgcHJvcGVydGllc1tqXS5uYW1lICsgIiA9ICIg
KyBwcm9wZXJ0aWVzW2pdLnZhbHVlLl9kZXNjcmlwdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFub05vdGlmeURvbmUpCi0gICAgICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAg
IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2V4cGFuZEFuZER1bXBDb25zb2xlTWVz
c2FnZXMiLCBjYWxsYmFjayk7CisgICAgcnVuVGVzdCgpOwogfQogCi1mdW5jdGlvbiBmcm9udGVu
ZF9leHBhbmRBbmREdW1wQ29uc29sZU1lc3NhZ2VzKHRlc3RDb250cm9sbGVyKQorZnVuY3Rpb24g
dGVzdCgpCiB7Ci0gICAgLy8gTmVlZCB0ZXN0IHRvIGJlIGFzeW5jIHRvIGV4cGFuZCBjb25zb2xl
IG9iamVjdHMuCi0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHZhciBt
ZXNzYWdlcyA9IFdlYkluc3BlY3Rvci5jb25zb2xlLm1lc3NhZ2VzOwogICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBt
ZXNzYWdlc1tpXS50b01lc3NhZ2VFbGVtZW50KCk7CkBAIC00NiwxNiArMjgsMjMgQEAgZnVuY3Rp
b24gZnJvbnRlbmRfZXhwYW5kQW5kRHVtcENvbnNvbGVNZXNzYWdlcyh0ZXN0Q29udHJvbGxlcikK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rp
c3BhdGNoZXMoZnVuY3Rpb24oKSB7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdE
aXNwYXRjaGVzKGR1bXBDb25zb2xlTWVzc2FnZXMpOworCisgICAgZnVuY3Rpb24gZHVtcENvbnNv
bGVNZXNzYWdlcygpCisgICAgewogICAgICAgICB2YXIgbWVzc2FnZXMgPSBXZWJJbnNwZWN0b3Iu
Y29uc29sZS5tZXNzYWdlczsKICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIg
c2VjdGlvbiA9IG1lc3NhZ2VzW2ldLnNlY3Rpb247Ci0gICAgICAgICAgICBpZiAoc2VjdGlvbikK
LSAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7IHRpdGxlOiBzZWN0aW9uLnRpdGxlRWxlbWVu
dC50ZXh0Q29udGVudCwgcHJvcGVydGllczogc2VjdGlvbi5wcm9wZXJ0aWVzRm9yVGVzdH0pOwor
ICAgICAgICAgICAgaWYgKHNlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChzZWN0aW9uLnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCk7CisgICAgICAgICAg
ICAgICAgdmFyIHByb3BlcnRpZXMgPSBzZWN0aW9uLnByb3BlcnRpZXNGb3JUZXN0OworICAgICAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBwcm9wZXJ0aWVzICYmIGogPCBwcm9wZXJ0aWVzLmxl
bmd0aDsgKytqKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
ICAgICIgKyBwcm9wZXJ0aWVzW2pdLm5hbWUgKyAiID0gIiArIHByb3BlcnRpZXNbal0udmFsdWUu
X2Rlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7Ci0gICAgfSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpcnhtbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwKaW5kZXggYzdlZWVmN2VlZGE1OTEwODgxZGYzYTIz
YTkzOTgzZWNiNjY1NGQ2Yi4uNDE1NDM5ZGYwYjRlNDI1ODA3Zjk0ZmEyMTY5NzBmZGU2ODRlN2Y5
YSAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwKQEAgLTEsMTAg
KzEsMTAgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gb25sb2FkKCkKIHsK
ICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAg
ICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpKTsKQEAg
LTE0LDkgKzE0LDE0IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIGNvbnNvbGUuZGlyeG1sKGZyYWdt
ZW50LmZpcnN0Q2hpbGQpOwogICAgIGNvbnNvbGUubG9nKFtmcmFnbWVudC5maXJzdENoaWxkXSk7
CiAKLSAgICBkdW1wQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgcnVuVGVzdCgpOwogfQogCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xlTWVzc2FnZXMoKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworfQogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWV2YWwtZ2xvYmFs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1ldmFsLWdsb2JhbC5odG1sCmlu
ZGV4IDNmZWE3NzI4YjM1Mjc2NWFmNTE5ZGFkMWFmZDhkNWQwZDQyZmM1N2IuLmRkYWU2NDE5NmI2
ZDk4MDdlNDNmOGI1M2NlOWQ3YjlhN2EwYmFkOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLWV2YWwtZ2xvYmFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUtZXZhbC1nbG9iYWwuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHZh
ciBmb28gPSAnZm9vVmFsdWUnOwpAQCAtOSwyNyArOSwyNiBAQCB2YXIgYmFyID0gewogICAgIGE6
ICdiJwogfTsKIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0RXZhbEdsb2JhbCIsIGZ1bmN0aW9uKCkg
ewotICAgICAgICBkdW1wQ29uc29sZU1lc3NhZ2VzKCk7Ci0gICAgfSk7Ci19CisgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgiZm9vIiwgc3RlcDEpOwogCi1mdW5jdGlvbiBmcm9u
dGVuZF90ZXN0RXZhbEdsb2JhbChsYXlvdXRUZXN0Q29udHJvbGxlcikKLXsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNv
bnNvbGUoImZvbyIsIGZ1bmN0aW9uKCkgewotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29u
c29sZSgiYmFyMSIsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVw
MSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJiYXIx
Iiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVNZXNzYWdlcygpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxi
b2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBU
ZXN0cyB0aGF0IHNpbXBsZSBldmFsdWF0aW9ucyBtYXkgYmUgcGVyZm9ybWVkIGluIHRoZSBjb25z
b2xlIG9uIGdsb2JhbCBvYmplY3QuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1ldmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1l
dmFsLmh0bWwKaW5kZXggZTZjMGJhZmJjMTkzZmM0YTU3MjEwNjk0OWIxMGY2N2I4NzNlYzUyMS4u
Y2Q1YzkxMmYzNmUzMDJkYmE2YWY5MWVlYTZjMjY5MDI2YzE5MDYyOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZXZhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLWV2YWwuaHRtbApAQCAtMSwyMCArMSwyNCBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVu
Y3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVj
dG9yKCJmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgnMSsyJywgZnVuY3Rpb24oKSB7fSk7Iiwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKLSAgICB9KTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCIxKzIiLCBzdGVwMik7CisKKyAgICBm
dW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xl
TWVzc2FnZXMoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9
CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgdGhhdCBzaW1wbGUgZXZhbHVhdGlv
bnMgbWF5IGJlIHBlcmZvcm1lZCBpbiB0aGUgY29uc29sZS4KIDwvcD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhw
ZWN0ZWQudHh0CmluZGV4IGVlMjQ0ODkxOWM2NjNlNjk4MmE3ZDU4MmY0MmZmMDRmZjZhNjQ4MWMu
LmY1ZGQxYjEwZmEwMzU3NWJkYjQ3Y2FmODY2YzYxY2ZkZGM5OTk3MjcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25z
LWV4cGVjdGVkLnR4dApAQCAtOCwxMSArOCwxMSBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDE6
IDEsMiwKIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0cyBIVE1MIENvbGxlY3Rpb25z
IGFuZCBOb2RlTGlzdHMuCiAKIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MTVbPHNl
bGVjdCBpZD0ic2VsIiBuYW1lPSJzZWwiPuKApjwvc2VsZWN0Pl0KLWNvbnNvbGUtZm9ybWF0LWNv
bGxlY3Rpb25zLmh0bWw6MTlbPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4sIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzIj48L3NjcmlwdD4sIDxzY3JpcHQ+4oCmPC9zY3JpcHQ+
XQorY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxOVs8c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4sIDxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanMiPjwvc2NyaXB0Piwg
PHNjcmlwdD7igKY8L3NjcmlwdD5dCiBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjIz
WzxvcHRpb24gdmFsdWU9IjEiPm9uZTwvb3B0aW9uPiwgPG9wdGlvbiB2YWx1ZT0iMiI+dHdvPC9v
cHRpb24+XQotY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyN1s8aHRtbD7igKY8L2h0
bWw+LCA8aGVhZD7igKY8L2hlYWQ+LCA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PiwgPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuanMiPjwvc2NyaXB0PiwgPHNjcmlwdD7igKY8L3Nj
cmlwdD4sIDxib2R5IG9ubG9hZD0ib25sb2FkKCkiPuKApjwvYm9keT4sIDxwPgorY29uc29sZS1m
b3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyN1s8aHRtbD7igKY8L2h0bWw+LCA8aGVhZD7igKY8L2hl
YWQ+LCA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qy
LmpzIj48L3NjcmlwdD4sIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXRlc3QuanMiPjwvc2NyaXB0PiwgPHNjcmlwdD7igKY8L3NjcmlwdD4sIDxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPuKApjwvYm9keT4sIDxwPgogVGVzdHMgdGhhdCBjb25zb2xlIG5pY2VseSBm
b3JtYXRzIEhUTUwgQ29sbGVjdGlvbnMgYW5kIE5vZGVMaXN0cy4KLTwvcD4sIDxkaXYgc3R5bGU9
ImRpc3BsYXk6bm9uZSI+4oCmPC9kaXY+LCA8Zm9ybSBpZD0iZiI+4oCmPC9mb3JtPiwgPHNlbGVj
dCBpZD0ic2VsIiBuYW1lPSJzZWwiPuKApjwvc2VsZWN0PiwgPG9wdGlvbiB2YWx1ZT0iMSI+b25l
PC9vcHRpb24+LCA8b3B0aW9uIHZhbHVlPSIyIj50d288L29wdGlvbj4sIDxpbnB1dCB0eXBlPSJy
YWRpbyIgbmFtZT0ieCIgdmFsdWU9IngxIj4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIg
dmFsdWU9IngyIj4sIDxkaXYgaWQ9Im91dHB1dCIgc3R5bGU9IndoaXRlLXNwYWNlOiBwcmU7ICI+
PC9kaXY+XQorPC9wPiwgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj7igKY8L2Rpdj4sIDxmb3Jt
IGlkPSJmIj7igKY8L2Zvcm0+LCA8c2VsZWN0IGlkPSJzZWwiIG5hbWU9InNlbCI+4oCmPC9zZWxl
Y3Q+LCA8b3B0aW9uIHZhbHVlPSIxIj5vbmU8L29wdGlvbj4sIDxvcHRpb24gdmFsdWU9IjIiPnR3
bzwvb3B0aW9uPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlu
cHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KIGNvbnNvbGUtZm9ybWF0LWNv
bGxlY3Rpb25zLmh0bWw6MzFbPHNlbGVjdCBpZD0ic2VsIiBuYW1lPSJzZWwiPuKApjwvc2VsZWN0
PiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0IHR5cGU9
InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25z
Lmh0bWw6MzVbPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0
IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLmh0bWw6NDFbMSwgQXJyYXlbMl1dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCmluZGV4IDNjMWQwOGVkNGFkOTEz
MTcwODcxOTZjOTE4MzU1N2IxMGU5MjBkODAuLjVmYjAzNzg3ZjI5ZmM4MGIwZWJiYjljZjJlZjI2
OTJjNjRiZTQzMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZv
cm1hdC1jb2xsZWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
LWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCkBAIC0xLDEwICsxLDEwIEBACiA8aHRtbD4KIDxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xl
LXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5j
dGlvbiBkb2l0KCkKK2Z1bmN0aW9uIG9ubG9hZCgpCiB7CiAgICAgdmFyIGZvcm1FbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiKTsKICAgICB2YXIgc2VsZWN0RWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWwiKTsKQEAgLTQwLDkgKzQwLDE0IEBAIGZ1bmN0aW9u
IGRvaXQoKQogICAgIGFycmF5WC5wdXNoKGFycmF5WSk7CiAgICAgY29uc29sZS5sb2coYXJyYXlY
KTsKIAotICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKKyAgICBydW5UZXN0KCk7CiB9CiAKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVNZXNzYWdlcygp
OworICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cit9CiA8L3NjcmlwdD4KIDwvaGVh
ZD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1leHBlY3Rl
ZC50eHQKaW5kZXggNWJhNTZmMmZhZDRmNTNjNDdjNDQ5YjhlMDQ2YjZjNTc0NzViZGExMi4uOTk0
ZmIwMjJkMDJkNDUzOGQ2ZmI5MTc4ZmYyYTAyNTc1ZDJmYTZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0CkBAIC00LDQwICs0LDQw
IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogT2JqZWN0ICVvCiBDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjA6IHRlc3QsdGVzdDIsLCx0ZXN0NAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiAl
bwogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIyOiAlTwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYw
OiAvXnVybFwoXHMqKD86KD86Iig/OlteXFxcIl18KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSoi
fCcoPzpbXlxcXCddfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqJyl8KD86WyEjJCUmKi1+XHdd
fCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqKVxzKlwpL2kKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSA2MTogL151cmxcKFxzKig/Oig/OiIoPzpbXlxcXCJdfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwu
KSkqInwnKD86W15cXFwnXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKicpfCg/OlshIyQlJiot
flx3XXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKilccypcKS9pCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNjA6IC9mb29cXGJhclxzYmF6L2kKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MTogL2Zv
b1xcYmFyXHNiYXovaQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiB0ZXN0Ci1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjE6IHRlc3QKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogdGVzdCBuYW1l
ZCAidGVzdCIKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MTogdGVzdCBuYW1lZCAidGVzdCIKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA2MDogRXJyb3I6IAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYx
OiBFcnJvcjogCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IFtvYmplY3QgSFRNTEJvZHlFbGVt
ZW50XQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYxOiBbb2JqZWN0IEhUTUxCb2R5RWxlbWVudF0K
LUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfQotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDYxOiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9Ci1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjA6IGZ1bmN0aW9uICgpIHsKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1
MzogL151cmxcKFxzKig/Oig/OiIoPzpbXlxcXCJdfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkq
InwnKD86W15cXFwnXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKicpfCg/OlshIyQlJiotflx3
XXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKilccypcKS9pCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNTQ6IC9edXJsXChccyooPzooPzoiKD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xc
LikpKiJ8Jyg/OlteXFxcJ118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYq
LX5cd118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSopXHMqXCkvaQorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDUzOiAvZm9vXFxiYXJcc2Jhei9pCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IC9m
b29cXGJhclxzYmF6L2kKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1MzogdGVzdAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDU0OiB0ZXN0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTM6IHRlc3QgbmFt
ZWQgInRlc3QiCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IHRlc3QgbmFtZWQgInRlc3QiCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNTM6IEVycm9yOiAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1
NDogRXJyb3I6IAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDUzOiBbb2JqZWN0IEhUTUxCb2R5RWxl
bWVudF0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1NDogW29iamVjdCBIVE1MQm9keUVsZW1lbnRd
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDE7IH0KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA1NDogZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfQorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDUzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJldHVybiAyOwogICAg
IH0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MTogZnVuY3Rpb24gKCkgeworQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDU0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJldHVybiAyOwogICAgIH0KLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA2MDogMC4xMgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYxOiAw
LjEyCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IGh0dHA6Ly93ZWJraXQub3JnLwotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDYxOiBodHRwOi8vd2Via2l0Lm9yZy8KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSA2MDogbnVsbAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYxOiAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSA2MDogdW5kZWZpbmVkCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjE6IAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDYwOiBbb2JqZWN0IEF0dHJdCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
NjE6IFtvYmplY3QgQXR0cl0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogW29iamVjdCBBdHRy
XQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYxOiBbb2JqZWN0IEF0dHJdCi1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgNjA6IFtvYmplY3QgQXR0cl0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MTogW29i
amVjdCBBdHRyXQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDUzOiAwLjEyCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNTQ6IDAuMTIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1MzogaHR0cDovL3dlYmtp
dC5vcmcvCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IGh0dHA6Ly93ZWJraXQub3JnLworQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDUzOiBudWxsCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDUzOiB1bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSA1NDogCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTM6IFtvYmplY3QgQXR0cl0KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA1NDogW29iamVjdCBBdHRyXQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDUz
OiBbb2JqZWN0IEF0dHJdCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IFtvYmplY3QgQXR0cl0K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA1MzogW29iamVjdCBBdHRyXQorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDU0OiBbb2JqZWN0IEF0dHJdCiBUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1w
cyBwcm9wZXIgbWVzc2FnZXMuCiAKIGNvbnNvbGUtZm9ybWF0Lmh0bWw6MTJNZXNzYWdlIGZvcm1h
dCBudW1iZXIgMSwgMiBhbmQgMy41CkBAIC00Niw1NSArNDYsNzAgQEAgY29uc29sZS1mb3JtYXQu
aHRtbDoxNE9iamVjdCBPYmplY3QKIGNvbnNvbGUtZm9ybWF0Lmh0bWw6MjBbInRlc3QiLCAidGVz
dDIiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgInRlc3Q0Il0KIGNvbnNvbGUtZm9ybWF0Lmh0bWw6
MjFbInRlc3QiLCAidGVzdDIiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgInRlc3Q0Il0KIGNvbnNv
bGUtZm9ybWF0Lmh0bWw6MjJBcnJheVs1XQotY29uc29sZS1mb3JtYXQuaHRtbDo2MC9edXJsXChc
cyooPzooPzoiKD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKiJ8Jyg/OlteXFxc
J118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYqLX5cd118KD86XFxbXGRh
LWZdezEsNn1ccz98XC4pKSopXHMqXCkvaQotY29uc29sZS1mb3JtYXQuaHRtbDo2MVsvXnVybFwo
XHMqKD86KD86Iig/OlteXFxcIl18KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSoifCcoPzpbXlxc
XCddfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqJyl8KD86WyEjJCUmKi1+XHddfCg/OlxcW1xk
YS1mXXsxLDZ9XHM/fFwuKSkqKVxzKlwpL2ldCitjb25zb2xlLWZvcm1hdC5odG1sOjUzL151cmxc
KFxzKig/Oig/OiIoPzpbXlxcXCJdfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqInwnKD86W15c
XFwnXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKicpfCg/OlshIyQlJiotflx3XXwoPzpcXFtc
ZGEtZl17MSw2fVxzP3xcLikpKilccypcKS9pCitjb25zb2xlLWZvcm1hdC5odG1sOjU0Wy9edXJs
XChccyooPzooPzoiKD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKiJ8Jyg/Olte
XFxcJ118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYqLX5cd118KD86XFxb
XGRhLWZdezEsNn1ccz98XC4pKSopXHMqXCkvaV0KK2dsb2JhbHNbMF0KIC9edXJsXChccyooPzoo
PzoiKD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKiJ8Jyg/OlteXFxcJ118KD86
XFxbXGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYqLX5cd118KD86XFxbXGRhLWZdezEs
Nn1ccz98XC4pKSopXHMqXCkvaQotY29uc29sZS1mb3JtYXQuaHRtbDo2MC9mb29cXGJhclxzYmF6
L2kKLWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjFbL2Zvb1xcYmFyXHNiYXovaV0KK2NvbnNvbGUtZm9y
bWF0Lmh0bWw6NTMvZm9vXFxiYXJcc2Jhei9pCitjb25zb2xlLWZvcm1hdC5odG1sOjU0Wy9mb29c
XGJhclxzYmF6L2ldCitnbG9iYWxzWzFdCiAvZm9vXFxiYXJcc2Jhei9pCi1jb25zb2xlLWZvcm1h
dC5odG1sOjYwdGVzdAotY29uc29sZS1mb3JtYXQuaHRtbDo2MVsidGVzdCJdCitjb25zb2xlLWZv
cm1hdC5odG1sOjUzdGVzdAorY29uc29sZS1mb3JtYXQuaHRtbDo1NFsidGVzdCJdCitnbG9iYWxz
WzJdCiAidGVzdCIKLWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjB0ZXN0IG5hbWVkICJ0ZXN0IgotY29u
c29sZS1mb3JtYXQuaHRtbDo2MVsidGVzdCBuYW1lZCAidGVzdCIiXQorY29uc29sZS1mb3JtYXQu
aHRtbDo1M3Rlc3QgbmFtZWQgInRlc3QiCitjb25zb2xlLWZvcm1hdC5odG1sOjU0WyJ0ZXN0IG5h
bWVkICJ0ZXN0IiJdCitnbG9iYWxzWzNdCiAidGVzdCBuYW1lZCAidGVzdCIiCi1jb25zb2xlLWZv
cm1hdC5odG1sOjYwRXJyb3I6IAotY29uc29sZS1mb3JtYXQuaHRtbDo2MVtFcnJvcjogXQorY29u
c29sZS1mb3JtYXQuaHRtbDo1M0Vycm9yOiAKK2NvbnNvbGUtZm9ybWF0Lmh0bWw6NTRbRXJyb3I6
IF0KK2dsb2JhbHNbNF0KIEVycm9yOiAKLWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjA8Ym9keSBvbmxv
YWQ9Im9ubG9hZCgpIj7igKY8L2JvZHk+Ci1jb25zb2xlLWZvcm1hdC5odG1sOjYxWzxib2R5IG9u
bG9hZD0ib25sb2FkKCkiPuKApjwvYm9keT5dCitjb25zb2xlLWZvcm1hdC5odG1sOjUzPGJvZHkg
b25sb2FkPSJvbmxvYWQoKSI+4oCmPC9ib2R5PgorY29uc29sZS1mb3JtYXQuaHRtbDo1NFs8Ym9k
eSBvbmxvYWQ9Im9ubG9hZCgpIj7igKY8L2JvZHk+XQorZ2xvYmFsc1s1XQogPGJvZHkgb25sb2Fk
PSJvbmxvYWQoKSI+4oCmPC9ib2R5PgotY29uc29sZS1mb3JtYXQuaHRtbDo2MGZ1bmN0aW9uICgp
IHsgcmV0dXJuIDE7IH0KLWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjFbZnVuY3Rpb24gKCkgeyByZXR1
cm4gMTsgfV0KK2NvbnNvbGUtZm9ybWF0Lmh0bWw6NTNmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9
Citjb25zb2xlLWZvcm1hdC5odG1sOjU0W2Z1bmN0aW9uICgpIHsgcmV0dXJuIDE7IH1dCitnbG9i
YWxzWzZdCiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9Ci1jb25zb2xlLWZvcm1hdC5odG1sOjYw
ZnVuY3Rpb24gKCkgeworY29uc29sZS1mb3JtYXQuaHRtbDo1M2Z1bmN0aW9uICgpIHsKICAgICAg
ICAgcmV0dXJuIDI7CiAgICAgfQotY29uc29sZS1mb3JtYXQuaHRtbDo2MVtmdW5jdGlvbiAoKSB7
Citjb25zb2xlLWZvcm1hdC5odG1sOjU0W2Z1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuIDI7
CiAgICAgfV0KK2dsb2JhbHNbN10KIGZ1bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuIDI7CiAg
ICAgfQotY29uc29sZS1mb3JtYXQuaHRtbDo2MDAuMTIKLWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjFb
MC4xMl0KK2NvbnNvbGUtZm9ybWF0Lmh0bWw6NTMwLjEyCitjb25zb2xlLWZvcm1hdC5odG1sOjU0
WzAuMTJdCitnbG9iYWxzWzhdCiAwLjEyCi1jb25zb2xlLWZvcm1hdC5odG1sOjYwaHR0cDovL3dl
YmtpdC5vcmcvCi1jb25zb2xlLWZvcm1hdC5odG1sOjYxWyJodHRwOi8vd2Via2l0Lm9yZy8iXQor
Y29uc29sZS1mb3JtYXQuaHRtbDo1M2h0dHA6Ly93ZWJraXQub3JnLworY29uc29sZS1mb3JtYXQu
aHRtbDo1NFsiaHR0cDovL3dlYmtpdC5vcmcvIl0KK2dsb2JhbHNbOV0KICJodHRwOi8vd2Via2l0
Lm9yZy8iCi1jb25zb2xlLWZvcm1hdC5odG1sOjYwbnVsbAotY29uc29sZS1mb3JtYXQuaHRtbDo2
MVtudWxsXQorY29uc29sZS1mb3JtYXQuaHRtbDo1M251bGwKK2NvbnNvbGUtZm9ybWF0Lmh0bWw6
NTRbbnVsbF0KK2dsb2JhbHNbMTBdCiBudWxsCi1jb25zb2xlLWZvcm1hdC5odG1sOjYwdW5kZWZp
bmVkCi1jb25zb2xlLWZvcm1hdC5odG1sOjYxW3VuZGVmaW5lZF0KK2NvbnNvbGUtZm9ybWF0Lmh0
bWw6NTN1bmRlZmluZWQKK2NvbnNvbGUtZm9ybWF0Lmh0bWw6NTRbdW5kZWZpbmVkXQorZ2xvYmFs
c1sxMV0KIHVuZGVmaW5lZAotY29uc29sZS1mb3JtYXQuaHRtbDo2MGF0dHI9IiIKLWNvbnNvbGUt
Zm9ybWF0Lmh0bWw6NjFbYXR0cj0iIl0KK2NvbnNvbGUtZm9ybWF0Lmh0bWw6NTNhdHRyPSIiCitj
b25zb2xlLWZvcm1hdC5odG1sOjU0W2F0dHI9IiJdCitnbG9iYWxzWzEyXQogYXR0cj0iIgotY29u
c29sZS1mb3JtYXQuaHRtbDo2MGF0dHI9InZhbHVlIgotY29uc29sZS1mb3JtYXQuaHRtbDo2MVth
dHRyPSJ2YWx1ZSJdCitjb25zb2xlLWZvcm1hdC5odG1sOjUzYXR0cj0idmFsdWUiCitjb25zb2xl
LWZvcm1hdC5odG1sOjU0W2F0dHI9InZhbHVlIl0KK2dsb2JhbHNbMTNdCiBhdHRyPSJ2YWx1ZSIK
LWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjBpZD0ieCIKLWNvbnNvbGUtZm9ybWF0Lmh0bWw6NjFbaWQ9
IngiXQorY29uc29sZS1mb3JtYXQuaHRtbDo1M2lkPSJ4IgorY29uc29sZS1mb3JtYXQuaHRtbDo1
NFtpZD0ieCJdCitnbG9iYWxzWzE0XQogaWQ9IngiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUtZm9ybWF0Lmh0bWwKaW5kZXggZTM0MjdkZDI3NjIwNWJjMDc1YmNmMmJjZTZiZWUzZTY1
ZjIwZGVhOS4uMzI2ODI1YWI1YTc3YTVlZjcxY2QxZTgzMTI5MDBmZmJmMjc2MGIyYyAxMDA3NTUK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKQEAgLTEsMTMgKzEsMTMgQEAK
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIC8vIEdsb2JhbCBWYWx1ZXMKIHZhciBnbG9iYWxzID0gW107CiAKLWZ1bmN0aW9u
IGRvaXQoKQorZnVuY3Rpb24gb25sb2FkKCkKIHsKICAgICBjb25zb2xlLmxvZygnTWVzc2FnZSBm
b3JtYXQgbnVtYmVyICVpLCAlZCBhbmQgJWYnLCAxLCAyLCAzLjUpOwogICAgIGNvbnNvbGUubG9n
KCdNZXNzYWdlICVzIGZvciAlcycsICdmb3JtYXQnLCAnc3RyaW5nJyk7CkBAIC00NCw0NSArNDQs
NDIgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAgICAgIHJlZ2V4MSwgcmVnZXgyLCBzdHIsIHN0cjIs
IGVycm9yLCBub2RlLCBmdW5jLCBtdWx0aWxpbmVmdW5jLCBudW0sIGxpbmtpZnksCiAgICAgICAg
IG51bGwsIHVuZGVmaW5lZCwgdmFsdWVsZXNzQXR0cmlidXRlLCB2YWx1ZWRBdHRyaWJ1dGUsIGV4
aXN0aW5nQXR0cmlidXRlCiAgICAgXTsKLSAgICBsb29wT3Zlckdsb2JhbHMoMCk7CisKKyAgICBy
dW5UZXN0KCk7CiB9CiAKLWZ1bmN0aW9uIGxvb3BPdmVyR2xvYmFscyhjdXJyZW50KQorZnVuY3Rp
b24gbG9nKGN1cnJlbnQpCiB7Ci0gICAgZnVuY3Rpb24gYWR2YW5jZSgpCi0gICAgewotICAgICAg
ICB2YXIgbmV4dCA9IGN1cnJlbnQgKyAxOwotICAgICAgICBpZiAobmV4dCA9PSBnbG9iYWxzLmxl
bmd0aCkKLSAgICAgICAgICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbG9vcE92ZXJHbG9iYWxzKG5leHQpOwotICAgIH0KICAgICBjb25zb2xlLmxv
ZyhnbG9iYWxzW2N1cnJlbnRdKTsKICAgICBjb25zb2xlLmxvZyhbZ2xvYmFsc1tjdXJyZW50XV0p
OwotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2V2YWx1YXRlR2xvYmFsIiwg
YWR2YW5jZSk7CiB9CiAKLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRl
bmRfZXZhbHVhdGVHbG9iYWwoKQorZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgd2luZG93Ll9fbmV4
dCA9IHdpbmRvdy5fX25leHQgfHwgMDsKLSAgICB2YXIgY3VycmVudCA9IHdpbmRvdy5fX25leHQr
KzsKLSAgICB2YXIgZXhwcmVzc2lvbiA9ICJnbG9iYWxzWyIgKyBjdXJyZW50ICsgIl0iOwotICAg
IGZyb250ZW5kX2V2YWxFeHByZXNzaW9uKGV4cHJlc3Npb24pOwotfQorICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImdsb2JhbHMubGVuZ3RoIiwgbG9vcE92ZXJHbG9iYWxzLmJpbmQo
dGhpcywgMCkpOwogCi1mdW5jdGlvbiBmcm9udGVuZF9ldmFsRXhwcmVzc2lvbihleHByZXNzaW9u
KQotewotICAgIHZhciBzZWxmID0gV2ViSW5zcGVjdG9yLmNvbnNvbGU7Ci0gICAgZnVuY3Rpb24g
cHJpbnRSZXN1bHQocmVzdWx0KQorICAgIGZ1bmN0aW9uIGxvb3BPdmVyR2xvYmFscyhjdXJyZW50
LCB0b3RhbCkKICAgICB7Ci0gICAgICAgIHNlbGYuYWRkTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9y
LkNvbnNvbGVDb21tYW5kUmVzdWx0KHJlc3VsdCwgZXhwcmVzc2lvbikpOwotICAgIH0KKyAgICAg
ICAgZnVuY3Rpb24gYWR2YW5jZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBuZXh0ID0g
Y3VycmVudCArIDE7CisgICAgICAgICAgICBpZiAobmV4dCA9PSB0b3RhbC5kZXNjcmlwdGlvbikg
eworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVNZXNzYWdlcygpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9vcE92ZXJHbG9iYWxz
KG5leHQsIHRvdGFsKTsKKyAgICAgICAgfQogCi0gICAgc2VsZi5ldmFsSW5JbnNwZWN0ZWRXaW5k
b3coZXhwcmVzc2lvbiwgImNvbnNvbGUiLCBmYWxzZSwgcHJpbnRSZXN1bHQpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2coIiArIGN1cnJlbnQgKyAiKSIpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZXZhbEluQ29uc29s
ZSk7CisgICAgICAgIGZ1bmN0aW9uIGV2YWxJbkNvbnNvbGUoKQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJnbG9iYWxzWyIgKyBjdXJyZW50
ICsgIl0iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0
Y2hlcyhhZHZhbmNlKTsKKyAgICAgICAgfQorICAgIH0KIH0KLQogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWxvZy1iZWZvcmUt
aW5zcGVjdG9yLW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWxvZy1i
ZWZvcmUtaW5zcGVjdG9yLW9wZW4uaHRtbAppbmRleCBmMWEwMTVlOWNkZjdiOGRkZTUwNTBmMGEw
ZjU5YWVmYjQwMDQ2NmJlLi44OTE0N2QwMjEyYTdkYTEwYjVjOGY3ZGZmMDBmMzM5NDI0MDNiM2Nl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1sb2ctYmVmb3JlLWlu
c3BlY3Rvci1vcGVuLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtbG9n
LWJlZm9yZS1pbnNwZWN0b3Itb3Blbi5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogY29u
c29sZS5sb2coJ2xvZycpOwpAQCAtMTAsMTUgKzEwLDE2IEBAIGNvbnNvbGUuaW5mbygnaW5mbycp
OwogY29uc29sZS53YXJuKCd3YXJuJyk7CiBjb25zb2xlLmVycm9yKCdlcnJvcicpOwogCi1mdW5j
dGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3QoKQogewotICAgIGR1bXBDb25zb2xlTWVzc2FnZXMo
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xlTWVzc2FnZXMoKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkg
b25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3Rz
IHRoYXQgV2ViIEluc3BlY3RvciB3b24ndCBjcmFzaCBpZiBzb21lIGNvbnNvbGUgaGF2ZSBiZWVu
IGxvZ2dlZCBieSB0aGUgdGltZSBpdCdzIG9wZW5pbmcuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1sb2ctc3ludGF4LWVycm9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1sb2ctc3ludGF4LWVycm9yLmh0bWwKaW5kZXggZjY5MThi
ZWFlNjU0MDRmM2U3Y2U2NjQzMjcwZmM2ZTAwMGJiNmVhNi4uZjRkNjNiYjhkNzE3NDE0OGE3Njdi
Mjc5NWVjYjEzNGUyNjg1ODRiYyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUtbG9nLXN5bnRheC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlLWxvZy1zeW50YXgtZXJyb3IuaHRtbApAQCAtMSwxNiArMSwxNyBAQAogPGh0bWw+CiA8
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29u
c29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zeW50YXgtZXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0aW9u
IGRvaXQoKQorZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgZHVtcENvbnNvbGVNZXNzYWdlcygpOwor
ICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVNZXNzYWdlcygpOworICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
b25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyB0aGF0IHN5
bnRheCBlcnJvcnMgYXJlIGxvZ2dlZCBpbnRvIGNvbnNvbGUgYW5kIGRvZXNuJ3QgY2F1c2UgYnJv
d3NlciBjcmFzaC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlLW9iamVjdC1jb25zdHJ1Y3Rvci1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29uc29sZS1vYmplY3QtY29uc3RydWN0b3ItbmFtZS5odG1sCmluZGV4IDZhMDY1ZTA4YmFmYzk1
ZjZkNTM2NDE1ZmU5NmE5NDhhNjc4ZDI0NDMuLjU1Zjg1OTQxNmRjOGNmOWEwODljOThmYzcwYzY5
NTY5M2RiNTY3ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLW9i
amVjdC1jb25zdHJ1Y3Rvci1uYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUtb2JqZWN0LWNvbnN0cnVjdG9yLW5hbWUuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLXRlc3RzMi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIFBhcmVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmh0bWwK
aW5kZXggYTdjYzE3YzM1MTJiYzlmMjQ0Nzg1MDllMzI5MDQ3YWRlMGNhYTNjNC4uNjkzMjM0NDcw
MDJiNTgzMmE0MWY2ZDAzMTdkNzY4ZjczY2YyMGE3NiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29uc29sZS10ZXN0cy5odG1sCkBAIC0xLDEwICsxLDEwIEBACiA8aHRtbD4KIDxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3Rz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBk
b2l0KCkKK2Z1bmN0aW9uIG9ubG9hZCgpCiB7CiAgICAgY29uc29sZS5sb2coJ2xvZycpOwogICAg
IGNvbnNvbGUuZGVidWcoJ2RlYnVnJyk7CkBAIC0yOSw5ICsyOSwxNSBAQCBmdW5jdGlvbiBkb2l0
KCkKICAgICBjb25zb2xlLmxvZyhmdW5jdGlvbiBmKCkgeyB9KTsKICAgICBjb25zb2xlLmxvZyhb
MSwgMiwgM10pOwogICAgIGNvbnNvbGUubG9nKC9yZWdleHAuKi8pOwotICAgIGR1bXBDb25zb2xl
TWVzc2FnZXNXaXRoQ2xhc3NlcygpOworCisgICAgcnVuVGVzdCgpOwogfQogCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xlTWVzc2FnZXNXaXRoQ2xhc3Nl
cygpOworICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cit9CiA8L3NjcmlwdD4KIDwv
aGVhZD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdHJhY2Ut
aW4tZXZhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdHJhY2UtaW4tZXZh
bC5odG1sCmluZGV4IDQ2ZGU1MTVkOGNlN2Y4NWJlNjhhNDZlYWY5NDZjZTFlMGVjYzMwMTEuLjkx
M2Y4YWI5YzQ0ODM5ODdhZmY5ZmVmNGI1YjhhYzg4MGJjMmM5YzQgMTAwNzU1Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRyYWNlLWluLWV2YWwuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10cmFjZS1pbi1ldmFsLmh0bWwKQEAgLTEsNyArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogCiAKQEAgLTE4LDIwICsxOCwzMCBAQCBmdW5jdGlvbiBldmFsU291cmNlKCkKICAg
ICB9CiAKICAgICBhKCk7Ci0gICAgZHVtcENvbnNvbGVNZXNzYWdlcygpOwogfQogCi1mdW5jdGlv
biBkb2l0KCkKK2Z1bmN0aW9uIGRvRXZhbFNvdXJjZSgpCiB7CiAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKICAgICAgICAgZXZhbCgiKCIgKyBldmFsU291cmNlICsgIikoKS8vQCBzb3VyY2VV
Ukw9ZXZhbFVSTC5qcyIpOwogICAgIH0sIDApOwogfQogCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBmdW5jdGlvbiBjYWxsYmFjaygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBD
b25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
KyAgICB9CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZG9FdmFsU291cmNlKCki
KTsKKyAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwgY2FsbGJhY2spOworfQorCiA8L3NjcmlwdD4KIDwv
aGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CiA8cD4KIFRlc3RzIHRoYXQgd2hlbiBjb25zb2xlLnRyYWNlIGlzIGNhbGxlZCBpbiBldmFs
J2VkIHNjcmlwdCBlbmRpbmcKIHdpdGggLy9AIHNvdXJjZVVSTD11cmwgaXQgd2lsbCBkdW1wIGEg
c3RhY2sgdHJhY2UgdGhhdCB3aWxsIGhhdmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXRyYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10
cmFjZS5odG1sCmluZGV4IDA1NmRmNmUzYWNkZTYxMDI2ZGQ1YzE3NDJjNWVjNjg0YWM3YzQxNWUu
LjRkZGFhMzkyNjE4ZmQyNGM4YmI4NmI4ZGZiNGQ3YjZmNDY1ZjAyNWQgMTAwNzU1Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtdHJhY2UuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGIoKQpAQCAtMTIsMTggKzEyLDIzIEBAIGZ1bmN0aW9uIGIoKQogZnVuY3Rpb24gYSgp
CiB7CiAgICAgYigpOwotICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKIH0KIAotZnVuY3Rpb24g
ZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBzZXRUaW1lb3V0KGEsIDApOworICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNv
bGVNZXNzYWdlcygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
IH0KKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzZXRUaW1lb3V0KGEsIDApIik7
CisgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlLCAiYWRkTWVzc2FnZSIsIGNhbGxiYWNrKTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hl
YWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgogPHA+CiBUZXN0cyB0aGF0IGNvbnNvbGUudHJhY2UgZHVtcHMgc3RhY2sgdHJhY2Ugd2l0aCBz
b3VyY2UgVVJMcyBhbmQgbGluZSBudW1iZXJzLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtdW5jYXVnaHQtZXhjZXB0aW9uLWluLWV2YWwuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXVuY2F1Z2h0LWV4Y2VwdGlvbi1pbi1ldmFsLmh0
bWwKaW5kZXggM2Y1ZGZjZTkxNmE0ZDczMWRiM2YyYTA2MWRhNTc0YWUxNTk4NTEyNS4uNWEyZDky
Y2IxNDJjNGFjZDFmNzgyMWM4ZDZmYzg5MmE2NzcxYmM5ZiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtdW5jYXVnaHQtZXhjZXB0aW9uLWluLWV2YWwuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24taW4tZXZh
bC5odG1sCkBAIC0xLDE5ICsxLDE4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0czIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBJbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2UoZnVuY3Rpb24oKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXhw
YW5kQ29uc29sZU1lc3NhZ2VzKCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcENvbnNvbGVN
ZXNzYWdlcygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZENvbnNvbGVNZXNzYWdlcygp
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0pOwogfQogCi0K
IGZ1bmN0aW9uIGV2YWxTb3VyY2UoKQogewogICAgIGZ1bmN0aW9uIGIoKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdW5jYXVnaHQtZXhjZXB0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24uaHRtbAppbmRl
eCA3Yzc1YWQzNDAxOGFlOTMwZTJhYzg2ODI5YTcyMGM2MmYzMjExMjcyLi5iNDNiOGExYzU3YmE1
NDNjZGYwNjBhMmNkMDMzZDQ0NjE2YmFjZWRjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS11bmNhdWdodC1leGNlcHRpb24uaHRtbApAQCAtMSw5ICsxLDEwIEBA
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29uc29sZS10ZXN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgog
CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShmdW5j
dGlvbigpIHsKQEAgLTEzLDcgKzE0LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfSk7CiB9CiAK
LQogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbihlKSB7CiAgICAgZnVu
Y3Rpb24gZigpIHsKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeGNlcHRpb24gaW4gJ2xvYWQn
IGV2ZW50IGxpc3RlbmVyLiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItYXV0b2NvbnRpbnVlLW9uLXN5bnRheC1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLWF1dG9jb250aW51ZS1vbi1zeW50YXgtZXJyb3IuaHRtbAppbmRleCA5
MThlZjVmMWMwOGZiNzlkZWQxOWUwNmI2OWYzM2NiNDhhYzMzMmU1Li40YzZlZTZjMzZlMmU1MTI1
Y2I5NGVhNjA2MjUyMzRmMjkxY2IyYzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItYXV0b2NvbnRpbnVlLW9uLXN5bnRheC1lcnJvci5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1hdXRvY29udGludWUtb24tc3ludGF4LWVycm9yLmh0
bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zeW50YXgtZXJyb3IuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRt
bAppbmRleCA4MzNhYTY4MmQ4ZDNjOWVmMmU4Y2M4YTliZTdmODQ0NTg4ODI0ZGQ2Li43MzI5MThi
NWM2ZDk1OWU0NmY0NmZkZDcwMDk1ZGE2Zjc5NzU0ODVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90
LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiB0ZXN0
RnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5
Y2xpYy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVm
Lmh0bWwKaW5kZXggMTdmZTYzOWM1YjcxOTVmMGEyOGFmZDNlMWY4ZWFkODQ2MGQ3M2MwNi4uNmZi
ZTk2ODJiMzU4MDI0NzU2NmM0M2Y4NDI3ODAxNGE1MWI1ZDFlMCAxMDA3NTUKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIE9i
amVjdC5wcm90b3R5cGUuY3ljbGljUmVmID0gT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLW9uLWNhbGwtZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLW9uLWNhbGwtZnJhbWUuaHRtbApp
bmRleCBmMWUwZTVlZjJlMjVhOGJkNzNmZDBkYWM3OWQ5NmQ0ZjlmM2UyZTYzLi40ZDc4YmMxNTE0
YWUzYTRjYzM2Y2MyZmRlOGQ0Mzc0MzAxYjFkNzdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItZXZhbC1vbi1jYWxsLWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtb24tY2FsbC1mcmFtZS5odG1sCkBAIC0xLDcgKzEs
NyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAKIHZhciBhID0gMTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0bWwKaW5kZXggZDgzMmFhMjYxYWJhM2YwZDQ3NTM0MzRh
NmMxNWI1N2M1MzkxNzA0NC4uOTEyZjlhMmQ4NWNmZWJmNDk0MDI3NzdiNTIyMDk0Yjg4ODRlYzY1
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUt
cGF1c2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hp
bGUtcGF1c2VkLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogdmFyIGdsb2JhbFZhciA9IHsgYjogMSB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV4cGFuZC1zY29w
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV4cGFuZC1zY29wZS5odG1s
CmluZGV4IGNmN2E3NTEyNjAwY2NmODZkYzFlY2RlZGU5ZTE1MGY2MWYzZTA4Y2MuLmZmMGE5Nzky
MDEzYzQyMTA5ODE4M2M1OThmZDM1NmVmNzAxYTg5ZjAgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1leHBhbmQtc2NvcGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItZXhwYW5kLXNjb3BlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVu
Y3Rpb24gbWFrZUNsb3N1cmUobikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sCmluZGV4IDhhNmNmYjc2OWZiYTRjMDU2Yzk0MzA0
ODFkY2RlZWI4YTdjZGViMTAuLjg5ODhmYmIzY2VlMDA3NTYxYTQ0MTNkZmNiYTU3YThlY2I1ZmVi
OTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQt
cGF1c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVk
LXBhdXNlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNj
cmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwt
c2NyaXB0Lmh0bWwKaW5kZXggNTc1Y2Y2NzcwYTlmZTE2MmQ3Zjg4N2ZjMGQ1ZmU5MTgzY2VjZTZj
Mi4uM2NmYjk0MWNhMTUxZjU1YmNkNzA4Y2RmNGZjM2MzNTE4MDYzZThkMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0
Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItcGF1c2Utb24tYnJlYWtwb2ludC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbAppbmRleCAzMDg1OTA0ODhkZjQy
N2MxNDcxZDdiYTM3YzNjNjQ3ZjVkODNmNmIzLi5lYjc0NzlmYmFlN2UxYzM2NzVlZTIyZDAwZTk3
MjI0YjdmZTk0MWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIt
cGF1c2Utb24tYnJlYWtwb2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1vbi1icmVha3BvaW50Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24g
dGVzdEZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbAppbmRleCBjYmIwNDdj
NTdkZTkyZjYyM2Y5MjYwMjYyODliY2E2OGJlNTkyYTU4Li42ZGI5MDE3ZDI3N2E5ZTBkNTc3ZmFh
YjQwMzM5NTQ0ZTBjMWYyNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0x
LDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZXhjZXB0aW9uLmh0bWwKaW5kZXggYmVl
NzZhOWE4YjdmZjdlOTNhYzc2MGI2ZDc3NGNmODZmMDUyZGY3Yi4uNGYwOWNkZjViNTRkZTJlODYy
NWUyYmU2ZTYxY2VjNDExM2Y2OWUwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXBhdXNlLW9uLWV4Y2VwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1leGNlcHRpb24uaHRtbApAQCAtMSw3ICsxLDcgQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBm
dW5jdGlvbiB0aHJvd0FuRXhjZXB0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWwKaW5kZXggYzRmNGZiZTc4ZmJlNjdiOTdhMGIz
MjRkMDM1ZDEwZWU0MDliNjFiYy4uM2ZlMTg1YWZiNGNhM2Y3M2IwM2YzMWVmMzhlY2JiZTc3YWM0
ZGM0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXBy
b3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXBy
b3BlcnR5Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gQygpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXNjcmlwdHMuaHRtbAppbmRleCBkMWY5YTg2ZGMzMzU0NjFmMGFi
N2U3MTQzMTU2OTcxNDc3YzhkYTAxLi43MzY4ZTMwOTE2OTU1NGFjNGIyOGI0NzBjMDNlNzNhNGI4
NDY2OTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc2NyaXB0
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zY3JpcHRzLmh0bWwK
QEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2Ny
aXB0PgogCiA8c2NyaXB0PgogdmFyIHRlc3QgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbAppbmRleCAyNTkzYzkwNmI5NzcyODFjMGRmNTNk
Mzg4MTRiZDY5NGY1OGZiZDIyLi41ZjAyZWMwN2JhMGJiYzAyMThmZWEzNzQwZmVkODg3M2U0YTk3
NDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLmh0bWwKQEAg
LTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLW91dC5odG1sCmluZGV4IDhmMDBiMTQ3YTVlMGIzNDhhZWEzNjA1OGQyNTMyNjI4
MmNkMTUzNjEuLjlhYTg5Y2ZlYmEzZjdjMzkzNzIyNjQ4M2MyYzc3NGNlYjgzYTA2ZGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sCkBAIC0xLDcgKzEs
NyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXN0ZXAtb3Zlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0
ZXAtb3Zlci5odG1sCmluZGV4IGIyM2RlMDVlOTk5NmM4MTg1MzQ0ZjdhZjhlN2NmZjEwYzZjZjkw
YTguLmY2MjA3ZDc2ZDg0ZTBiZTE1MzZlYWY0MzdjNWM3OGUxMTAwMDdmY2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwKQEAgLTEsNyArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
IAogZnVuY3Rpb24gZigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItc3VzcGVuZC1hY3RpdmUtZG9tLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sCmluZGV4IDk2ZTVlYmYy
Nzk2N2U0Njc1M2YzMDcxNzRjMDkwZWE2ZTdjOTBjZTguLjk4ZmQ1ZDk4N2U2ZjBjOGI1OThiMGE3
NjcxNWJmZTIwMzIyMWM3NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdXNwZW5kLWFjdGl2ZS1kb20tb2JqZWN0cy5odG1sCkBAIC0xLDcg
KzEsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20tYnJlYWtwb2ludHMuaHRtbAppbmRleCBlZWRiNjg5ZjczNzVlNzgxNzU1MWRiNGZjOTI1
MTAxYjNkNmUyMzBjLi42OTM3YjczNTMyOWEyZmIyNzNiMzY3ZDI4YTg1OTFmMjA0NjY5MjhkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCkBAIC0xLDcgKzEs
NyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGFwcGVuZEVsZW1lbnQocGFyZW50SWQsIGNoaWxkSWQpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5bGUu
aHRtbAppbmRleCBlODc1ZjM4NDkwZTliOTg5ZmU0NjQ2MmFiYTczMDliNTQ1ZWE4ZGMyLi42MGRl
YTc1Y2EwYTU1YjFkOTdkNWY3NDZhMGFlOTk1ZWUzMDUzMDdjIDEwMDc1NQotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWwKQEAg
LTEsMjAgKzEsMTggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJl
bGVtZW50cy10ZXN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rp
b24gdGVzdCgpCiB7Ci0gICAgZnVuY3Rpb24gc2VsZWN0SW5zcGVjdGVkRWxlbWVudCgpCi0gICAg
ewotICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdEVsZW1lbnRBbmRSdW4oImluc3BlY3RlZCIs
IGV4ZWN1dGVUZXN0KTsKLSAgICB9CiAKLSAgICBmdW5jdGlvbiBleGVjdXRlVGVzdCgpCisgICAg
SW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CisKKyAg
ICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiQmVmb3JlIHN0eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVl
KSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVl
KTsKIAogICAgICAgICB2YXIgdHJlZUVsZW1lbnQ7CiAgICAgICAgIHZhciBpbm5lck1hcHBpbmcg
PSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOwpAQCAtMzEsMTQgKzI5LDE1IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyBSZW1vdmUgdGhlICJzdHlsZSIgYXR0cmlidXRl
IGFsdG9nZXRoZXIgKG5vdCBqdXN0IGNsZWFyIGl0cyB2YWx1ZSkuCiAgICAgICAgIGVkaXRvckVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKICAgICAgICAgZWRpdG9yRWxlbWVudC5kaXNwYXRjaEV2
ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgc3R5bGUgcHJvcGVydHkgcmVtb3Zh
bDoiKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JUZXN0
LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5y
dW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JU
ZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc2VsZWN0SW5zcGVjdGVkRWxlbWVudCk7
CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkFmdGVyIHN0eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLWltZy10b29sdGlwLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1pbWctdG9vbHRpcC1leHBlY3RlZC50eHQK
aW5kZXggOWU0ODBlZTcxZDkzZGU4Yjc3OWVhOWJmN2EwNTNiMjljN2I2OTQ0My4uZDBkMDEzMGM2
NmEzYzU5YzA2OGIzMzViZTdlOGM1OGI1ZThjY2E4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzLWltZy10b29sdGlwLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAotVGVzdHMgdGhhdCB0aGUgdG9vbHRpcCB0ZXh0IGZvciB0aGUgaW1hZ2UgKGJlbG93
KSBpcyAiMjE1IMOXIDE3NCBwaXhlbHMiLgorVGVzdHMgdGhlIHRvb2x0aXAgZm9yIHRoZSBpbWFn
ZSBvbiBob3Zlci4KIAogCiBQQVNTRUQsIHRvb2x0aXAgdGV4dCBpcyAiMjE1IMOXIDE3NCBwaXhl
bHMiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLWltZy10b29s
dGlwLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRt
bAppbmRleCAwODc1YjEwNGIyMjBhOGY5ODZhNTk0OTUyNGMxOTMzNWI2ZDg5NzRiLi44YTdiNWU3
ZTAxNjRmNmJlMGQyMWI3OWExZGI2MjlhNGQ3MGMzMDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRtbApAQCAtMSw2MiArMSw0MyBAQAogPGh0
bWw+CiA8aGVhZD4KIAotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci12YXIgRVhQRUNURURfVE9P
TFRJUF9URVhUID0gIjIxNSBceGQ3IDE3NCBwaXhlbHMiOwotZnVuY3Rpb24gZG9pdCgpCi17Ci0g
ICAgZnVuY3Rpb24gY2FsbGJhY2sodG9vbHRpcFRleHQpCi0gICAgewotICAgICAgICBpZiAoIXRv
b2x0aXBUZXh0KQotICAgICAgICAgICAgb3V0cHV0KCJGQUlMRUQsIHRvb2x0aXAgdGV4dCBzaG91
bGQgaGF2ZSBiZWVuIFwiIiArIEVYUEVDVEVEX1RPT0xUSVBfVEVYVCArICJcIi4gV2FzICIgKyB0
b29sdGlwVGV4dCArICIuIik7Ci0gICAgICAgIGVsc2UgaWYgKHRvb2x0aXBUZXh0ID09IEVYUEVD
VEVEX1RPT0xUSVBfVEVYVCkKLSAgICAgICAgICAgIG91dHB1dCgiUEFTU0VELCB0b29sdGlwIHRl
eHQgaXMgXCIiICsgRVhQRUNURURfVE9PTFRJUF9URVhUICsgIlwiLiIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBvdXRwdXQoIkZBSUxFRCwgdG9vbHRpcCB0ZXh0IHNob3VsZCBoYXZlIGJl
ZW4gXCIiICsgRVhQRUNURURfVE9PTFRJUF9URVhUICsgIlwiLiBXYXMgXCIiICsgdG9vbHRpcFRl
eHQgKyAiXCIuIik7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJ
bldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcFRvb2x0aXAiLCBjYWxsYmFjayk7Ci19Ci0KLS8v
IEZyb250ZW5kIGZ1bmN0aW9ucy4KIAotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFRvb2x0aXAodGVz
dENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0
ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfZHVtcFRvb2x0aXBDb250aW51YXRpb24pOwot
fQorICAgIEluc3BlY3RvclRlc3Qubm9kZVdpdGhJZCgiaW1hZ2UiLCBzdGVwMSk7CiAKLWZ1bmN0
aW9uIGZyb250ZW5kX2R1bXBUb29sdGlwQ29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewot
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHRvb2x0aXBUZXh0KQorICAgIGZ1bmN0aW9uIHN0ZXAxKG5v
ZGUpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRvb2x0aXBUZXh0
KTsKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSk7CisgICAgICAgIHRyZWVFbGVtZW50
Ll9jcmVhdGVUb29sdGlwRm9yTm9kZSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDIuYmluZCh0aGlzLCB0cmVlRWxlbWVudCkpOwogICAgIH0K
IAotICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01O
b2RlOwotICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbm5lck1hcHBpbmcpIHsKLSAgICAgICAgaWYg
KGlubmVyTWFwcGluZ1tub2RlSWRdLm5vZGVOYW1lID09PSAiSU1HIikgewotICAgICAgICAgICAg
dmFyIG5vZGUgPSBpbm5lck1hcHBpbmdbbm9kZUlkXTsKLSAgICAgICAgICAgIHZhciB0cmVlRWxl
bWVudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUuZmluZFRyZWVF
bGVtZW50KG5vZGUpOwotICAgICAgICAgICAgdHJlZUVsZW1lbnQuX2NyZWF0ZVRvb2x0aXBGb3JO
b2RlKCk7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUodHJlZUVsZW1lbnQudG9vbHRpcCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CisgICAgZnVuY3Rpb24gc3RlcDIodHJlZUVsZW1lbnQpCisgICAgewor
ICAgICAgICBjb25zdCBFWFBFQ1RFRF9UT09MVElQX1RFWFQgPSAiMjE1IFx4ZDcgMTc0IHBpeGVs
cyI7CisKKyAgICAgICAgdmFyIHRvb2x0aXBUZXh0ID0gdHJlZUVsZW1lbnQudG9vbHRpcDsKKyAg
ICAgICAgaWYgKHRvb2x0aXBUZXh0ID09PSBFWFBFQ1RFRF9UT09MVElQX1RFWFQpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTU0VELCB0b29sdGlwIHRleHQgaXMgXCIi
ICsgRVhQRUNURURfVE9PTFRJUF9URVhUICsgIlwiLiIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVELCB0b29sdGlwIHRleHQgc2hvdWxk
IGhhdmUgYmVlbiBcIiIgKyBFWFBFQ1RFRF9UT09MVElQX1RFWFQgKyAiXCIuIFdhcyBcIiIgKyB0
b29sdGlwVGV4dCArICJcIi4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKICAgICB9CiB9CisKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9h
ZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgotVGVzdHMgdGhhdCB0aGUgdG9v
bHRpcCB0ZXh0IGZvciB0aGUgaW1hZ2UgKGJlbG93KSBpcyAmcXVvdDs8c2NyaXB0PmRvY3VtZW50
LndyaXRlKEVYUEVDVEVEX1RPT0xUSVBfVEVYVCk8L3NjcmlwdD4mcXVvdDsuCitUZXN0cyB0aGUg
dG9vbHRpcCBmb3IgdGhlIGltYWdlIG9uIGhvdmVyLgogPC9wPgogCi08aW1nIHNyYz0iZGF0YTpp
bWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFOY0FBQUN1Q0FJQUFBQXFN
Zy9yQUFBQUFYTlNSMElBcnM0YzZRQUFBVTlKUkVGVWVOcnQwakVSQUFBSXhEREF2K2RIQXhOTElx
SFhUbEx3YWlUQWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNT
RjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NG
NEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0
RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRjRF
SmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVK
Y0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRkV1QkNjQ0V1QkJmaVFuQWhMZ1FYNGtKd0lTNEVGK0pD
Y0NFdUJCZmlRbkFoTGdRWDRrSndJUzRFRitKQ2NDRXVCQmZpUW5BaExnUVg0a0p3SVM0RUYrSkNj
Q0V1QkJmaVFuQWhMb1NEQlpYcUJGbmtSeWVxQUFBQUFFbEZUa1N1UW1DQyIvPgorPGltZyBpZD0i
aW1hZ2UiIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFOY0FBQUN1Q0FJQUFBQXFNZy9yQUFBQUFYTlNSMElBcnM0YzZRQUFBVTlKUkVGVWVOcnQwakVS
QUFBSXhEREF2K2RIQXhOTElxSFhUbEx3YWlUQWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0Vo
ZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhl
QkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVC
Q1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNYQWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJD
WEFndXhJWGdRbHdJTHNTRjRFSmNDQzdFaGVCQ1hBZ3V4SVhnUWx3SUxzU0Y0RUpjQ0M3RWhlQkNY
QWd1eElYZ1Fsd0lMc1NGNEVKY0NDN0VoZUJDWEFndXhJWGdRbHdJTHNTRkV1QkNjQ0V1QkJmaVFu
QWhMZ1FYNGtKd0lTNEVGK0pDY0NFdUJCZmlRbkFoTGdRWDRrSndJUzRFRitKQ2NDRXVCQmZpUW5B
aExnUVg0a0p3SVM0RUYrSkNjQ0V1QkJmaVFuQWhMb1NEQlpYcUJGbmtSeWVxQUFBQUFFbEZUa1N1
UW1DQyIvPgogCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi1leHBlY3Rl
ZC50eHQKaW5kZXggOGJmMjE3OTBiM2ExZjBkYzljNzljZjJkODVkZmY5OGRlMzlhOWRiOC4uYWU2
NzZlZDNlZGFlZjg3NmYxNTllNDVlNDQxOWNjOGQxNmM3ZjE4NyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQtY2hpbGRyZW4tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1saW1pdGVkLWNo
aWxkcmVuLWV4cGVjdGVkLnR4dApAQCAtOSw4ICs5LDM1IEBACiAxMAogVGVzdHMgdGhhdCBzcmMg
YW5kIGhyZWYgZWxlbWVudCB0YXJnZXRzIGFyZSByZXdyaXR0ZW4gcHJvcGVybHkuCiAKKz09PT09
PT09PT09IExvYWRlZCA1IGNoaWxkcmVuID09PT09PT09PT09CiAKLTxkaXYgaWQ9ImRhdGEiPi8K
KzxodG1sPgorPGhlYWQ+4oCmCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
ZGl2IGlkPSJkYXRhIj4KKzxkaXYgaWQ9ImlkMSI+MQorPC9kaXY+Cis8ZGl2IGlkPSJpZDIiPjIK
KzwvZGl2PgorPGRpdiBpZD0iaWQzIj4zCis8L2Rpdj4KKzxkaXYgaWQ9ImlkNCI+NAorPC9kaXY+
Cis8ZGl2IGlkPSJpZDUiPjUKKzwvZGl2PlNob3cgQWxsIE5vZGVzICg1IE1vcmUpCis8L2Rpdj4K
KzxwPlRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVu
IHByb3Blcmx5LgorPC9wPgorPC9ib2R5PgorPC9odG1sPgorPT09PT09PT09PT0gTW9kaWZpZWQg
Y2hpbGRyZW4gPT09PT09PT09PT0KKworPGh0bWw+Cis8aGVhZD7igKYKKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxkaXYgaWQ9ImRhdGEiPgogPGE+CiA8L2E+CiA8ZGl2IGlk
PSJpZDEiPjEKQEAgLTIyLDcgKzQ5LDIxIEBAIFRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVsZW1l
bnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVuIHByb3Blcmx5LgogPGRpdiBpZD0iaWQ1Ij41CiA8L2Rp
dj5TaG93IEFsbCBOb2RlcyAoNiBNb3JlKQogPC9kaXY+Ci08ZGl2IGlkPSJkYXRhIj4vCis8cD5U
ZXN0cyB0aGF0IHNyYyBhbmQgaHJlZiBlbGVtZW50IHRhcmdldHMgYXJlIHJld3JpdHRlbiBwcm9w
ZXJseS4KKzwvcD4KKzxkaXYgY2xhc3M9Im91dHB1dCIgc3R5bGU9IndoaXRlLXNwYWNlOiBwcmU7
ICI+4oCmCis8L2Rpdj4KKzxkaXYgY2xhc3M9Im91dHB1dCIgc3R5bGU9IndoaXRlLXNwYWNlOiBw
cmU7ICI+4oCmCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKz09PT09PT09PT09IExvYWRlZCBh
bGwgY2hpbGRyZW4gPT09PT09PT09PT0KKworPGh0bWw+Cis8aGVhZD7igKYKKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxkaXYgaWQ9ImRhdGEiPgogPGE+CiA8L2E+CiA8ZGl2
IGlkPSJpZDEiPjEKQEAgLTQ2LDQgKzg3LDE2IEBAIFRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVs
ZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVuIHByb3Blcmx5LgogPGE+CiA8L2E+CiA8L2Rpdj4K
KzxwPlRlc3RzIHRoYXQgc3JjIGFuZCBocmVmIGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVu
IHByb3Blcmx5LgorPC9wPgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hpdGUtc3BhY2U6
IHByZTsgIj7igKYKKzwvZGl2PgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hpdGUtc3Bh
Y2U6IHByZTsgIj7igKYKKzwvZGl2PgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hpdGUt
c3BhY2U6IHByZTsgIj7igKYKKzwvZGl2PgorPGRpdiBjbGFzcz0ib3V0cHV0IiBzdHlsZT0id2hp
dGUtc3BhY2U6IHByZTsgIj7igKYKKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJl
bi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQtY2hp
bGRyZW4uaHRtbAppbmRleCA1Y2QwOTcwNzhlN2Y5MGUxZWUwNzY5ZTUyNTAwZWYwM2VlODVkNmYz
Li4yMzBiZmYyMGZlMWFlZDk4YWY5ODJkMDkxOGU2OGQ2ZWRiNGYwM2QzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1saW1pdGVkLWNoaWxk
cmVuLmh0bWwKQEAgLTEsMTYzICsxLDY2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gaW5zZXJ0Tm9kZSgpCiB7
Ci0gICAgZnVuY3Rpb24gcHJlT3V0cHV0KHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciBvdXRw
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0UHJlIik7Ci0gICAgICAgIG91dHB1
dC50ZXh0Q29udGVudCArPSByZXN1bHQucmVwbGFjZSgvXHUyMDBiL2csICIiKS5yZXBsYWNlKC9c
bi9nLCAiIikucmVwbGFjZSgvPC9nLCAiXG48Iik7Ci0gICAgfQorICAgIHZhciBkYXRhRWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhIik7CisgICAgZGF0YUVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKTsKKyAgICBkYXRhRWxlbWVudC5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWQyIikpOworICAgIHZhciBhRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKKyAgICBkYXRhRWxlbWVudC5pbnNl
cnRCZWZvcmUoYUVsZW1lbnQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZDEiKSk7CisgICAg
ZGF0YUVsZW1lbnQuYXBwZW5kQ2hpbGQoYUVsZW1lbnQpOworICAgIGRhdGFFbGVtZW50Lmluc2Vy
dEJlZm9yZShhRWxlbWVudCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkMSIpKTsKK30KIAot
ICAgIGZ1bmN0aW9uIG5vZGVEdW1wQWZ0ZXJDYWxsYmFjayhkdW1wKQotICAgIHsKLSAgICAgICAg
cHJlT3V0cHV0KGR1bXApOwotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgdmFyIGRhdGFUcmVlRWxlbWVudDsKIAotICAgIGZ1bmN0aW9uIHNob3dB
bGxDYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAg
ICAgICBwcmVPdXRwdXQocmVzdWx0KTsKLSAgICAgICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICAg
ICAgfQotICAgICAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wTm9kZSIs
IG5vZGVEdW1wQWZ0ZXJDYWxsYmFjayk7Ci0gICAgfQorICAgIEluc3BlY3RvclRlc3Qubm9kZVdp
dGhJZCgiZGF0YSIsIHN0ZXAxKTsKIAotICAgIGZ1bmN0aW9uIG5vZGVEdW1wQmVmb3JlQ2FsbGJh
Y2soZHVtcCkKKyAgICBmdW5jdGlvbiBzdGVwMShub2RlKQogICAgIHsKLSAgICAgICAgcHJlT3V0
cHV0KGR1bXApOwotICAgICAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9zaG93
QWxsIiwgc2hvd0FsbENhbGxiYWNrKTsKKyAgICAgICAgZGF0YVRyZWVFbGVtZW50ID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSk7
CisgICAgICAgIGRhdGFUcmVlRWxlbWVudC5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gNTsKKyAg
ICAgICAgZGF0YVRyZWVFbGVtZW50LnJldmVhbCgpOworICAgICAgICBkYXRhVHJlZUVsZW1lbnQu
ZXhwYW5kKCk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hl
cyhzdGVwMik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gbm9kZUV4cGFuZGVkQ2FsbGJhY2socmVz
dWx0KQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsK
LSAgICAgICAgICAgIHByZU91dHB1dChyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgp
OwotICAgICAgICB9Ci0gICAgICAgIHZhciBkYXRhRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkYXRhIik7Ci0gICAgICAgIGRhdGFFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImEiKSk7Ci0gICAgICAgIGRhdGFFbGVtZW50LnJlbW92ZUNoaWxkKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZDIiKSk7Ci0gICAgICAgIHZhciBhRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgZGF0YUVsZW1lbnQuaW5zZXJ0QmVm
b3JlKGFFbGVtZW50LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWQxIikpOwotICAgICAgICBk
YXRhRWxlbWVudC5hcHBlbmRDaGlsZChhRWxlbWVudCk7Ci0gICAgICAgIGRhdGFFbGVtZW50Lmlu
c2VydEJlZm9yZShhRWxlbWVudCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkMSIpKTsKLSAg
ICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcE5vZGUiLCBub2RlRHVt
cEJlZm9yZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PT09
PT09PT09IExvYWRlZCA1IGNoaWxkcmVuID09PT09PT09PT09Iik7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcEVsZW1lbnRzVHJlZSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKCJpbnNlcnROb2RlKCkiLCBzdGVwMyk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gZG9t
TG9hZGVkQ2FsbGJhY2socmVzdWx0KQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAg
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHByZU91dHB1dChyZXN1bHQpOwotICAgICAg
ICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgICAgIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IoImZyb250ZW5kX3JldmVhbEFuZEV4cGFuZERhdGFOb2RlSW5FbGVtZW50c1BhbmVsIiwg
bm9kZUV4cGFuZGVkQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMoc3RlcDQpOwogICAgIH0KIAotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IoImZyb250ZW5kX2xvYWRET00iLCBkb21Mb2FkZWRDYWxsYmFjayk7Ci19Ci0KLS8vIEZyb250
ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfc2hvd0FsbCh0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICB0cnkgewotICAgICAgICB2YXIgZGF0YURpdlRyZWVFbGVtZW50ID0gZnJvbnRl
bmRfZ2V0RGF0YVRyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmICghZGF0YURpdlRyZWVFbGVtZW50
KSB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJzaG93X0FsbDogTm8g
ZGF0YSBkaXYgdHJlZSBlbGVtZW50IGZvdW5kIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgd2luZG93Ll9fb2xkVXBkYXRlQ2hpbGRyZW4gPSBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUNoaWxkcmVuOwotICAgICAgICB3
aW5kb3cuX19uZXdVcGRhdGVDaGlsZHJlbiA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgd2lu
ZG93Ll9fb2xkVXBkYXRlQ2hpbGRyZW4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlQ2hp
bGRyZW4gPSB3aW5kb3cuX19vbGRVcGRhdGVDaGlsZHJlbjsKLSAgICAgICAgICAgIHRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoIiIpOwotICAgICAgICB9Ci0gICAgICAgIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW4gPSB3aW5kb3cuX19u
ZXdVcGRhdGVDaGlsZHJlbjsKLQotICAgICAgICBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxl
bWVudC5wcm90b3R5cGUuaGFuZGxlTG9hZEFsbENoaWxkcmVuLmNhbGwoZGF0YURpdlRyZWVFbGVt
ZW50KTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0gY2F0
Y2goZSkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJzaG93QWxsOiAiICsg
ZSk7CisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsgICAKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIj09PT09PT09PT09IE1vZGlmaWVkIGNoaWxkcmVuID09PT09PT09PT09Iik7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRzVHJlZSgpOworICAgICAgICBkYXRh
VHJlZUVsZW1lbnQuaGFuZGxlTG9hZEFsbENoaWxkcmVuKCk7CisgICAgICAgIEluc3BlY3RvclRl
c3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwNSk7CiAgICAgfQotfQogCi1mdW5jdGlv
biBmcm9udGVuZF9kdW1wTm9kZSh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnVuY3Rpb24gZHVtcEZ1bmN0aW9uKCkKKyAgICBmdW5j
dGlvbiBzdGVwNSgpCiAgICAgewotICAgICAgICB2YXIgZGF0YURpdlRyZWVFbGVtZW50ID0gZnJv
bnRlbmRfZ2V0RGF0YVRyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmICghZGF0YURpdlRyZWVFbGVt
ZW50KSB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJkdW1wTm9kZTog
Tm8gZGF0YSBkaXYgdHJlZSBlbGVtZW50IGZvdW5kIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgbGlDb250ZW50ID0gZGF0YURpdlRyZWVFbGVtZW50Lmxp
c3RJdGVtRWxlbWVudCA/IGRhdGFEaXZUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQudGV4dENv
bnRlbnQgOiAie0VNUFRZfSI7Ci0gICAgICAgIHZhciBjaGlsZHJlbkNvbnRlbnQgPSBkYXRhRGl2
VHJlZUVsZW1lbnQuY2hpbGRyZW5MaXN0RWxlbWVudCA/IGRhdGFEaXZUcmVlRWxlbWVudC5jaGls
ZHJlbkxpc3RFbGVtZW50LnRleHRDb250ZW50IDogIntFTVBUWX0iOwotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKGxpQ29udGVudCArICIvIiArIGNoaWxkcmVuQ29udGVudCk7Ci0g
ICAgfQotICAgIC8vIEVuc3VyZSBhbGwgYXN5bmNocm9ub3VzIHVwZGF0ZXMgdG8gdGhlIEVsZW1l
bnRzIHRyZWUgb3V0bGluZSBhcmUgcHJvY2Vzc2VkIGJlZm9yZSBkdW1waW5nLgotICAgIHNldFRp
bWVvdXQoZHVtcEZ1bmN0aW9uLCAwKTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfcmV2ZWFsQW5k
RXhwYW5kRGF0YU5vZGVJbkVsZW1lbnRzUGFuZWwodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdmFy
IGRhdGFEaXZUcmVlRWxlbWVudCA9IGZyb250ZW5kX2dldERhdGFUcmVlRWxlbWVudCgpOwotICAg
IGlmICghZGF0YURpdlRyZWVFbGVtZW50KSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoIk5vIGRhdGEgZGl2IHRyZWUgZWxlbWVudCBmb3VuZCIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGF0YURpdlRyZWVFbGVtZW50Ll9leHBhbmRl
ZENoaWxkcmVuTGltaXQgPSA1OwotICAgICAgICBkYXRhRGl2VHJlZUVsZW1lbnQucmV2ZWFsKCk7
Ci0gICAgICAgIGRhdGFEaXZUcmVlRWxlbWVudC5leHBhbmQoKTsKLSAgICAgICAgdGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgiIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoImV4cGFuZE5vZGU6ICIgKyBlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGZyb250ZW5kX2xvYWRET00odGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgIC8vIE5lZWQgdGVzdCB0byBiZSBhc3luYyB0byBleHBh
bmQgd2hvbGUgdGhlIHRyZWUgZmlyc3QuCi0gICAgdHJ5IHsKLSAgICAgICAgZnJvbnRlbmRfZXhw
YW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgdGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZS5iaW5kKHRlc3RDb250cm9sbGVyLCAiIikpOwotICAgIH0gY2F0Y2goZSkgewot
ICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJsb2FkRE9NOiAiICsgZSk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9nZXREYXRhVHJlZUVsZW1lbnQoKQotewotICAgIHZh
ciBub2RlID0gZnJvbnRlbmRfZ2V0RGF0YURPTUVsZW1lbnQoKTsKLSAgICBpZiAoIW5vZGUpCi0g
ICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChub2RlKTsKLX0KLQotCi1mdW5jdGlvbiBm
cm9udGVuZF9nZXREYXRhRE9NRWxlbWVudCgpCi17Ci0gICAgdmFyIGlubmVyTWFwcGluZyA9IFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5faWRUb0RPTU5vZGU7Ci0KLSAgICBmb3IgKHZhciBub2RlSWQg
aW4gaW5uZXJNYXBwaW5nKSB7Ci0gICAgICAgIHZhciBub2RlID0gaW5uZXJNYXBwaW5nW25vZGVJ
ZF07Ci0gICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09PSAiRElWIiAmJiBub2RlLmdldEF0dHJp
YnV0ZSgiaWQiKSA9PT0gImRhdGEiKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09PT09PT09PSBMb2FkZWQgYWxsIGNoaWxkcmVu
ID09PT09PT09PT09Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRzVHJlZSgp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KLSAgICByZXR1
cm4gbnVsbDsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgp
Ij4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxkaXYgaWQ9ImRhdGEiPgogPGRpdiBpZD0i
aWQxIj4xPC9kaXY+CiA8ZGl2IGlkPSJpZDIiPjI8L2Rpdj4KQEAgLTE3Myw3ICs3Niw1IEBAIGZ1
bmN0aW9uIGZyb250ZW5kX2dldERhdGFET01FbGVtZW50KCkKIDxwPgogVGVzdHMgdGhhdCBzcmMg
YW5kIGhyZWYgZWxlbWVudCB0YXJnZXRzIGFyZSByZXdyaXR0ZW4gcHJvcGVybHkuCiA8L3A+Ci08
cHJlIGlkPSJvdXRwdXRQcmUiPgotPC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtcmV3cml0ZS1ocmVmLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhy
ZWYtZXhwZWN0ZWQudHh0CmluZGV4IGExNTMyY2RkZTBmYjg4NzQzMzVjZjdhZjVlNzFkNmFkMDEx
ZWU0ZWIuLjZkMDkwZDVkYWQ1NDQ3NjA3ZGMwZGE3YmU4MTU1NTlkZGM0YWQwY2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhyZWYtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdy
aXRlLWhyZWYtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogVGVzdHMgdGhhdCBzcmMgYW5k
IGhyZWYgZWxlbWVudCB0YXJnZXRzIGFyZSByZXdyaXR0ZW4gcHJvcGVybHkuCiAKLVssYm9ndXNT
aGVldDEuY3NzXQotW0xheW91dFRlc3RzLGluc3BlY3Rvcixib2d1c1NoZWV0Mi5jc3NdCi1bdGVz
dHMsaW5zcGVjdG9yLGluc3BlY3Rvci10ZXN0LmpzXQotW0xheW91dFRlc3RzLGluc3BlY3Rvcixl
bGVtZW50cy10ZXN0cy5qc10KKyxib2d1c1NoZWV0MS5jc3MKK0xheW91dFRlc3RzLGluc3BlY3Rv
cixib2d1c1NoZWV0Mi5jc3MKK3Rlc3RzLGluc3BlY3RvcixpbnNwZWN0b3ItdGVzdDIuanMKK3Rl
c3RzLGluc3BlY3RvcixlbGVtZW50cy10ZXN0LmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhyZWYuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRlLWhyZWYuaHRtbAppbmRleCBmMTdjMzAw
ODRiYWU0MjY2ZTBiMzY5ZjU5MmRjZDcyNWI2OTJhMTEwLi40NjYyOWNlMTA4OTQzZGIwODc5Mjcx
MmU4MjFhOTdkMDYzYmUyZDk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMtcGFuZWwtcmV3cml0ZS1ocmVmLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VsZW1lbnRzLXBhbmVsLXJld3JpdGUtaHJlZi5odG1sCkBAIC0zLDYxICszLDQ0IEBACiA8aGVh
ZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgc3JjPSIvYm9ndXNTaGVldDEuY3NzIj4KIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgc3JjPSJib2d1c1NoZWV0Mi5jc3MiPgotPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgZnVu
Y3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvdXRwdXQoIlsiICsgcmVzdWx0W2ld
ICsgIl0iKTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UmV3cml0ZUhyZWZzIiwgY2FsbGJhY2spOwotfQorICAg
IEluc3BlY3RvclRlc3QucHVzaEFsbERPTShzdGVwMSk7CiAKLQotLy8gRnJvbnRlbmQgZnVuY3Rp
b25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF90ZXN0UmV3cml0ZUhyZWZzKHRlc3RDb250cm9sbGVy
KQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAvLyBOZWVkIHRl
c3QgdG8gYmUgYXN5bmMgdG8gZXhwYW5kIHdob2xlIHRoZSB0cmVlIGZpcnN0LgotICAgIGZyb250
ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZyb250ZW5k
X3Rlc3RSZXdyaXRlSHJlZnNDb250aW51YXRpb24pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF90
ZXN0UmV3cml0ZUhyZWZzQ29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewotICAgIHZhciBp
bm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOwotICAgIHZh
ciByZXN1bHQgPSBbXTsKLQotICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbm5lck1hcHBpbmcpIHsK
LSAgICAgICAgdmFyIG5vZGUgPSBpbm5lck1hcHBpbmdbbm9kZUlkXTsKLSAgICAgICAgaWYgKG5v
ZGUubm9kZU5hbWUgPT09ICJMSU5LIiB8fCBub2RlLm5vZGVOYW1lID09PSAiU0NSSVBUIikgewot
ICAgICAgICAgICAgdmFyIHNlZ21lbnRzID0gW107Ci0gICAgICAgICAgICB2YXIgaHJlZiA9IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVVSTEZvclJlbGF0ZWROb2RlKG5vZGUsIG5vZGUuZ2V0QXR0cmli
dXRlKCJzcmMiKSB8fCBub2RlLmdldEF0dHJpYnV0ZSgiaHJlZiIpKTsKLSAgICAgICAgICAgIGlm
ICghaHJlZikgewotICAgICAgICAgICAgICAgIHNlZ21lbnRzLnB1c2goIjxlbXB0eT4iKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAg
ICAgICB2YXIgaW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9pZFRvRE9NTm9k
ZTsKKworICAgICAgICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7CisgICAgICAg
ICAgICB2YXIgbm9kZSA9IGlubmVyTWFwcGluZ1tub2RlSWRdOworICAgICAgICAgICAgaWYgKG5v
ZGUubm9kZU5hbWUgPT09ICJMSU5LIiB8fCBub2RlLm5vZGVOYW1lID09PSAiU0NSSVBUIikgewor
ICAgICAgICAgICAgICAgIHZhciBzZWdtZW50cyA9IFtdOworICAgICAgICAgICAgICAgIHZhciBo
cmVmID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMRm9yUmVsYXRlZE5vZGUobm9kZSwgbm9kZS5n
ZXRBdHRyaWJ1dGUoInNyYyIpIHx8IG5vZGUuZ2V0QXR0cmlidXRlKCJocmVmIikpOworICAgICAg
ICAgICAgICAgIGlmICghaHJlZikgeworICAgICAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNo
KCI8ZW1wdHk+Iik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgcGFyc2VkVVJMID0gaHJlZi5hc1BhcnNlZFVSTCgp
OworICAgICAgICAgICAgICAgIGlmICghcGFyc2VkVVJMKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJGQUlMOiBubyBVUkwgbWF0Y2ggZm9yIDwiICsgaHJl
ZiArICI+Iik7CisgICAgICAgICAgICAgICAgdmFyIHNwbGl0ID0gcGFyc2VkVVJMLnBhdGguc3Bs
aXQoIi8iKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3BsaXQubGVuZ3RoIC0gMSwg
aiA9IDA7IGogPCAzICYmIGkgPj0gMDsgLS1pLCArK2opCisgICAgICAgICAgICAgICAgICAgIHNl
Z21lbnRzLnB1c2goc3BsaXRbaV0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHNlZ21lbnRzLnJldmVyc2UoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
YXIgcGFyc2VkVVJMID0gaHJlZi5hc1BhcnNlZFVSTCgpOwotICAgICAgICAgICAgaWYgKCFwYXJz
ZWRVUkwpCi0gICAgICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgiRkFJTDog
bm8gVVJMIG1hdGNoIGZvciA8IiArIGhyZWYgKyAiPiIpOwotICAgICAgICAgICAgdmFyIHNwbGl0
ID0gcGFyc2VkVVJMLnBhdGguc3BsaXQoIi8iKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSBz
cGxpdC5sZW5ndGggLSAxLCBqID0gMDsgaiA8IDMgJiYgaSA+PSAwOyAtLWksICsraikKLSAgICAg
ICAgICAgICAgICBzZWdtZW50cy5wdXNoKHNwbGl0W2ldKTsKLSAgICAgICAgICAgIHJlc3VsdC5w
dXNoKHNlZ21lbnRzLnJldmVyc2UoKSk7CiAgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZShy
ZXN1bHQpOwogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQo
KSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgc3JjIGFuZCBo
cmVmIGVsZW1lbnQgdGFyZ2V0cyBhcmUgcmV3cml0dGVuIHByb3Blcmx5LgogPC9wPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1y
ZWZyZXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5l
bC1zZWxlY3Rpb24tb24tcmVmcmVzaC1leHBlY3RlZC50eHQKaW5kZXggNjU4YmI3YWEwNjAzOTBk
Yjk5Yzg5YTBjZDQ4YjFjYzQzZmI2ZTc2OC4uYjc3NTZiMWY0YzIxZDZlODViOGVlZjFlZjk3YWFl
YmZjMTcwNGM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBh
bmVsLXNlbGVjdGlvbi1vbi1yZWZyZXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc2VsZWN0aW9uLW9uLXJlZnJlc2gtZXhwZWN0ZWQudHh0
CkBAIC0xLDQgKzEsNSBAQAogVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBwcmVzZXJ2ZXMgc2Vs
ZWN0ZWQgbm9kZSBvbiBwYWdlIHJlZnJlc2guCiAKK1BhZ2UgcmVsb2FkZWQuCiBTZWxlY3RlZCBl
bGVtZW50IHNob3VsZCBiZSAnUCcsIHdhczogJ1AnCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zZWxlY3Rpb24tb24tcmVmcmVzaC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZyZXNoLmh0
bWwKaW5kZXggYzI2ZGFkYmM0MmNiNWNiMjUwMjVjNWFjN2Y1ZTNhNTFlYjEzOTUzNS4uYzVmMmUz
MTIxNzA5YmUzOGJiNzkwYjExOTJhNDM2Njk5MjVkMDkxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZyZXNoLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXNlbGVjdGlvbi1vbi1yZWZy
ZXNoLmh0bWwKQEAgLTEsNTQgKzEsMzcgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBm
dW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0
aElkKCJ0ZXN0LXRvcGljIiwgc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsK
LSAgICAgICAgaWYgKHJlc3VsdCA9PT0gInJlbG9hZCIpCi0gICAgICAgICAgICB3aW5kb3cubG9j
YXRpb24ucmVsb2FkKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgb3V0cHV0KCJTZWxl
Y3RlZCBlbGVtZW50IHNob3VsZCBiZSAnUCcsIHdhczogJyIgKyByZXN1bHQgKyAiJyIpOwotICAg
ICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3Qu
cmVsb2FkUGFnZShzdGVwMik7CisgICAgfQorIAorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7
CiAgICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3NlbGVjdEVsZW1l
bnQiLCBjYWxsYmFjayk7Ci19Ci0KLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KIAotZnVuY3Rpb24g
ZnJvbnRlbmRfc2VsZWN0RWxlbWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBpZiAod2luZG93
LnJlZnJlc2hDYWxsZWQpIHsKKyAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgewogICAgICAgICAv
LyBXZSBzaG91bGQgaGF2ZSAidGVzdC10b3BpYyIgZWxlbWVudCBzZWxlY3RlZCBhZnRlciByZWZy
ZXNoLgogICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5l
bGVtZW50cy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICByZXR1cm4g
c2VsZWN0ZWRFbGVtZW50ID8gc2VsZWN0ZWRFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVO
YW1lIDogIm51bGwiOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFNlbGVjdCB0aGUgInRlc3Qt
dG9waWMiIGVsZW1lbnQuCi0gICAgICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICAgICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwg
bnVsbCwgZnJvbnRlbmRfc2VsZWN0RWxlbWVudENvbnRpbnVhdGlvbik7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiBmcm9udGVuZF9zZWxlY3RFbGVtZW50Q29udGludWF0aW9uKHRlc3RDb250cm9sbGVy
KQotewotICAgIHZhciBub2RlID0gZnJvbnRlbmRfbm9kZUZvcklkKCJ0ZXN0LXRvcGljIik7Ci0g
ICAgaWYgKG5vZGUpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVl
T3V0bGluZS5yZXZlYWxBbmRTZWxlY3ROb2RlKG5vZGUpOwotICAgICAgICB3aW5kb3cucmVmcmVz
aENhbGxlZCA9IHRydWU7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoInJlbG9h
ZCIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBub2RlTmFtZSA9IHNlbGVjdGVkRWxl
bWVudCA/IHNlbGVjdGVkRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5ub2RlTmFtZSA6ICJudWxs
IjsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNlbGVjdGVkIGVsZW1lbnQgc2hv
dWxkIGJlICdQJywgd2FzOiAnIiArIG5vZGVOYW1lICsgIiciKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgiRkFJTCIpOwogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxv
YWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cCBpZD0idGVzdC10b3BpYyI+CiBU
ZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHByZXNlcnZlcyBzZWxlY3RlZCBub2RlIG9uIHBhZ2Ug
cmVmcmVzaC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50
cy1wYW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKaW5kZXggZTlhN2YyOTg1NWY4MmYz
ZWEzZmNhODQxMzg3ZmY2ODMwYjA5MzgxMC4uY2I3ZGViOThlMDMxNDFiZGUxYjJhY2I1ZWViM2Rh
YWQ0ODZmMTBmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBh
bmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMjUgQEAKIFRl
c3RzIHRoYXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0dXJlLgogCitUZXh0
CiAKIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRp
b25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgogPGh0bWw+
Ci08aGVhZD7igKYKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0Mi5qcyI+Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj4KKzwvc2NyaXB0PgorPHNjcmlwdD5mdW5j
dGlvbiB0ZXN0KCl7ICAgIEluc3BlY3RvclRlc3QucHVzaEFsbERPTShzdGVwMSk7ICAgIGZ1bmN0
aW9uIHN0ZXAxKCkgICAgeyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTG9hZGVkRE9NKCk7ICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOyAgICB9fQorPC9zY3JpcHQ+CiA8L2hl
YWQ+Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
IDxwPlRlc3RzIHRoYXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0dXJlLgog
PC9wPgotPHByZSBpZD0ib3V0cHV0UHJlIj4KLTwvcHJlPgotPGRpdiBpZD0ib3V0cHV0IiBzdHls
ZT0id2hpdGUtc3BhY2U6IHByZTsgIj4KKzxkaXYgaWQ9ImxldmVsMSI+Cis8ZGl2IGlkPSJsZXZl
bDIiPiJUZXh0ICAgICAgICAiCis8ZGl2IGlkPSJsZXZlbDMiPgorPC9kaXY+Cis8L2Rpdj4KIDwv
ZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS5odG1sCmluZGV4IDMzZmE0MTQ2MDUzYjc1ZGI3NzBmYTlh
Y2ZiZWI4NjRiNWIyMjhlNmUuLjA1MzZmYTkyYzU0MTFmNDcyOWVhM2NkZTMwYjk3NjZjYmRiMDMz
M2EgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1
Y3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLmh0bWwKQEAgLTEsNDYgKzEsMzQgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9U
Ui9odG1sNC9sb29zZS5kdGQiPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iZWxlbWVudHMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3QoKQogewotICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKHJlc3VsdCkKKyAgICBJbnNwZWN0b3JUZXN0LnB1c2hBbGxET00oc3RlcDEpOwor
CisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdmFyIG91dHB1dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQcmUiKTsKLSAgICAgICAgb3V0cHV0LnRleHRDb250
ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikucmVwbGFjZSgvXG4vZywgIiIpLnJl
cGxhY2UoLzwvZywgIlxuPCIpOwotICAgICAgICBub3RpZnlEb25lKCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcExvYWRlZERPTSgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1w
QWxsRWxlbWVudHMiLCBjYWxsYmFjayk7Ci19Ci0KLQotLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgot
Ci1mdW5jdGlvbiBmcm9udGVuZF9kdW1wQWxsRWxlbWVudHModGVzdENvbnRyb2xsZXIpCi17Ci0g
ICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIC8vIE5lZWQgdGVzdCB0byBi
ZSBhc3luYyB0byBleHBhbmQgd2hvbGUgdGhlIHRyZWUgZmlyc3QuCi0gICAgZnJvbnRlbmRfZXhw
YW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfcmVwb3J0
VGV4dENvbnRlbnQpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9yZXBvcnRUZXh0Q29udGVudCh0
ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFdlYkluc3Bl
Y3Rvci5wYW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUuZWxlbWVudC50ZXh0Q29udGVudCk7CiB9
CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93
cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCiA8L3A+CiAKLTxwcmUgaWQ9Im91dHB1dFByZSI+Ci08L3By
ZT4KKzxkaXYgaWQ9ImxldmVsMSI+CisgICAgPGRpdiBpZD0ibGV2ZWwyIj5UZXh0CisgICAgICAg
IDxkaXYgaWQ9ImxldmVsMyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KIAogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVs
LXN0eWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0eWxl
cy5odG1sCmluZGV4IDFkMzFkYmU1MDUyYjc0ODQxYWJiOTE3MWFjOThiMzk5ODQwODc4MmEuLjRi
MTg2MGYzZDY0NjI3YTMzNGI5YmYzYmI2ZDY0NDM4MjUyNGZjMDQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHlsZXMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmh0bWwKQEAgLTEsMzYgKzEsMjYg
QEAKIDxodG1sPgogPGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
IiBocmVmPSJyZXNvdXJjZXMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzcyI+Ci08c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3QoKQogewot
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5v
ZGVXaXRoSWQoImZvbyIsIHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0g
ICAgICAgIGR1bXBBcnJheShyZXN1bHQpOwotICAgICAgICBub3RpZnlEb25lKCk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgZmFsc2UpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wU3R5bGVzIiwgY2FsbGJhY2spOwotfQotCi0v
LyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBTdHlsZXModGVz
dENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAg
IGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZy
b250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51YXRpb24pOwogfQogCi1mdW5jdGlvbiBmcm9udGVu
ZF9zZWxlY3RFbGVtZW50Q29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewotICAgIGZyb250
ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJmb28iLCBmcm9udGVuZF9k
dW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKTsKLX0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9k
eSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVz
dHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBwcm9wZXIgc3R5bGVzIGluIHRoZSBzaWRlYmFy
IHBhbmVsLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXBhbmVsLXhodG1sLXN0cnVjdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtcGFuZWwteGh0bWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dAppbmRleCA3YzA3
MDkzMGY0N2NmMzdiODY1N2VmOWYwY2ZlMjZlYWQzOGUwNzM0Li4wZDc5ODMwNmI3ZWI1MzVmMzVi
MDg3YmNhZWQxZjljMTk4MmIwOWUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZWxlbWVudHMtcGFuZWwteGh0bWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwteGh0bWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4
dApAQCAtNCwxMSArNCwxOCBAQCBQYXJhZ3JhcGggQlIgdGVzdAogTmV4dCBsaW5lCiAKICAKLWFw
cGxpY2F0aW9uL3hodG1sK3htbCAKKwogPEhUTUwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiPgotPEhlYWQ+4oCmCis8SGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPgorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+Cis8IVtDREFUQVtmdW5jdGlvbiB0ZXN0KCl7ICAgIEluc3BlY3RvclRlc3QucHVzaEFs
bERPTShzdGVwMSk7ICAgIGZ1bmN0aW9uIHN0ZXAxKCkgICAgeyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wTG9hZGVkRE9NKCk7ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOyAg
ICB9fV1dPgorPC9zY3JpcHQ+CiA8L0hlYWQ+Ci08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPiJUZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNo
b3dzIFhNTCBkb20gdHJlZSBzdHJ1Y3R1cmUgd2l0aCBjbG9zaW5nIHRhZ3MgZm9yIGFsbCBlbGVt
ZW50cy4iCiA8L3A+CiA8aHI+CkBAIC0yMCwxMCArMjcsNiBAQCBhcHBsaWNhdGlvbi94aHRtbCt4
bWwKIDwhW0NEQVRBWyBDRGF0YSBDb250ZW50IF1dPgogPGltZyBhbHQ9IlJhbmRvbSBJbWFnZSI+
CiA8L2ltZz4KLTxwcmUgaWQ9Im91dHB1dFByZSI+Ci08L3ByZT4KLTxkaXYgaWQ9Im91dHB1dCIg
c3R5bGU9IndoaXRlLXNwYWNlOiBwcmU7ICI+Ci08L2Rpdj4KIDwvYm9keT4KIDwvSFRNTD4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXhodG1sLXN0
cnVjdHVyZS54aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC14aHRt
bC1zdHJ1Y3R1cmUueGh0bWwKaW5kZXggZDVmMDQ5MTMxOWFjMjUyM2NjNmVmZWU2OTIzZGZlN2M3
NjQ2NGM5MC4uMTFiMmI3NDVjYzYyZDMzZGQ2ZTk2YTIwMmUxNTFjNDU1ZTI2OGRjOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXhodG1sLXN0cnVjdHVy
ZS54aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwteGh0bWwt
c3RydWN0dXJlLnhodG1sCkBAIC0xLDEwOSArMSwyNCBAQAogPEhUTUwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgogPEhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVs
ZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
IDwhW0NEQVRBWwotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5j
dGlvbiBwcmVPdXRwdXQocmVzdWx0KQotICAgIHsKLSAgICAgICAgdmFyIG91dHB1dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQcmUiKTsKLSAgICAgICAgb3V0cHV0LnRleHRDb250
ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikucmVwbGFjZSgvXG4vZywgIiIpLnJl
cGxhY2UoLzwvZywgIlxuPCIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vZGVEdW1wQ2FsbGJh
Y2soZHVtcCkKLSAgICB7Ci0gICAgICAgIHByZU91dHB1dChkdW1wKTsKLSAgICAgICAgbm90aWZ5
RG9uZSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5vZGVFeHBhbmRlZENhbGxiYWNrKHJlc3Vs
dCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHByZU91dHB1dChy
ZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgICAgIGV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1bXBBbGxFbGVtZW50cyIsIG5vZGVEdW1w
Q2FsbGJhY2spOwotICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnB1c2hBbGxET00oc3RlcDEpOwog
Ci0gICAgZnVuY3Rpb24gZG9tTG9hZGVkQ2FsbGJhY2socmVzdWx0KQorICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKICAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHByZU91dHB1
dChyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgICAg
IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2V4cGFuZE5vZGVzIiwgbm9kZUV4cGFu
ZGVkQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBMb2FkZWRET00oKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0KLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9sb2FkRE9NIiwgZG9tTG9hZGVkQ2FsbGJhY2spOwot
fQotCi0KLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcEFs
bEVsZW1lbnRzKHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICAvLyBOZWVkIHRlc3QgdG8gYmUgYXN5bmMgdG8gZXhwYW5kIHdob2xlIHRo
ZSB0cmVlIGZpcnN0LgotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENv
bnRyb2xsZXIsIG51bGwsIGZyb250ZW5kX3JlcG9ydE1pbWVUeXBlQW5kQ29udGVudCk7CiB9Ci0K
LWZ1bmN0aW9uIGZyb250ZW5kX3JlcG9ydE1pbWVUeXBlQW5kQ29udGVudCh0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFdlYkluc3BlY3Rvci5tYWluUmVz
b3VyY2UubWltZVR5cGUgKyAiICIgKyBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnRyZWVP
dXRsaW5lLmVsZW1lbnQudGV4dENvbnRlbnQpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9leHBh
bmROb2Rlcyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0cnkgewotICAgICAgICB2YXIgaW5uZXJN
YXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9pZFRvRE9NTm9kZTsKLSAgICAgICAgdmFy
IHRyZWVFbGVtZW50ID0gZmFsc2U7Ci0gICAgICAgIHZhciByZXN1bHQgPSAiIjsKLQotICAgICAg
ICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7Ci0gICAgICAgICAgICB2YXIgbm9k
ZSA9IGlubmVyTWFwcGluZ1tub2RlSWRdOwotICAgICAgICAgICAgcmVzdWx0ICs9IG5vZGUubm9k
ZU5hbWUgKyAiICI7Ci0gICAgICAgICAgICBpZiAobm9kZS5ub2RlTmFtZSA9PT0gInAiKSB7Ci0g
ICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRz
LnRyZWVPdXRsaW5lLmNyZWF0ZVRyZWVFbGVtZW50Rm9yKG5vZGUpOwotICAgICAgICAgICAgICAg
IGlmICh0cmVlRWxlbWVudCkgewotICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZXZl
YWwoKTsKLSAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0cmVl
RWxlbWVudCkgewotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50ID09PSBmYWxzZSkKLSAgICAg
ICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJObyAncCcgRE9NIGVsZW1lbnQg
Zm91bmQiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCIncCcgdHJlZSBlbGVtZW50IGNvdWxkIG5vdCBiZSBjcmVhdGVkIik7Ci0K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoIiIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICB0ZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCJleHBhbmROb2RlOiAiICsgZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBm
cm9udGVuZF9sb2FkRE9NKHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICAvLyBOZWVkIHRlc3QgdG8gYmUgYXN5bmMgdG8gZXhwYW5kIHdo
b2xlIHRoZSB0cmVlIGZpcnN0LgotICAgIHRyeSB7Ci0gICAgICAgIGZyb250ZW5kX2V4cGFuZERP
TVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIHRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUuYmluZCh0ZXN0Q29udHJvbGxlciwgIiIpKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgibG9hZERPTTogIiArIGUpOwotICAgIH0KLX0K
LQogXV0+CiA8L3NjcmlwdD4KIDwvSGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgZWxlbWVudHMgcGFuZWwg
c2hvd3MgWE1MIGRvbSB0cmVlIHN0cnVjdHVyZSB3aXRoIGNsb3NpbmcgdGFncyBmb3IgYWxsIGVs
ZW1lbnRzLgogPC9wPgpAQCAtMTE1LDggKzMwLDUgQEAgVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5l
bCBzaG93cyBYTUwgZG9tIHRyZWUgc3RydWN0dXJlIHdpdGggY2xvc2luZyB0YWdzIGZvciBhbGwK
IAogPGltZyBhbHQ9IlJhbmRvbSBJbWFnZSI+PC9pbWc+CiAKLTxwcmUgaWQ9Im91dHB1dFByZSI+
Ci08L3ByZT4KLQogPC9ib2R5PgogPC9IVE1MPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXRlc3RzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzZTA2OTI2ZWEzZTllYmI3
ODk0Y2FjOWQ5NTBkNjJkYzllMWUwODE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0cy5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCi0K
LWZ1bmN0aW9uIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWUobm9kZSkKLXsKLSAgICBub2RlID0g
bm9kZSB8fCBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQ7Ci0gICAgZnVuY3Rpb24gcHJv
Y2Vzc0NoaWxkcmVuKGNoaWxkcmVuKQotICAgIHsKLSAgICAgICBmb3IgKHZhciBpID0gMDsgY2hp
bGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICBmcm9udGVuZF9l
eHBhbmRET01TdWJ0cmVlKGNoaWxkcmVuW2ldKTsKLSAgICB9Ci0gICAgV2ViSW5zcGVjdG9yLmRv
bUFnZW50LmdldENoaWxkTm9kZXNBc3luYyhub2RlLCBwcm9jZXNzQ2hpbGRyZW4pOwotfQotCi1m
dW5jdGlvbiBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlQW5kUnVuKHRlc3RDb250cm9sbGVyLCBu
b2RlLCBjb250aW51YXRpb24pCi17Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZShub2Rl
KTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGNvbnRpbnVh
dGlvbi5iaW5kKHRoaXMsIHRlc3RDb250cm9sbGVyKSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5k
X25vZGVGb3JJZChpZFZhbHVlKQotewotICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOwotICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbm5lck1h
cHBpbmcpIHsKLSAgICAgICAgdmFyIG5vZGUgPSBpbm5lck1hcHBpbmdbbm9kZUlkXTsKLSAgICAg
ICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpID09PSBpZFZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuIG5vZGU7Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotfQotCi1mdW5jdGlvbiBmcm9u
dGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCBpZFZhbHVlLCBjb250aW51
YXRpb24pCi17Ci0gICAgdmFyIG5vZGUgPSBmcm9udGVuZF9ub2RlRm9ySWQoaWRWYWx1ZSk7Ci0g
ICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoIk5vIG5v
ZGUgZm91bmQuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
dXBkYXRlRm9jdXNlZE5vZGUobm9kZS5pZCk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlcyhjb250aW51YXRpb24uYmluZCh0aGlzLCB0ZXN0Q29udHJvbGxlcikp
OwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRlc3RD
b250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoZnJvbnRlbmRfZ2V0
U2VsZWN0ZWRFbGVtZW50U3R5bGVzKGZhbHNlKSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2dl
dFNlbGVjdGVkRWxlbWVudFN0eWxlcyhleGNsdWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaGVkKQot
ewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uczsKLSAgICBm
b3IgKHZhciBwc2V1ZG9JZCBpbiBzdHlsZVNlY3Rpb25zKSB7Ci0gICAgICAgIHZhciBwc2V1ZG9O
YW1lID0gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVkb0lkTmFtZXNbcHNldWRv
SWRdOwotICAgICAgICB2YXIgc2VjdGlvbnMgPSBzdHlsZVNlY3Rpb25zW3BzZXVkb0lkXTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uc1tpXTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9u
LmNvbXB1dGVkU3R5bGUgJiYgZXhjbHVkZUNvbXB1dGVkKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgaWYgKHNlY3Rpb24ucnVsZSAmJiBleGNsdWRlTWF0Y2hlZCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uLmVsZW1lbnQu
cHJldmlvdXNTaWJsaW5nICYmIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcuY2xhc3NO
YW1lID09PSAic3R5bGVzLXNpZGViYXItc2VwYXJhdG9yIikKLSAgICAgICAgICAgICAgICByZXN1
bHQucHVzaCgiPT09PT09PT0gIiArIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcudGV4
dENvbnRlbnQgKyAiID09PT09PT09Iik7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgoc2VjdGlv
bi5leHBhbmRlZCA/ICJbZXhwYW5kZWRdICIgOiAiW2NvbGxhcHNlZF0gIikgKyBzZWN0aW9uLnRp
dGxlRWxlbWVudC50ZXh0Q29udGVudCArICIgKCIgKyBzZWN0aW9uLnN1YnRpdGxlQXNUZXh0Rm9y
VGVzdCArICIpIik7Ci0gICAgICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwotICAgICAgICAgICAg
ZnJvbnRlbmRfZHVtcFN0eWxlVHJlZU91dGxpbmUoc2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91dGxp
bmUsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgiIik7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmVzdWx0LnB1c2goIiIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1m
dW5jdGlvbiBmcm9udGVuZF9nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKHByb3BlcnR5
TmFtZSkKLXsKLSAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxl
bWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uc1swXTsKLSAgICB2YXIgZWxlbWVudFN0
eWxlU2VjdGlvbiA9IHN0eWxlU2VjdGlvbnNbMV07Ci0gICAgdmFyIG91dGxpbmUgPSBlbGVtZW50
U3R5bGVTZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHRyZWVJdGVt
ID0gb3V0bGluZS5jaGlsZHJlbltpXTsKLSAgICAgICAgaWYgKHRyZWVJdGVtLm5hbWUgPT09IHBy
b3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiB0cmVlSXRlbTsKLSAgICB9Ci0gICAgcmV0
dXJuIG51bGw7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBTdHlsZVRyZWVPdXRsaW5lKHRy
ZWVJdGVtLCByZXN1bHQpCi17Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAg
ZnJvbnRlbmRfZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHJlc3VsdCwgIiIpOwotfQot
Ci1mdW5jdGlvbiBmcm9udGVuZF9kdW1wU3R5bGVUcmVlSXRlbSh0cmVlSXRlbSwgcmVzdWx0LCBw
cmVmaXgpCi17Ci0gICAgLy8gRmlsdGVyIG91dCB3aWR0aCBhbmQgaGVpZ2h0IHByb3BlcnRpZXMg
aW4gb3JkZXIgdG8gbWluaW1pemUKLSAgICAvLyBwb3RlbnRpYWwgZGlmZnMuCi0gICAgaWYgKCF0
cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRlbnQuaW5kZXhPZigid2lkdGgiKSB8fAot
ICAgICAgICAhdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50LmluZGV4T2YoImhl
aWdodCIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodHJlZUl0ZW0ubGlzdEl0ZW1FbGVt
ZW50Lmhhc1N0eWxlQ2xhc3MoImluaGVyaXRlZCIpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFy
IHR5cGVQcmVmaXggPSAiIjsKLSAgICBpZiAodHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50Lmhhc1N0
eWxlQ2xhc3MoIm92ZXJsb2FkZWQiKSkKLSAgICAgICAgdHlwZVByZWZpeCArPSAiLy0tIG92ZXJs
b2FkZWQgLS0vICI7Ci0gICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5oYXNTdHlsZUNs
YXNzKCJkaXNhYmxlZCIpKQotICAgICAgICB0eXBlUHJlZml4ICs9ICIvLS0gZGlzYWJsZWQgLS0v
ICI7Ci0gICAgdmFyIHRleHRDb250ZW50ID0gdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRD
b250ZW50OwotCi0gICAgLy8gQWRkIG5vbi1zZWxlY3RhYmxlIHVybCB0ZXh0LgotICAgIHZhciB0
ZXh0RGF0YSA9IHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS11
bmNvcHlhYmxlXSIpOwotICAgIGlmICh0ZXh0RGF0YSkKLSAgICAgICAgdGV4dENvbnRlbnQgKz0g
dGV4dERhdGEuZ2V0QXR0cmlidXRlKCJkYXRhLXVuY29weWFibGUiKTsKLQotICAgIHJlc3VsdC5w
dXNoKHByZWZpeCArIHR5cGVQcmVmaXggKyB0ZXh0Q29udGVudCk7Ci0gICAgdHJlZUl0ZW0uZXhw
YW5kKCk7Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGNoaWxkcmVuICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAg
ZnJvbnRlbmRfZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHJlc3VsdCwgcHJlZml4ICsg
IiAgICAiKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0czIuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdHMyLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1YjRmZmVhNDRiN2NlZmNlMjhjNGUyODI2ZTlkM2Qw
ODgzM2Q2YjA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0czIuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTkgKzAsMCBAQAotdmFyIGluaXRpYWxpemVfRWxlbWVudFRlc3QgPSBmdW5jdGlvbigp
IHsKLQotSW5zcGVjdG9yVGVzdC5leHBhbmRET01TdWJ0cmVlID0gZnVuY3Rpb24obm9kZSkKLXsK
LSAgICBub2RlID0gbm9kZSB8fCBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQ7Ci0gICAg
ZnVuY3Rpb24gcHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuKQotICAgIHsKLSAgICAgICBmb3IgKHZh
ciBpID0gMDsgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWUoY2hpbGRyZW5baV0pOwotICAgIH0KLSAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZ2V0Q2hpbGROb2Rlc0FzeW5jKG5vZGUsIHByb2Nlc3ND
aGlsZHJlbik7Ci19OwotCi1JbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4gPSBm
dW5jdGlvbihub2RlLCBjYWxsYmFjaykKLXsKLSAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1
YnRyZWUobm9kZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVz
KGNhbGxiYWNrKTsKLX07Ci0KLUluc3BlY3RvclRlc3Qubm9kZUZvcklkID0gZnVuY3Rpb24oaWRW
YWx1ZSkKLXsKLSAgICB2YXIgaW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9p
ZFRvRE9NTm9kZTsKLSAgICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7Ci0gICAg
ICAgIHZhciBub2RlID0gaW5uZXJNYXBwaW5nW25vZGVJZF07Ci0gICAgICAgIGlmIChub2RlLmdl
dEF0dHJpYnV0ZSgiaWQiKSA9PT0gaWRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbDsKLX07Ci0KLUluc3BlY3RvclRlc3Quc2VsZWN0RWxlbWVu
dEFuZFJ1biA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQotewotICAgIHZhciBub2RlID0g
SW5zcGVjdG9yVGVzdC5ub2RlRm9ySWQoaWRWYWx1ZSk7Ci0gICAgaWYgKG5vZGUpCi0gICAgICAg
IFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2VkTm9kZShub2RlLmlkKTsKLSAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJhY2spOwotfTsKLQotSW5zcGVjdG9y
VGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oKQotewotICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxl
cyhmYWxzZSkpOwotfTsKLQotSW5zcGVjdG9yVGVzdC5nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXMg
PSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaGVkKQotewotICAgIHZhciBy
ZXN1bHQgPSBbXTsKLSAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uczsKLSAgICBmb3IgKHZhciBwc2V1
ZG9JZCBpbiBzdHlsZVNlY3Rpb25zKSB7Ci0gICAgICAgIHZhciBwc2V1ZG9OYW1lID0gV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVkb0lkTmFtZXNbcHNldWRvSWRdOwotICAgICAg
ICB2YXIgc2VjdGlvbnMgPSBzdHlsZVNlY3Rpb25zW3BzZXVkb0lkXTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHNl
Y3Rpb24gPSBzZWN0aW9uc1tpXTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uLmNvbXB1dGVkU3R5
bGUgJiYgZXhjbHVkZUNvbXB1dGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKHNlY3Rpb24ucnVsZSAmJiBleGNsdWRlTWF0Y2hlZCkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzZWN0aW9uLmVsZW1lbnQucHJldmlvdXNTaWJs
aW5nICYmIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcuY2xhc3NOYW1lID09PSAic3R5
bGVzLXNpZGViYXItc2VwYXJhdG9yIikKLSAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgiPT09
PT09PT0gIiArIHNlY3Rpb24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcudGV4dENvbnRlbnQgKyAi
ID09PT09PT09Iik7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCgoc2VjdGlvbi5leHBhbmRlZCA/
ICJbZXhwYW5kZWRdICIgOiAiW2NvbGxhcHNlZF0gIikgKyBzZWN0aW9uLnRpdGxlRWxlbWVudC50
ZXh0Q29udGVudCArICIgKCIgKyBzZWN0aW9uLnN1YnRpdGxlQXNUZXh0Rm9yVGVzdCArICIpIik7
Ci0gICAgICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU3R5bGVUcmVlT3V0bGluZShzZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZSwgcmVz
dWx0KTsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKCIiKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXN1bHQucHVzaCgiIik7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19OwotCi0vLyBGSVhN
RTogdGhpcyByZXR1cm5zIHRoZSBmaXJzdCB0cmVlIGl0ZW0gZm91bmQgKG1heSBmYWlsIGZvciBz
YW1lLW5hbWVkIHByb3BlcnRpZXMgaW4gYSBzdHlsZSkuCi1JbnNwZWN0b3JUZXN0LmdldEVsZW1l
bnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0gPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCi17Ci0gICAg
dmFyIHN0eWxlU2VjdGlvbnMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQ
YW5lcy5zdHlsZXMuc2VjdGlvbnNbMF07Ci0gICAgdmFyIGVsZW1lbnRTdHlsZVNlY3Rpb24gPSBz
dHlsZVNlY3Rpb25zWzFdOwotICAgIHZhciBvdXRsaW5lID0gZWxlbWVudFN0eWxlU2VjdGlvbi5w
cm9wZXJ0aWVzVHJlZU91dGxpbmU7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRsaW5lLmNo
aWxkcmVuLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciB0cmVlSXRlbSA9IG91dGxpbmUuY2hp
bGRyZW5baV07Ci0gICAgICAgIGlmICh0cmVlSXRlbS5uYW1lID09PSBwcm9wZXJ0eU5hbWUpCi0g
ICAgICAgICAgICByZXR1cm4gdHJlZUl0ZW07Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotfTsK
LQotSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVlT3V0bGluZSA9IGZ1bmN0aW9uKHRyZWVJdGVt
LCByZXN1bHQpCi17Ci0gICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU3R5bGVUcmVlSXRlbShjaGlsZHJlbltpXSwgcmVzdWx0LCAiIik7Ci19Owot
Ci1JbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVtID0gZnVuY3Rpb24odHJlZUl0ZW0sIHJl
c3VsdCwgcHJlZml4KQotewotICAgIC8vIEZpbHRlciBvdXQgd2lkdGggYW5kIGhlaWdodCBwcm9w
ZXJ0aWVzIGluIG9yZGVyIHRvIG1pbmltaXplCi0gICAgLy8gcG90ZW50aWFsIGRpZmZzLgotICAg
IGlmICghdHJlZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50LmluZGV4T2YoIndpZHRo
IikgfHwKLSAgICAgICAgIXRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudC5pbmRl
eE9mKCJoZWlnaHQiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHRyZWVJdGVtLmxpc3RJ
dGVtRWxlbWVudC5oYXNTdHlsZUNsYXNzKCJpbmhlcml0ZWQiKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHZhciB0eXBlUHJlZml4ID0gIiI7Ci0gICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVu
dC5oYXNTdHlsZUNsYXNzKCJvdmVybG9hZGVkIikpCi0gICAgICAgIHR5cGVQcmVmaXggKz0gIi8t
LSBvdmVybG9hZGVkIC0tLyAiOwotICAgIGlmICh0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQuaGFz
U3R5bGVDbGFzcygiZGlzYWJsZWQiKSkKLSAgICAgICAgdHlwZVByZWZpeCArPSAiLy0tIGRpc2Fi
bGVkIC0tLyAiOwotICAgIHZhciB0ZXh0Q29udGVudCA9IHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVu
dC50ZXh0Q29udGVudDsKLQotICAgIC8vIEFkZCBub24tc2VsZWN0YWJsZSB1cmwgdGV4dC4KLSAg
ICB2YXIgdGV4dERhdGEgPSB0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQucXVlcnlTZWxlY3Rvcigi
W2RhdGEtdW5jb3B5YWJsZV0iKTsKLSAgICBpZiAodGV4dERhdGEpCi0gICAgICAgIHRleHRDb250
ZW50ICs9IHRleHREYXRhLmdldEF0dHJpYnV0ZSgiZGF0YS11bmNvcHlhYmxlIik7Ci0KLSAgICBy
ZXN1bHQucHVzaChwcmVmaXggKyB0eXBlUHJlZml4ICsgdGV4dENvbnRlbnQpOwotICAgIHRyZWVJ
dGVtLmV4cGFuZCgpOwotICAgIHZhciBjaGlsZHJlbiA9IHRyZWVJdGVtLmNoaWxkcmVuOwotICAg
IGZvciAodmFyIGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0g
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHJlc3Vs
dCwgcHJlZml4ICsgIiAgICAiKTsKLX07Ci0KLX07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3MgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2VsZW1lbnRzLXBhbmVsLXN0eWxlcy5jc3MKaW5kZXggYjFi
MzAzNTZiYmQ2MmNhNzdjNmZkM2JmY2U0YjY1MGNhZDc2MGZmOC4uYmQ0NmM5NzI2N2I5YWU3NDlh
NWU2NTI4Y2NkZGY1ZWJjYWZiN2NmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9lbGVtZW50cy1wYW5lbC1zdHlsZXMuY3NzCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvZWxlbWVudHMtcGFuZWwtc3R5bGVzLmNzcwpAQCAtMSwzNCArMSwz
NCBAQAogYm9keSB7Ci0JZm9udC1zaXplOiAxMnB4OworICAgIGZvbnQtc2l6ZTogMTJweDsKIH0K
IAogI2NvbnRhaW5lciB7Ci0JZm9udC1mYW1pbHk6IHNlcmlmOwotCWZvbnQtc2l6ZTogMTRweDsK
KyAgICBmb250LWZhbWlseTogc2VyaWY7CisgICAgZm9udC1zaXplOiAxNHB4OwogfQogCiAuZm9v
IHsKLQljb2xvcjogYmxhY2s7Ci0JbWFyZ2luOiAxMHB4IDAgMnB4OwotCWJvcmRlci1yYWRpdXM6
IDVweDsKKyAgICBjb2xvcjogYmxhY2s7CisgICAgbWFyZ2luOiAxMHB4IDAgMnB4OworICAgIGJv
cmRlci1yYWRpdXM6IDVweDsKIH0KIAogLmZvbywgLmZvbzo6YmVmb3JlIHsKLQljb250ZW50OiAi
W2JlZm9yZSBGb29dIjsKLQljb2xvcjogYmx1ZTsKKyAgICBjb250ZW50OiAiW2JlZm9yZSBGb29d
IjsKKyAgICBjb2xvcjogYmx1ZTsKIH0KIAogLmZvbzo6YmVmb3JlIHsKLQljb2xvcjogcmVkOwor
ICAgIGNvbG9yOiByZWQ7CiB9CiAKIC5mb286OmFmdGVyIHsKLQljb250ZW50OiAiW2FmdGVyIEZv
b10iOwotCWNvbG9yOiBncmVlbjsKKyAgICBjb250ZW50OiAiW2FmdGVyIEZvb10iOworICAgIGNv
bG9yOiBncmVlbjsKIH0KIC5mb286OmFmdGVyIHsKLQlmb250LWZhbWlseTogY291cmllcjsKLQlj
b250ZW50OiAiW2FmdGVyIEZvbyAyXSI7CisgICAgZm9udC1mYW1pbHk6IGNvdXJpZXI7CisgICAg
Y29udGVudDogIlthZnRlciBGb28gMl0iOwogfQogCiAuZm9vIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLWlmcmFtZS1kYXRhLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1pZnJhbWUtZGF0YS5odG1sCmluZGV4
IDBmNDk2NmJmOWU0YTEwNmY0YzJmMzQzMTdhMDU0Yjg3ZTQ5NGIyNTcuLjhiMWQ0YzAzNzQ0YzI1
ZjEyMDZjYTViZjllYjcyM2E2YzdiYjRiOTYgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvc3R5bGVzLWlmcmFtZS1kYXRhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtaWZyYW1lLWRhdGEuaHRtbApAQCAtMTEsNyArMTEs
NyBAQCBmdW5jdGlvbiBpZnJhbWVPbmxvYWQoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5
IG9ubG9hZD0iaWZyYW1lT25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJpZnJhbWVPbmxvYWQoKSIg
aWQ9ImlmcmFtZUJvZHkiPgogPC9ib2R5PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2UuaHRtbAppbmRleCBkYWZlNDJm
NzYwNWMyYTUwNmMzZTY5YTQ3YjNmM2JjOWE1ZGE2ODFiLi40ODdmNzBmNDFlZmY5YTQ0M2JkMjQz
YzA1MmFjYzU2MmU2NTM1NDIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3Rv
cmFnZS1wYW5lbC1kb20tc3RvcmFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dG9yYWdlLXBhbmVsLWRvbS1zdG9yYWdlLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24g
cG9wdWxhdGVET01TdG9yYWdlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzLWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sCmluZGV4IDQ5Njg5MmRjMTRlMDZkOTY5MTZlNDU4
ZmI2MmY3MWRiYjc4NDQ0MzMuLmI1N2NmZjg2YTVmZDMzNWZkZDVjYzBmMDdhOGVlZjkwNWNjMjYw
OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtYWRkLWJsYW5rLXBy
b3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1hZGQtYmxhbmst
cHJvcGVydHkuaHRtbApAQCAtMSw4OSArMSw3MSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iZWxlbWVudHMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3QoKQogewot
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGR1bXBBcnJheShy
ZXN1bHQpOwotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7Ci19CisgICAgSW5zcGVjdG9y
VGVzdC5zZWxlY3ROb2RlV2l0aElkKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CiAKLS8vIEZyb250ZW5k
IGZ1bmN0aW9ucy4KKyAgICB2YXIgdHJlZUVsZW1lbnQ7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3J1
blRlc3QodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIs
IG51bGwsIGZyb250ZW5kX3NlbGVjdEluc3BlY3RlZEVsZW1lbnQpOwotfQotCi1mdW5jdGlvbiBm
cm9udGVuZF9zZWxlY3RJbnNwZWN0ZWRFbGVtZW50KHRlc3RDb250cm9sbGVyKQotewotICAgIGZy
b250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJpbnNwZWN0ZWQiLCBm
cm9udGVuZF9kdW1wSW5zcGVjdGVkU3R5bGUpOwotfQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgYXBwZW5kOiIpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CiAK
LWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBJbnNwZWN0ZWRTdHlsZSh0ZXN0Q29udHJvbGxlcikKLXsK
LSAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkJlZm9yZSBhcHBlbmQ6Iik7Ci0gICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cyA9IHRlc3RDb250cm9sbGVyLnJlc3VsdHMuY29uY2F0KGZy
b250ZW5kX2dldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKSk7CisgICAgICAgIHZhciBzZWN0
aW9uID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNl
Y3Rpb25zWzBdWzFdOworICAgICAgICBzZWN0aW9uLmV4cGFuZCgpOwogCi0gICAgdmFyIHNlY3Rp
b24gPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHlsZXMuc2Vj
dGlvbnNbMF1bMV07Ci0gICAgc2VjdGlvbi5leHBhbmQoKTsKLSAgICB2YXIgdHJlZUVsZW1lbnQg
PSBzZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKTsKLSAgICB2YXIgZW50ZXJLZXlEb3duID0g
ZnJvbnRlbmRfY3JlYXRlS2V5RXZlbnQoIkVudGVyIik7CisgICAgICAgIC8vIENyZWF0ZSBhbmQg
aW5jcmVtZW50LgorICAgICAgICB0cmVlRWxlbWVudCA9IHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9w
ZXJ0eSgpOworICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgdHJl
ZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAibWFyZ2luLWxlZnQiOworICAgICAg
ICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3Jl
YXRlS2V5RXZlbnQoIkVudGVyIikpOworICAgICAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiMXB4IjsKKyAgICAgICAgdHJlZUVsZW1lbnQudmFsdWVFbGVtZW50LmZp
cnN0Q2hpbGQuc2VsZWN0KCk7CisgICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC5kaXNw
YXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIlVwIikpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDIpOworICAgIH0KIAot
ICAgIGZ1bmN0aW9uIHJlbW92ZUVtcHR5KCkKKyAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewot
ICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5kaXNwYXRjaEV2ZW50KGVu
dGVyS2V5RG93bik7Ci0gICAgICAgIGZyb250ZW5kX2R1bXBSZXN1bHRzKHRlc3RDb250cm9sbGVy
KTsKKyAgICAgICAgLy8gSW5jcmVtZW50IGFnYWluLgorICAgICAgICB0cmVlRWxlbWVudC52YWx1
ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50KCJVcCIp
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAz
KTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBjb21taXQoKQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
ICAgICB7Ci0gICAgICAgIHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGVu
dGVyS2V5RG93bik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMocmVtb3ZlRW1wdHkuYmluZCh0aGlzKSk7CisgICAgICAgIC8vIENvbW1pdC4KKyAgICAg
ICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2Rl
V2l0aElkKCJvdGhlciIsIHN0ZXA0KTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBpbmNyZW1lbnRB
Z2FpbigpCisgICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKLSAgICAgICAgdHJlZUVsZW1lbnQu
dmFsdWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZnJvbnRlbmRfY3JlYXRlS2V5RXZlbnQoIlVwIikp
OwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGNvbW1p
dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJp
bnNwZWN0ZWQiLCBzdGVwNSk7CiAgICAgfQogCi0gICAgdHJlZUVsZW1lbnQuc3RhcnRFZGl0aW5n
KCk7Ci0gICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAibWFyZ2luLWxl
ZnQiOwotICAgIHRyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZW50ZXJLZXlE
b3duKTsKLSAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiMXB4IjsK
LSAgICB0cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZmlyc3RDaGlsZC5zZWxlY3QoKTsKLSAgICB0
cmVlRWxlbWVudC52YWx1ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChmcm9udGVuZF9jcmVhdGVLZXlF
dmVudCgiVXAiKSk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hl
cyhpbmNyZW1lbnRBZ2Fpbi5iaW5kKHRoaXMpKTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfZHVt
cFJlc3VsdHModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgZnVuY3Rpb24gcmVwb3J0UmVzdWx0cygp
CisgICAgZnVuY3Rpb24gc3RlcDUoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVz
dWx0cy5wdXNoKCJBZnRlciBhcHBlbmQ6Iik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3Vs
dHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVs
ZW1lbnRTdHlsZXModHJ1ZSkpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRl
c3RDb250cm9sbGVyLnJlc3VsdHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
QWZ0ZXIgYXBwZW5kOiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1l
bnRTdHlsZXModHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAg
ICAgfQotICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJp
bnNwZWN0ZWQiLCByZXBvcnRSZXN1bHRzKTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxi
b2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBU
ZXN0cyB0aGF0IGFkZGluZyBhIG5ldyBibGFuayBwcm9wZXJ0eSB3b3Jrcy4KIDwvcD4KIAogPGRp
diBpZD0iaW5zcGVjdGVkIiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij5UZXh0PC9kaXY+Cis8ZGl2
IGlkPSJvdGhlciI+PC9kaXY+CiAKIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbAppbmRleCA4ZjY2NjA4NGZlYjFh
NmZlNzNlYWYzYjBlZjliNWRhYWRlMWVlNGQyLi4xNGUyNmQ1OTMwNWQ1ZWJkMzk0YWJmMmRiMmI5
MzVjNTQ0ZDQ2Mjk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWNv
bXB1dGVkLXRyYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1jb21w
dXRlZC10cmFjZS5odG1sCkBAIC0yNiw1MSArMjYsMzMgQEAgYm9keSB7CiB9CiAKIDwvc3R5bGU+
Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0
ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBk
dW1wQXJyYXkocmVzdWx0KTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9ydW5UZXN0IiwgY2FsbGJhY2spOwotfQorICAg
IEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiaWQxIiwgc3RlcDEpOwogCi0vLyBGcm9u
dGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX3J1blRlc3QodGVzdENvbnRyb2xs
ZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGZyb250ZW5k
X2V4cGFuZERPTVN1YnRyZWVBbmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZyb250ZW5kX3Nl
bGVjdE5lc3RlZEVsZW1lbnQpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9zZWxlY3ROZXN0ZWRF
bGVtZW50KHRlc3RDb250cm9sbGVyKQotewotICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRS
dW4odGVzdENvbnRyb2xsZXIsICJpZDEiLCBmcm9udGVuZF9kdW1wSUQxU3R5bGUpOwotfQorICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDEgPT09PSIpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpOwogCi1mdW5jdGlvbiBm
cm9udGVuZF9kdW1wSUQxU3R5bGUodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCI9PT09IENvbXB1dGVkIHN0eWxlIGZvciBJRDEgPT09PSIpOwotICAg
IHRlc3RDb250cm9sbGVyLnJlc3VsdHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChm
cm9udGVuZF9nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpKTsKLSAgICBmcm9u
dGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAiaWQyIiwgZnJvbnRlbmRf
ZHVtcElEMlN0eWxlKTsKLX0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElk
KCJpZDIiLCBzdGVwMik7CisgICAgfQogCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wSUQyU3R5bGUo
dGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCI9PT09
IENvbXB1dGVkIHN0eWxlIGZvciBJRDIgPT09PSIpOwotICAgIHRlc3RDb250cm9sbGVyLnJlc3Vs
dHMgPSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVs
ZW1lbnRTdHlsZXMoZmFsc2UsIHRydWUpKTsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PT0gQ29tcHV0ZWQgc3R5bGUgZm9yIElEMiA9PT09Iik7CisgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQogfQotCiA8L3NjcmlwdD4K
IDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgY29tcHV0ZWQgc3R5bGVzIGV4cGFuZCBhbmQgYWxsb3cg
dHJhY2luZyB0byBzdHlsZSBydWxlcy4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbAppbmRleCAyOWY5Mjc1YmE0ODliZDFl
ODdlMjI3NDI0ODgwZDU0ZGM2MDYyYzdiLi5mY2U5Y2MzMjlhYzljZWU4NTdjNDQ5YTZjYzM4NGQ4
NGU0OGZjYTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWRpc2Fi
bGUtaW5oZXJpdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNh
YmxlLWluaGVyaXRlZC5odG1sCkBAIC0xLDYzICsxLDQxIEBACiA8aHRtbD4KIDxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAgZHVtcEFy
cmF5KHJlc3VsdCk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJ
bldlYkluc3BlY3RvcigiZnJvbnRlbmRfcnVuVGVzdCIsIGNhbGxiYWNrKTsKLX0KLQotLy8gRnJv
bnRlbmQgZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9ydW5UZXN0KHRlc3RDb250cm9s
bGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBmcm9udGVu
ZF9leHBhbmRET01TdWJ0cmVlQW5kUnVuKHRlc3RDb250cm9sbGVyLCBudWxsLCBmcm9udGVuZF9z
ZWxlY3ROZXN0ZWRFbGVtZW50KTsKLX0KIAotZnVuY3Rpb24gZnJvbnRlbmRfc2VsZWN0TmVzdGVk
RWxlbWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5k
UnVuKHRlc3RDb250cm9sbGVyLCAibmVzdGVkIiwgZnJvbnRlbmRfZHVtcE5lc3RlZFN0eWxlKTsK
LX0KKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoIm5lc3RlZCIsIHN0ZXAxKTsK
IAotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcE5lc3RlZFN0eWxlKHRlc3RDb250cm9sbGVyKQotewot
ICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5kX2dldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0
ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJCZWZv
cmUgZGlzYWJsZSIpOwotICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMgPSB0ZXN0Q29udHJvbGxl
ci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSkp
OworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIHZhciB0cmVlSXRlbSA9IElu
c3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiZm9udC13ZWlnaHQi
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkJlZm9yZSBkaXNhYmxlIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKTsKIAot
ICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJjb250YWlu
ZXIiLCBmcm9udGVuZF9kaXNhYmxlQ29udGFpbmVyU3R5bGUpOwotfQorICAgICAgICBJbnNwZWN0
b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImNvbnRhaW5lciIsIHN0ZXAyKTsKKyAgICB9CiAKLWZ1
bmN0aW9uIGZyb250ZW5kX2Rpc2FibGVDb250YWluZXJTdHlsZSh0ZXN0Q29udHJvbGxlcikKLXsK
LSAgICB2YXIgdHJlZUl0ZW0gPSBmcm9udGVuZF9nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJ
dGVtKCJmb250LXdlaWdodCIpOwotICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6
IHsgY2hlY2tlZDogZmFsc2UgfSB9KTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzKGZyb250ZW5kX2R1bXBSZXN1bHRzLmJpbmQodGhpcywgdGVzdENvbnRyb2xs
ZXIpKTsKLX0KKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICB2YXIgdHJlZUl0
ZW0gPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQt
d2VpZ2h0Iik7CisgICAgICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6IHsgY2hl
Y2tlZDogZmFsc2UgfSB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElk
KCJuZXN0ZWQiLCBzdGVwMyk7CisgICAgfQogCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wUmVzdWx0
cyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICBmdW5jdGlvbiByZXBvcnRSZXN1bHRzKCkKKyAgICBm
dW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkFmdGVyIGRpc2FibGU6Iik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMgPSB0
ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVsZW1lbnRT
dHlsZXModHJ1ZSkpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RDb250
cm9sbGVyLnJlc3VsdHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIg
ZGlzYWJsZToiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5
bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0K
LSAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAibmVzdGVk
IiwgcmVwb3J0UmVzdWx0cyk7CiB9Ci0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxv
YWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgdGhh
dCBkaXNhYmxpbmcgaW5oZXJpdGVkIHN0eWxlIHByb3BlcnR5IGRvZXMgbm90IGJyZWFrIGZ1cnRo
ZXIgc3R5bGUgaW5zcGVjdGlvbi4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMtZGlzYWJsZS10aGVuLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKaW5kZXggMjJmYmNkNWUyMGNjZGRm
ZWZhNmM0MWY1Yjc4YTQ0MTFjZWIxNTZiZS4uYzM1YWE2ZjM4Y2QwMzJjYTRlYTEzNmVkYTBkZGFj
N2E4ZTYzMjYzZCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNh
YmxlLXRoZW4tY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1k
aXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwKQEAgLTEsNDQgKzEsMzkgQEAKIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0czIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgZnVuY3Rpb24gc2Vs
ZWN0Q29udGFpbmVyRWxlbWVudENvbnRpbnVhdGlvbigpCi0gICAgewotICAgICAgICBJbnNwZWN0
b3JUZXN0LnNlbGVjdEVsZW1lbnRBbmRSdW4oImNvbnRhaW5lciIsIGRpc2FibGVDb250YWluZXJT
dHlsZSk7Ci0gICAgfQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiY29udGFp
bmVyIiwgc3RlcDEpOwogCi0gICAgZnVuY3Rpb24gZGlzYWJsZUNvbnRhaW5lclN0eWxlKCkKKyAg
ICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB2YXIgdHJlZUl0ZW0gPSBJbnNwZWN0
b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgZGlzYWJsZSIpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdHMoSW5zcGVjdG9yVGVzdC5nZXRTZWxlY3RlZEVsZW1l
bnRTdHlsZXModHJ1ZSwgdHJ1ZSkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3Rl
ZEVsZW1lbnRTdHlsZXModHJ1ZSwgdHJ1ZSk7CiAKKyAgICAgICAgdmFyIHRyZWVJdGVtID0gSW5z
cGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIp
OwogICAgICAgICB0cmVlSXRlbS50b2dnbGVFbmFibGVkKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZh
bHNlIH0gfSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hl
cyhjaGFuZ2VDb250YWluZXJTdHlsZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gY2hhbmdlQ29u
dGFpbmVyU3R5bGUoKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHZhciB0
cmVlSXRlbSA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgi
Zm9udC13ZWlnaHQiKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIGRp
c2FibGUiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHRzKEluc3BlY3RvclRlc3Qu
Z2V0U2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIHRydWUpKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIHRydWUpOwogCisgICAgICAgIHZh
ciB0cmVlSXRlbSA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRl
bSgiZm9udC13ZWlnaHQiKTsKICAgICAgICAgdHJlZUl0ZW0uYXBwbHlTdHlsZVRleHQoImNvbG9y
OiBncmVlbiIsIHRydWUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rp
c3BhdGNoZXMoZHVtcFJlc3VsdHMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMoc3RlcDMpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGR1bXBSZXN1bHRz
KCkKKyAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiQWZ0ZXIgY2hhbmdlIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVlKSk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVl
KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc2VsZWN0Q29udGFpbmVy
RWxlbWVudENvbnRpbnVhdGlvbik7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS10aGVuLWRlbGV0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0bWwKaW5k
ZXggNTIxNDNiMzQwMmRhNTI0NTVkM2MxNTIwOTM5MjU5OTY4NmRlMTE2NS4uYjM5YTliYTM5MGIw
MGUxZTQyNjBiNzE4MjUwZmVjMzlmYjU1MWZkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZGVsZXRlLmh0bWwKQEAgLTEsNzIgKzEsNTgg
QEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3Rz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24g
ZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQp
Ci0gICAgewotICAgICAgICBkdW1wQXJyYXkocmVzdWx0KTsKLSAgICAgICAgbm90aWZ5RG9uZSgp
OwotICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9ydW5UZXN0Iiwg
Y2FsbGJhY2spOwotfQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiY29udGFp
bmVyIiwgc3RlcDEpOwogCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCisgICAgZnVuY3Rpb24gc3Rl
cDEoKQorICAgIHsKKyAgICAgICAgLy8gRGlzYWJsZSBwcm9wZXJ0eQorICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiQmVmb3JlIGRpc2FibGUiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIHRydWUpOwogCi1mdW5jdGlvbiBmcm9u
dGVuZF9ydW5UZXN0KHRlc3RDb250cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlQW5kUnVuKHRlc3RDb250
cm9sbGVyLCBudWxsLCBmcm9udGVuZF9zZWxlY3RDb250YWluZXJFbGVtZW50Q29udGludWF0aW9u
KTsKLX0KKyAgICAgICAgdmFyIHRyZWVJdGVtID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5
bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOworICAgICAgICB0cmVlSXRlbS50b2dn
bGVFbmFibGVkKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSk7CiAKLWZ1bmN0aW9uIGZy
b250ZW5kX3NlbGVjdENvbnRhaW5lckVsZW1lbnRDb250aW51YXRpb24odGVzdENvbnRyb2xsZXIp
Ci17Ci0gICAgZnJvbnRlbmRfc2VsZWN0RWxlbWVudEFuZFJ1bih0ZXN0Q29udHJvbGxlciwgImNv
bnRhaW5lciIsIGZyb250ZW5kX2Rpc2FibGVDb250YWluZXJTdHlsZSk7Ci19CisgICAgICAgIElu
c3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMik7CisgICAgfQogCi1m
dW5jdGlvbiBmcm9udGVuZF9kaXNhYmxlQ29udGFpbmVyU3R5bGUodGVzdENvbnRyb2xsZXIpCi17
Ci0gICAgdmFyIHRyZWVJdGVtID0gZnJvbnRlbmRfZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVl
SXRlbSgiZm9udC13ZWlnaHQiKTsKLSAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkJl
Zm9yZSBkaXNhYmxlIik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cyA9IHRlc3RDb250cm9s
bGVyLnJlc3VsdHMuY29uY2F0KGZyb250ZW5kX2dldFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVl
LCB0cnVlKSk7CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgLy8gRGVsZXRl
IHN0eWxlCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZnRlciBkaXNhYmxlIik7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0
cnVlKTsKIAotICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6IHsgY2hlY2tlZDog
ZmFsc2UgfSB9KTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVz
KGZyb250ZW5kX2RlbGV0ZUNvbnRhaW5lclN0eWxlLmJpbmQodGhpcywgdGVzdENvbnRyb2xsZXIp
KTsKLX0KKyAgICAgICAgdmFyIHRyZWVJdGVtID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5
bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOworICAgICAgICB0cmVlSXRlbS5hcHBs
eVN0eWxlVGV4dCgiIiwgdHJ1ZSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2RlbGV0ZUNvbnRhaW5l
clN0eWxlKHRlc3RDb250cm9sbGVyKQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5kX2dl
dEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJBZnRlciBkaXNhYmxlIik7Ci0gICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cyA9IHRlc3RDb250cm9sbGVyLnJlc3VsdHMuY29uY2F0KGZyb250ZW5kX2dldFNl
bGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVlKSk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
cnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7CisgICAgfQogCi0gICAgdHJlZUl0ZW0u
YXBwbHlTdHlsZVRleHQoIiIsIHRydWUpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMoZnJvbnRlbmRfcmVzZWxlY3ROb2RlQW5kRHVtcFJlc3VsdHMuYmluZCh0
aGlzLCB0ZXN0Q29udHJvbGxlcikpOwotfQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgib3RoZXIiLCBzdGVwNCk7Cisg
ICAgfQogCi1mdW5jdGlvbiBmcm9udGVuZF9yZXNlbGVjdE5vZGVBbmREdW1wUmVzdWx0cyh0ZXN0
Q29udHJvbGxlcikKLXsKLSAgICBmdW5jdGlvbiBjb250aW51YXRpb24oKQorICAgIGZ1bmN0aW9u
IHN0ZXA0KCkKICAgICB7Ci0gICAgICAgIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVz
dENvbnRyb2xsZXIsICJjb250YWluZXIiLCBmcm9udGVuZF9kdW1wUmVzdWx0cyk7CisgICAgICAg
IEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiY29udGFpbmVyIiwgc3RlcDUpOwogICAg
IH0KLSAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAib3Ro
ZXIiLCBjb250aW51YXRpb24pOwotfQogCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wUmVzdWx0cyh0
ZXN0Q29udHJvbGxlcikKLXsKLSAgICB2YXIgdHJlZUl0ZW0gPSBmcm9udGVuZF9nZXRFbGVtZW50
U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdodCIpOwotICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiQWZ0ZXIgZGVsZXRlIik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cyA9IHRlc3RDb250cm9sbGVyLnJlc3VsdHMuY29uY2F0KGZyb250ZW5kX2dldFNlbGVjdGVkRWxl
bWVudFN0eWxlcyh0cnVlLCB0cnVlKSk7Ci0gICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGZ1bmN0aW9uIHN0ZXA1KG5vZGUpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiQWZ0ZXIgZGVsZXRlIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNl
bGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25s
b2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRo
YXQgcmVtb3ZhbCBvZiBwcm9wZXJ0eSBmb2xsb3dpbmcgaXRzIGRpc2FibGluZyB3b3Jrcy4KIDwv
cD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS10aGVu
LWVuYWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4t
ZW5hYmxlLmh0bWwKaW5kZXggNzAxOTMzMjdkOWM3ZTBiODAxNDAxNzkzMmI0OGJlZTA5YTZhMGIy
MC4uNTlmM2Y0NmI4ZjE5OTQ4NjRkNzE0M2QxMWY3ZTA2YmNiODFhZTEyMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0bWwK
QEAgLTEsNjMgKzEsNDYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBj
YWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBkdW1wQXJyYXkocmVzdWx0KTsKLSAgICAg
ICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9u
dGVuZF9ydW5UZXN0IiwgY2FsbGJhY2spOwotfQotCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCi0K
LWZ1bmN0aW9uIGZyb250ZW5kX3J1blRlc3QodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGZyb250ZW5kX2V4cGFuZERPTVN1YnRyZWVB
bmRSdW4odGVzdENvbnRyb2xsZXIsIG51bGwsIGZyb250ZW5kX3NlbGVjdENvbnRhaW5lckVsZW1l
bnRDb250aW51YXRpb24pOwotfQorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgi
Y29udGFpbmVyIiwgc3RlcDEpOwogCi1mdW5jdGlvbiBmcm9udGVuZF9zZWxlY3RDb250YWluZXJF
bGVtZW50Q29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQotewotICAgIGZyb250ZW5kX3NlbGVj
dEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJjb250YWluZXIiLCBmcm9udGVuZF9kaXNh
YmxlQ29udGFpbmVyU3R5bGUpOwotfQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCZWZvcmUgZGlzYWJsZSIpOworICAgICAgICB2
YXIgdHJlZUl0ZW0gPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0
ZW0oImZvbnQtd2VpZ2h0Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlVHJlZUl0
ZW0odHJlZUl0ZW0sICIiKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfZGlzYWJsZUNvbnRhaW5lclN0
eWxlKHRlc3RDb250cm9sbGVyKQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5kX2dldEVs
ZW1lbnRTdHlsZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKCJCZWZvcmUgZGlzYWJsZSIpOwotICAgIGZyb250ZW5kX2R1bXBT
dHlsZVRyZWVJdGVtKHRyZWVJdGVtLCB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLCAiIik7CisgICAg
ICAgIHRyZWVJdGVtLnRvZ2dsZUVuYWJsZWQoeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAy
KTsKKyAgICB9CiAKLSAgICB0cmVlSXRlbS50b2dnbGVFbmFibGVkKHsgdGFyZ2V0OiB7IGNoZWNr
ZWQ6IGZhbHNlIH0gfSk7Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0
Y2hlcyhmcm9udGVuZF9lbmFibGVDb250YWluZXJTdHlsZS5iaW5kKHRoaXMsIHRlc3RDb250cm9s
bGVyKSk7Ci19CisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkFmdGVyIGRpc2FibGUiKTsKKyAgICAgICAgdmFyIHRyZWVJdGVtID0g
SW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJdGVtKCJmb250LXdlaWdo
dCIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVtKHRyZWVJdGVtLCAi
Iik7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2VuYWJsZUNvbnRhaW5lclN0eWxlKHRlc3RDb250cm9s
bGVyKQotewotICAgIHZhciB0cmVlSXRlbSA9IGZyb250ZW5kX2dldEVsZW1lbnRTdHlsZVByb3Bl
cnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5w
dXNoKCJBZnRlciBkaXNhYmxlIik7Ci0gICAgZnJvbnRlbmRfZHVtcFN0eWxlVHJlZUl0ZW0odHJl
ZUl0ZW0sIHRlc3RDb250cm9sbGVyLnJlc3VsdHMsICIiKTsKKyAgICAgICAgdHJlZUl0ZW0udG9n
Z2xlRW5hYmxlZCh7IHRhcmdldDogeyBjaGVja2VkOiB0cnVlIH0gfSk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7CisgICAgfQogCi0gICAg
dHJlZUl0ZW0udG9nZ2xlRW5hYmxlZCh7IHRhcmdldDogeyBjaGVja2VkOiB0cnVlIH0gfSk7Ci0g
ICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmcm9udGVuZF9kdW1w
UmVzdWx0cy5iaW5kKHRoaXMsIHRlc3RDb250cm9sbGVyKSk7Ci19CisgICAgZnVuY3Rpb24gc3Rl
cDMoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFmdGVyIGVuYWJs
ZSIpOworICAgICAgICB2YXIgdHJlZUl0ZW0gPSBJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHls
ZVByb3BlcnR5VHJlZUl0ZW0oImZvbnQtd2VpZ2h0Iik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcFN0eWxlVHJlZUl0ZW0odHJlZUl0ZW0sICIiKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfZHVt
cFJlc3VsdHModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdmFyIHRyZWVJdGVtID0gZnJvbnRlbmRf
Z2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiZm9udC13ZWlnaHQiKTsKLSAgICB0ZXN0
Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkFmdGVyIGVuYWJsZSIpOwotICAgIGZyb250ZW5kX2R1
bXBTdHlsZVRyZWVJdGVtKHRyZWVJdGVtLCB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLCAiIik7Ci0g
ICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRzKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiA8L3NjcmlwdD4K
IDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgZGlzYWJsaW5nIHN0eWxlIHByb3BlcnR5IHdvcmtzLgog
PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUtZXhwZWN0ZWQu
dHh0CmluZGV4IGE4YTlmOTdjOWViMDNkMmQ0ZGRiNDkyMGZlOWQ0YTZiNjI2ZTU1YTkuLmI3OWJl
NzgzNTZkYWVhZTcxMWNjZDZjM2RhZWYyYjJhZTRiMmEwNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMjggQEAK
IFRlc3RzIHRoYXQgcHJvcGVyIChhbmQgZGlmZmVyZW50KSBzdHlsZXMgYXJlIHJldHVybmVkIGZv
ciBib2R5IGVsZW1lbnRzIG9mIG1haW4gZG9jdW1lbnQgYW5kIGlmcmFtZS4KIAogCi1TdHlsZTog
MAoteyJtYXJnaW4iOiI4cHgifQoteyJiYWNrZ3JvdW5kIjoiYmx1ZSJ9Ci1TdHlsZTogMQoteyJt
YXJnaW4iOiI4cHgifQoteyJiYWNrZ3JvdW5kIjoiZ3JlZW4ifQorTWFpbiBmcmFtZSBzdHlsZToK
K1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCisKKz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1
bGVzID09PT09PT09CitbZXhwYW5kZWRdIGJvZHkgeyAoc3R5bGVzLWlmcmFtZS5odG1sOjUpCiti
YWNrZ3JvdW5kOiBibHVlOworCitbZXhwYW5kZWRdIGJvZHkgeyAodXNlciBhZ2VudCBzdHlsZXNo
ZWV0KQorZGlzcGxheTogYmxvY2s7CittYXJnaW46IDhweDsKKworCitpZnJhbWUgc3R5bGU6Citb
ZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxl
cyA9PT09PT09PQorW2V4cGFuZGVkXSBib2R5IHsgKHN0eWxlcy1pZnJhbWUtZGF0YS5odG1sOjQp
CitiYWNrZ3JvdW5kOiBncmVlbjsKKworW2V4cGFuZGVkXSBib2R5IHsgKHVzZXIgYWdlbnQgc3R5
bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworbWFyZ2luOiA4cHg7CisKKwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbAppbmRleCAwMmYxN2U0M2FjMDljMTdiNzFlOTU4
OGE4YzA0NjJjODRkZjdkOGQwLi4xOWI4MmE1ODE2N2EwNjlkMzkwNTI1NWFmOTE3OGY2ZTE0NzYz
MjliIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLmh0bWwKQEAgLTUsNzUg
KzUsMzIgQEAKICAgYm9keSB7IGJhY2tncm91bmQ6Ymx1ZTsgfQogPC9zdHlsZT4KIAotPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgcnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZChmdW5jdGlvbigpIHsKLSAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2socmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIG91dHB1dCgiU3R5
bGU6ICIgKyBpKTsKLSAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlZFJ1bGVzID0gcmVzdWx0W2ld
Lm1hdGNoZWRDU1NSdWxlczsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgbWF0Y2hl
ZFJ1bGVzICYmIGogPCBtYXRjaGVkUnVsZXMubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0KEpTT04uc3RyaW5naWZ5KG1hdGNoZWRSdWxlc1tqXS5zdHlsZS5zaG9ydGhh
bmRWYWx1ZXMpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiZnJvbnRlbmRfZHVtcFN0eWxlcyIsIGNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQorICAgIElu
c3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgibWFpbkJvZHkiLCBzdGVwMSk7CiAKLS8vIEZy
b250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFN0eWxlcyh0ZXN0Q29u
dHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnJv
bnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRl
bmRfZHVtcFN0eWxlc0NvbnRpbnVhdGlvbik7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBT
dHlsZXNDb250aW51YXRpb24odGVzdENvbnRyb2xsZXIpCi17Ci0gICAgLy8gMS4gR2V0IHN0eWxl
cyBmb3IgYm9keSwgc3RvcmUgdGhlbSBpbiBtYWluU3R5bGVzIHZhci4KLSAgICB2YXIgYm9keSA9
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudC5ib2R5OwotICAgIHZhciBtYWluU3R5bGVz
ID0gbnVsbDsKLSAgICBmdW5jdGlvbiBtYWluRnJhbWVDYWxsYmFjayhzdHlsZXMpCisgICAgZnVu
Y3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgbWFpblN0eWxlcyA9IHN0eWxlczsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1haW4gZnJhbWUgc3R5bGU6Iik7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiaWZyYW1lQm9keSIs
IHN0ZXAyKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlc0Zvck5vZGUo
Ym9keS5pZCwgbWFpbkZyYW1lQ2FsbGJhY2spOwotCi0gICAgLy8gMi4gRmluZCBpZnJhbWUgbm9k
ZQotICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01O
b2RlOwotICAgIHZhciBpZnJhbWVCb2R5ID0gbnVsbDsKLQotICAgIGZvciAodmFyIG5vZGVJZCBp
biBpbm5lck1hcHBpbmcpIHsKLSAgICAgICAgaWYgKGlubmVyTWFwcGluZ1tub2RlSWRdLm5vZGVO
YW1lID09PSAiSUZSQU1FIikKLSAgICAgICAgICAgIGlmcmFtZUJvZHkgPSBpbm5lck1hcHBpbmdb
bm9kZUlkXS5maXJzdENoaWxkLmxhc3RDaGlsZDsKLSAgICB9Ci0gICAgaWYgKCFpZnJhbWVCb2R5
KSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoWyJObyBpZnJhbWUgbm9kZSBm
b3VuZCJdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIDMuIEdldCBzdHlsZXMg
Zm9yIGlmcmFtZSdzIGJvZHksIHJldHVybiB0aGVtIHRvZ2V0aGVyIHdpdGggbWFpbiBzdHlsZXMu
Ci0gICAgZnVuY3Rpb24gaWZyYW1lQ2FsbGJhY2soc3R5bGVzKQorICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoW21haW5TdHlsZXMs
IHN0eWxlc10pOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiaWZyYW1lIHN0eWxl
OiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSwgZmFsc2UsIHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwog
ICAgIH0KLQotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShpZnJhbWVCb2R5
LmlkLCBpZnJhbWVDYWxsYmFjayk7CiB9Ci0KIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBv
bmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZCgp
IiBpZD0ibWFpbkJvZHkiPgogPHA+CiBUZXN0cyB0aGF0IHByb3BlciAoYW5kIGRpZmZlcmVudCkg
c3R5bGVzIGFyZSByZXR1cm5lZCBmb3IgYm9keSBlbGVtZW50cyBvZiBtYWluIGRvY3VtZW50IGFu
ZCBpZnJhbWUuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
LW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS5odG1s
CmluZGV4IDY3M2MyODAyMGE5YjY4Mjc4N2U1ZWM3NTc4OWI1YjIyODM2YmYzZTQuLjg4NWQxMTU1
M2VjYzVjYmRlMjUwYTE1ZGE3YmFhZTEwODhjMzQ5NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtbmV3LUFQSS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMtbmV3LUFQSS5odG1sCkBAIC0zLDI2NCArMywyNjMgQEAKIAogPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGVzLW5ldy1BUEkuY3NzIj4KIAotPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAgZHVtcEFycmF5
KHJlc3VsdCk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJbldl
Ykluc3BlY3RvcigiZnJvbnRlbmRfcnVuVGVzdCIsIGNhbGxiYWNrKTsKLX0KLQotCi0vLyBGcm9u
dGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5kX3J1blRlc3QodGVzdENvbnRyb2xs
ZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGZyb250ZW5k
X2V4cGFuZERPTVN1YnRyZWUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50KTsKLSAgICB0
ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgewotCi0g
ICAgICAgIGZ1bmN0aW9uIHRhYmxlU3R5bGVzQ2FsbGJhY2sodGVzdENvbnRyb2xsZXIsIHN0eWxl
cykKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIi
KTsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEF0dHJpYnV0
ZSBzdHlsZXMgZm9yIHRhYmxlID09PSIpOwotICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiBz
dHlsZXMuc3R5bGVBdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cy5wdXNoKCJBdHRyaWJ1dGU6ICIgKyBhdHRyKTsKLSAgICAgICAgICAgICAgICBmcm9u
dGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHN0eWxlcy5zdHlsZUF0dHJpYnV0
ZXNbYXR0cl0pOwotICAgICAgICAgICAgfQorICAgIHRlc3Rfc3R5bGVzKCk7CiAKLSAgICAgICAg
ICAgIGZyb250ZW5kX3Rlc3RTdHlsZVNoZWV0cyh0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIH0K
LQotICAgICAgICBmdW5jdGlvbiBzdHlsZXNDYWxsYmFjayh0ZXN0Q29udHJvbGxlciwgc3R5bGVz
KQorICAgIGZ1bmN0aW9uIHRlc3Rfc3R5bGVzKG5vZGUpCisgICAgeworICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhzdHlsZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIj09PSBDb21wdXRlZCBzdHlsZSBwcm9wZXJ0eSBjb3VudCBmb3IgYm9keSA9PT0iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ29tcHV0ZWQgc3R5bGUgcHJvcGVydHkgY291bnQgZm9y
IGJvZHkgPT09Iik7CiAgICAgICAgICAgICB2YXIgcHJvcENvdW50ID0gc3R5bGVzLmNvbXB1dGVk
U3R5bGUuY3NzUHJvcGVydGllcy5sZW5ndGg7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2gocHJvcENvdW50ID4gMjAwID8gIk9LIiA6ICJGQUlMICgiICsgcHJvcENvdW50
ICsgIikiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByb3BDb3VudCA+
IDIwMCA/ICJPSyIgOiAiRkFJTCAoIiArIHByb3BDb3VudCArICIpIik7CiAKLSAgICAgICAgICAg
IHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLnB1c2goIj09PSBNYXRjaGVkIHJ1bGVzIGZvciBib2R5ID09PSIpOwotICAg
ICAgICAgICAgZnJvbnRlbmRfZHVtcFJ1bGVzQXJyYXkodGVzdENvbnRyb2xsZXIsIHN0eWxlcy5t
YXRjaGVkQ1NTUnVsZXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBNYXRjaGVkIHJ1bGVz
IGZvciBib2R5ID09PSIpOworICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVzLm1hdGNo
ZWRDU1NSdWxlcyk7CiAKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgi
Iik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBQc2V1ZG8g
cnVsZXMgZm9yIGJvZHkgPT09Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IFBzZXVkbyBy
dWxlcyBmb3IgYm9keSA9PT0iKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5
bGVzLnBzZXVkb0VsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJQc2V1ZG9JZD0iICsgc3R5bGVzLnBzZXVkb0VsZW1lbnRz
W2ldLnBzZXVkb0lkKTsKLSAgICAgICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVsZXNBcnJheSh0
ZXN0Q29udHJvbGxlciwgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnJ1bGVzKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUHNldWRvSWQ9IiArIHN0eWxlcy5wc2V1
ZG9FbGVtZW50c1tpXS5wc2V1ZG9JZCk7CisgICAgICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXko
c3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnJ1bGVzKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICAgICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEluaGVyaXRlZCBzdHlsZXMgZm9yIGJvZHkgPT09
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEluaGVyaXRlZCBzdHlsZXMgZm9yIGJvZHkg
PT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5pbmhlcml0ZWQu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkxldmVsPSIgKyAoaSArIDEpKTsKLSAgICAgICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVs
ZU9yU3R5bGUodGVzdENvbnRyb2xsZXIsIHN0eWxlcy5pbmhlcml0ZWRbaV0uaW5saW5lU3R5bGUp
OwotICAgICAgICAgICAgICAgIGZyb250ZW5kX2R1bXBSdWxlc0FycmF5KHRlc3RDb250cm9sbGVy
LCBzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkxldmVsPSIgKyAoaSArIDEpKTsKKyAgICAgICAgICAg
ICAgICBkdW1wUnVsZU9yU3R5bGUoc3R5bGVzLmluaGVyaXRlZFtpXS5pbmxpbmVTdHlsZSk7Cisg
ICAgICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVzLmluaGVyaXRlZFtpXS5tYXRjaGVk
Q1NTUnVsZXMpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIiIpOwotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCI9PT0gSW5saW5lIHN0eWxlIGZvciBib2R5ID09PSIpOwotICAgICAgICAgICAgZnJvbnRlbmRf
ZHVtcFJ1bGVPclN0eWxlKHRlc3RDb250cm9sbGVyLCBzdHlsZXMuaW5saW5lU3R5bGUpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIj09PSBJbmxpbmUgc3R5bGUgZm9yIGJvZHkgPT09Iik7CisgICAg
ICAgICAgICBkdW1wUnVsZU9yU3R5bGUoc3R5bGVzLmlubGluZVN0eWxlKTsKKyAgICAgICAgICAg
IHRlc3RfdGFibGVTdHlsZXMoKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLmdldFN0eWxlc0Zvck5vZGUoZnJvbnRlbmRfbm9kZUZvcklkKCJ0aGV0YWJsZSIpLmlk
LCB0YWJsZVN0eWxlc0NhbGxiYWNrLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKKyAgICAg
ICAgZnVuY3Rpb24gbm9kZUNhbGxiYWNrKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShub2RlLmlkLCBjYWxsYmFjayk7CiAgICAg
ICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJtYWluQm9keSIs
IG5vZGVDYWxsYmFjayk7CisgICAgfQogCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5
bGVzRm9yTm9kZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwgc3R5bGVz
Q2FsbGJhY2suYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQorICAgIGZ1
bmN0aW9uIHRlc3RfdGFibGVTdHlsZXMoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2soc3R5bGVzKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEF0dHJpYnV0
ZSBzdHlsZXMgZm9yIHRhYmxlID09PSIpOworICAgICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiBz
dHlsZXMuc3R5bGVBdHRyaWJ1dGVzKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkF0dHJpYnV0ZTogIiArIGF0dHIpOworICAgICAgICAgICAgICAgIGR1bXBSdWxl
T3JTdHlsZShzdHlsZXMuc3R5bGVBdHRyaWJ1dGVzW2F0dHJdKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHRlc3Rfc3R5bGVTaGVldHMoKTsKKyAgICAgICAgfQogCi1mdW5jdGlvbiBmcm9u
dGVuZF90ZXN0U3R5bGVTaGVldHModGVzdENvbnRyb2xsZXIpCi17Ci12YXIgbmV3U3R5bGVTaGVl
dFRleHQgPQotImJvZHkubWFpbnBhZ2Uge1wKLSAgICB0ZXh0LWRlY29yYXRpb246IHN0cmlrZXRo
cm91Z2g7XAotICAgIGJhZHByb3BlcnR5OiAyYmFkdmFsdWUyO1wKLX1cCi1cCi1ib2R5IHtcCi0g
ICAgdGV4dC1hbGlnbjoganVzdGlmeTtcCi19XAotIjsKLQotICAgIGZ1bmN0aW9uIHBhdGNoU3R5
bGVTaGVldCh0ZXN0Q29udHJvbGxlciwgc3R5bGVTaGVldCkKKyAgICAgICAgZnVuY3Rpb24gbm9k
ZUNhbGxiYWNrKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
Z2V0U3R5bGVzRm9yTm9kZShub2RlLmlkLCBjYWxsYmFjayk7CisgICAgICAgIH0KKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKCJ0aGV0YWJsZSIsIG5vZGVDYWxsYmFjayk7CisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3Rfc3R5bGVTaGVldHMoKQogICAgIHsKLSAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cy5wdXNoKCI9PT0gTGFzdCBzdHlsZXNoZWV0IHBhdGNoZWQgPT09Iik7Ci0gICAgICAg
IEluc3BlY3RvckJhY2tlbmQuc2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldC5zdHlsZVNoZWV0
SWQsIG5ld1N0eWxlU2hlZXRUZXh0LAotICAgICAgICAgICAgZnJvbnRlbmRfbG9hZEFuZER1bXBT
dHlsZVNoZWV0LmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQuc3R5bGVTaGVl
dElkLCBmcm9udGVuZF9jaGFuZ2VTZWxlY3Rvci5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSkp
OworICAgICAgICB2YXIgbmV3U3R5bGVTaGVldFRleHQgPQorICAgICAgICAgICAgImJvZHkubWFp
bnBhZ2UgeyIgKworICAgICAgICAgICAgIiAgICB0ZXh0LWRlY29yYXRpb246IHN0cmlrZXRocm91
Z2g7IiArCisgICAgICAgICAgICAiICAgIGJhZHByb3BlcnR5OiAyYmFkdmFsdWUyOyIgKworICAg
ICAgICAgICAgIn0iICsKKyAgICAgICAgICAgICJib2R5IHsiICsKKyAgICAgICAgICAgICIgICAg
dGV4dC1hbGlnbjoganVzdGlmeTsiICsKKyAgICAgICAgICAgICJ9IjsKKworICAgICAgICBmdW5j
dGlvbiBwYXRjaFN0eWxlU2hlZXQoc3R5bGVTaGVldCkKKyAgICAgICAgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PSBMYXN0IHN0eWxlc2hlZXQgcGF0Y2hlZCA9PT0iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuc2V0U3R5bGVTaGVldFRleHQoc3R5bGVTaGVldC5zdHlsZVNoZWV0
SWQsIG5ld1N0eWxlU2hlZXRUZXh0LAorICAgICAgICAgICAgICAgIGxvYWRBbmREdW1wU3R5bGVT
aGVldC5iaW5kKG51bGwsIHN0eWxlU2hlZXQuc3R5bGVTaGVldElkLCB0ZXN0X2NoYW5nZVNlbGVj
dG9yKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0SWRzTG9hZGVk
KGlkcykKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBbGwgc3R5bGVzaGVl
dHMgPT09Iik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgICAgICBsb2FkQW5kRHVtcFN0eWxlU2hlZXQoaWRzW2ldLCAoaSA8IGlk
cy5sZW5ndGggLSAxKSA/IG51bGwgOiBwYXRjaFN0eWxlU2hlZXQpOworICAgICAgICB9CisgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0QWxsU3R5bGVzKHN0eWxlU2hlZXRJZHNMb2FkZWQpOwog
ICAgIH0KIAotICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRJZHNMb2FkZWQodGVzdENvbnRyb2xsZXIs
IGlkcykKKyAgICBmdW5jdGlvbiB0ZXN0X2NoYW5nZVNlbGVjdG9yKHN0eWxlU2hlZXQpCiAgICAg
ewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIiIpOwotICAgICAgICB0ZXN0
Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIj09PSBBbGwgc3R5bGVzaGVldHMgPT09Iik7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZnJv
bnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0KHRlc3RDb250cm9sbGVyLCBpZHNbaV0sIChpIDwg
aWRzLmxlbmd0aCAtIDEpID8gbnVsbCA6IHBhdGNoU3R5bGVTaGVldC5iaW5kKG51bGwsIHRlc3RD
b250cm9sbGVyKSk7CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFNlbGVjdG9yKHJ1bGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgc2VsZWN0b3Igc2V0ID09PSIp
OworICAgICAgICAgICAgbG9hZEFuZER1bXBTdHlsZVNoZWV0KHJ1bGUucnVsZUlkLnN0eWxlU2hl
ZXRJZCwgdGVzdF9zZXRTdHlsZVRleHQpOworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5zZXRSdWxlU2VsZWN0b3Ioc3R5bGVTaGVldC5ydWxlc1swXS5ydWxlSWQsICJodG1s
ICosIGJvZHlbZm9vPVwiYmFyXCJdIiwgZGlkU2V0U2VsZWN0b3IpOwogICAgIH0KLSAgICBJbnNw
ZWN0b3JCYWNrZW5kLmdldEFsbFN0eWxlcyhzdHlsZVNoZWV0SWRzTG9hZGVkLmJpbmQobnVsbCwg
dGVzdENvbnRyb2xsZXIpKTsKLX0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY2hhbmdlU2VsZWN0b3Io
dGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQpCi17Ci0gICAgZnVuY3Rpb24gZGlkU2V0U2VsZWN0
b3IodGVzdENvbnRyb2xsZXIsIHJ1bGUpCisgICAgZnVuY3Rpb24gdGVzdF9zZXRTdHlsZVRleHQo
c3R5bGVTaGVldCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgi
Iik7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHNlbGVj
dG9yIHNldCA9PT0iKTsKLSAgICAgICAgZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0KHRl
c3RDb250cm9sbGVyLCBydWxlLnJ1bGVJZC5zdHlsZVNoZWV0SWQsIGZyb250ZW5kX3NldFN0eWxl
VGV4dC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfQorICAgICAgICBmdW5jdGlv
biBkaWRTZXRTdHlsZVRleHQoc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCI9PT0gQWZ0ZXIgc3R5bGUgdGV4dCBzZXQgPT09Iik7CisgICAgICAgICAgICBsb2FkQW5kRHVt
cFN0eWxlU2hlZXQoc3R5bGUuc3R5bGVJZC5zdHlsZVNoZWV0SWQsIHRlc3RfYWRkUnVsZSk7Cisg
ICAgICAgIH0KIAotICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UnVsZVNlbGVjdG9yKHN0eWxlU2hl
ZXQucnVsZXNbMF0ucnVsZUlkLCAiaHRtbCAqLCBib2R5W2Zvbz1cImJhclwiXSIsIGRpZFNldFNl
bGVjdG9yLmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKLX0KKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5zZXRQcm9wZXJ0eVRleHQoc3R5bGVTaGVldC5ydWxlc1swXS5zdHlsZS5zdHlsZUlk
LCAwLCAiIiwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0
KHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgIiIsIHRydWUpOwogCi1mdW5j
dGlvbiBmcm9udGVuZF9zZXRTdHlsZVRleHQodGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQpCi17
Ci0gICAgZnVuY3Rpb24gZGlkU2V0U3R5bGVUZXh0KHRlc3RDb250cm9sbGVyLCBzdHlsZSkKLSAg
ICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHN0eWxlIHRleHQgc2V0ID09PSIp
OwotICAgICAgICBmcm9udGVuZF9sb2FkQW5kRHVtcFN0eWxlU2hlZXQodGVzdENvbnRyb2xsZXIs
IHN0eWxlLnN0eWxlSWQuc3R5bGVTaGVldElkLCBmcm9udGVuZF9hZGRSdWxlLmJpbmQobnVsbCwg
dGVzdENvbnRyb2xsZXIpKTsKKyAgICAgICAgLy8gVGhpcyBvcGVyYXRpb24gc2hvdWxkIG5vdCB1
cGRhdGUgdGhlIHN0eWxlIGFzIHRoZSBuZXcgcHJvcGVydHkgdGV4dCBpcyBub3QgcGFyc2FibGUu
CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hlZXQucnVs
ZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgInp6ejsiLCBmYWxzZSk7CisgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJ
ZCwgMCwgImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZDogYmxhY2s7IiwgZmFsc2UsIGRpZFNldFN0
eWxlVGV4dCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVRleHQo
c3R5bGVTaGVldC5ydWxlc1swXS5zdHlsZS5zdHlsZUlkLCAwLCAiIiwgdHJ1ZSk7Ci0gICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVRleHQoc3R5bGVTaGVldC5ydWxlc1swXS5zdHlsZS5z
dHlsZUlkLCAwLCAiIiwgdHJ1ZSk7CisgICAgZnVuY3Rpb24gdGVzdF9hZGRSdWxlKCkKKyAgICB7
CisgICAgICAgIGZ1bmN0aW9uIGRpZEdldFN0eWxlcyhzdHlsZXMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCI9PT0gTWF0Y2hlZCBydWxlcyBhZnRlciBydWxlIGFkZGVkID09PSIp
OworICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVzLm1hdGNoZWRDU1NSdWxlcyk7Cisg
ICAgICAgICAgICB0ZXN0X2Rpc2FibGVQcm9wZXJ0eSgpOworICAgICAgICB9CiAKLSAgICAvLyBU
aGlzIG9wZXJhdGlvbiBzaG91bGQgbm90IHVwZGF0ZSB0aGUgc3R5bGUgYXMgdGhlIG5ldyBwcm9w
ZXJ0eSB0ZXh0IGlzIG5vdCBwYXJzYWJsZS4KLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3Bl
cnR5VGV4dChzdHlsZVNoZWV0LnJ1bGVzWzBdLnN0eWxlLnN0eWxlSWQsIDAsICJ6eno7IiwgZmFs
c2UpOwotICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hlZXQucnVs
ZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZDogYmxhY2s7
IiwgZmFsc2UsIGRpZFNldFN0eWxlVGV4dC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci19
CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFN0eWxlVGV4dChzdHlsZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZXNGb3JOb2RlKFdlYkluc3BlY3Rvci5k
b21BZ2VudC5kb2N1bWVudC5ib2R5LmlkLCBkaWRHZXRTdHlsZXMpOworICAgICAgICB9CiAKLWZ1
bmN0aW9uIGZyb250ZW5kX2FkZFJ1bGUodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgZnVuY3Rpb24g
ZGlkR2V0U3R5bGVzKHRlc3RDb250cm9sbGVyLCBzdHlsZXMpCi0gICAgewotICAgICAgICB0ZXN0
Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIiIpOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIj09PSBNYXRjaGVkIHJ1bGVzIGFmdGVyIHJ1bGUgYWRkZWQgPT09Iik7Ci0gICAg
ICAgIGZyb250ZW5kX2R1bXBSdWxlc0FycmF5KHRlc3RDb250cm9sbGVyLCBzdHlsZXMubWF0Y2hl
ZENTU1J1bGVzKTsKLSAgICAgICAgZnJvbnRlbmRfZGlzYWJsZVByb3BlcnR5KHRlc3RDb250cm9s
bGVyKTsKLSAgICB9CisgICAgICAgIGZ1bmN0aW9uIHJ1bGVBZGRlZChydWxlKQorICAgICAgICB7
CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChydWxlLnN0eWxl
LnN0eWxlSWQsIDAsICJmb250LWZhbWlseTogc2VyaWY7IiwgZmFsc2UsIGRpZFNldFN0eWxlVGV4
dCk7CisgICAgICAgIH0KIAotICAgIGZ1bmN0aW9uIGRpZFNldFN0eWxlVGV4dCh0ZXN0Q29udHJv
bGxlciwgc3R5bGUpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlc0Zv
ck5vZGUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50LmJvZHkuaWQsIGRpZEdldFN0eWxl
cy5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
YWRkUnVsZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwgImJvZHkiLCBy
dWxlQWRkZWQpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHJ1bGVBZGRlZCh0ZXN0Q29udHJvbGxl
ciwgcnVsZSkKKyAgICBmdW5jdGlvbiB0ZXN0X2Rpc2FibGVQcm9wZXJ0eSgpCiAgICAgewotICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChydWxlLnN0eWxlLnN0eWxlSWQs
IDAsICJmb250LWZhbWlseTogc2VyaWY7IiwgZmFsc2UsIGRpZFNldFN0eWxlVGV4dC5iaW5kKG51
bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfQorICAgICAgICBmdW5jdGlvbiBkaWREaXNhYmxl
UHJvcGVydHkoc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0
ZXIgdHdvIHByb3BlcnRpZXMgZGlzYWJsZWQsIG9uZSBwcm9wZXJ0eSBhZGRlZCwgb25lIHByb3Bl
cnR5IHJlbW92ZWQgPT09Iik7CisgICAgICAgICAgICBkdW1wUnVsZU9yU3R5bGUoc3R5bGUpOwor
ICAgICAgICAgICAgdGVzdF9lbmFibGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkKTsKKyAgICAgICAg
fQogCi0gICAgSW5zcGVjdG9yQmFja2VuZC5hZGRSdWxlKFdlYkluc3BlY3Rvci5kb21BZ2VudC5k
b2N1bWVudC5ib2R5LmlkLCAiYm9keSIsIHJ1bGVBZGRlZC5iaW5kKG51bGwsIHRlc3RDb250cm9s
bGVyKSk7Ci19CisgICAgICAgIGZ1bmN0aW9uIHN0eWxlc0NhbGxiYWNrKHN0eWxlcykKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gaGVpZ2h0IDogMTAwJSA7CisgICAgICAgICAgICAvLyBib3Jk
ZXI6IDFweCBzb2xpZDsKKyAgICAgICAgICAgIC8vIGJvcmRlci13aWR0aDogMnB4OworICAgICAg
ICAgICAgLy8gYmFja2dyb3VuZC1jb2xvciA6ICMzM0ZGMzM7CisgICAgICAgICAgICAvLyBnb29n
bGVzOiBhYnJhOworICAgICAgICAgICAgLy8gZm9vOiAuYmFyOworICAgICAgICAgICAgLy8gLW1v
ei1nb29nOiAxKioqOworICAgICAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAwcHg7CisKKyAgICAg
ICAgICAgIHZhciBzdHlsZSA9IHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXNbMV0uc3R5bGU7CisgICAg
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZVByb3BlcnR5KHN0eWxlLnN0eWxlSWQsIDAs
IHRydWUpOyAvLyBoZWlnaHQ6IDEwMCUKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9n
Z2xlUHJvcGVydHkoc3R5bGUuc3R5bGVJZCwgNywgdHJ1ZSk7IC8vIGJvcmRlci13aWR0aDogMHB4
CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChzdHlsZS5zdHls
ZUlkLCA3LCAiZm9udC1zaXplOiAxMnB4OyIsIGZhbHNlKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlLnN0eWxlSWQsIDksICJmb250LXNpemU6IDE0
cHg7IiwgZmFsc2UpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0
eShzdHlsZS5zdHlsZUlkLCA5LCB0cnVlKTsgLy8gZm9udC1zaXplOiAxNHB4CisgICAgICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChzdHlsZS5zdHlsZUlkLCA4LCAiYm9y
ZGVyLXdpZHRoOiAxcHg7IiwgdHJ1ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRv
Z2dsZVByb3BlcnR5KHN0eWxlLnN0eWxlSWQsIDgsIGZhbHNlKTsgLy8gYm9yZGVyLXdpZHRoOiAx
cHgKKyAgICAgICAgICAgIC8vIGhlaWdodCA6IDEwMCUgOyBbZF0KKyAgICAgICAgICAgIC8vIGJv
cmRlcjogMXB4IHNvbGlkOworICAgICAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAycHg7CisgICAg
ICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIDogIzMzRkYzMzsKKyAgICAgICAgICAgIC8vIGdv
b2dsZXM6IGFicmE7CisgICAgICAgICAgICAvLyBmb286IC5iYXI7CisgICAgICAgICAgICAvLyAt
bW96LWdvb2c6IDEqKio7CisgICAgICAgICAgICAvLyBmb250LXNpemU6IDEycHg7CisgICAgICAg
ICAgICAvLyBib3JkZXItd2lkdGg6IDFweDsKKyAgICAgICAgICAgIC8vIGZvbnQtc2l6ZTogMTRw
eDsgW2RdCisKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0
eWxlLnN0eWxlSWQsIDMsICIiLCB0cnVlLCBkaWREaXNhYmxlUHJvcGVydHkpOworICAgICAgICB9
CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2Rpc2FibGVQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlcikKLXsK
LSAgICBmdW5jdGlvbiBkaWREaXNhYmxlUHJvcGVydHkodGVzdENvbnRyb2xsZXIsIHN0eWxlKQot
ICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCI9PT0gQWZ0ZXIgdHdvIHByb3BlcnRpZXMgZGlz
YWJsZWQsIG9uZSBwcm9wZXJ0eSBhZGRlZCwgb25lIHByb3BlcnR5IHJlbW92ZWQgPT09Iik7Ci0g
ICAgICAgIGZyb250ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJvbGxlciwgc3R5bGUpOwot
ICAgICAgICBmcm9udGVuZF9lbmFibGVQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgc3R5bGUuc3R5
bGVJZCk7CisgICAgICAgIGZ1bmN0aW9uIG5vZGVDYWxsYmFjayhub2RlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlc0Zvck5vZGUobm9kZS5pZCwgc3R5
bGVzQ2FsbGJhY2spOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3Qubm9kZVdpdGhJ
ZCgidG9nZ2xlIiwgbm9kZUNhbGxiYWNrKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdHlsZXND
YWxsYmFjayh0ZXN0Q29udHJvbGxlciwgc3R5bGVzKQorICAgIGZ1bmN0aW9uIHRlc3RfZW5hYmxl
UHJvcGVydHkoc3R5bGVJZCkKICAgICB7Ci0gICAgICAgIC8vIGhlaWdodCA6IDEwMCUgOwotICAg
ICAgICAvLyBib3JkZXI6IDFweCBzb2xpZDsKLSAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAycHg7
Ci0gICAgICAgIC8vIGJhY2tncm91bmQtY29sb3IgOiAjMzNGRjMzOwotICAgICAgICAvLyBnb29n
bGVzOiBhYnJhOwotICAgICAgICAvLyBmb286IC5iYXI7Ci0gICAgICAgIC8vIC1tb3otZ29vZzog
MSoqKjsKLSAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAwcHg7Ci0KLSAgICAgICAgdmFyIHN0eWxl
ID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlc1sxXS5zdHlsZTsKLSAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC50b2dnbGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkLCAwLCB0cnVlKTsgLy8gaGVpZ2h0OiAx
MDAlCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlUHJvcGVydHkoc3R5bGUuc3R5bGVJ
ZCwgNywgdHJ1ZSk7IC8vIGJvcmRlci13aWR0aDogMHB4Ci0gICAgICAgIEluc3BlY3RvckJhY2tl
bmQuc2V0UHJvcGVydHlUZXh0KHN0eWxlLnN0eWxlSWQsIDcsICJmb250LXNpemU6IDEycHg7Iiwg
ZmFsc2UpOwotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VGV4dChzdHlsZS5z
dHlsZUlkLCA5LCAiZm9udC1zaXplOiAxNHB4OyIsIGZhbHNlKTsKLSAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC50b2dnbGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkLCA5LCB0cnVlKTsgLy8gZm9udC1z
aXplOiAxNHB4Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0UHJvcGVydHlUZXh0KHN0eWxl
LnN0eWxlSWQsIDgsICJib3JkZXItd2lkdGg6IDFweDsiLCB0cnVlKTsKLSAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC50b2dnbGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkLCA4LCBmYWxzZSk7IC8vIGJv
cmRlci13aWR0aDogMXB4Ci0gICAgICAgIC8vIGhlaWdodCA6IDEwMCUgOyBbZF0KLSAgICAgICAg
Ly8gYm9yZGVyOiAxcHggc29saWQ7Ci0gICAgICAgIC8vIGJvcmRlci13aWR0aDogMnB4OwotICAg
ICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yIDogIzMzRkYzMzsKLSAgICAgICAgLy8gZ29vZ2xlczog
YWJyYTsKLSAgICAgICAgLy8gZm9vOiAuYmFyOwotICAgICAgICAvLyAtbW96LWdvb2c6IDEqKio7
Ci0gICAgICAgIC8vIGZvbnQtc2l6ZTogMTJweDsKLSAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAx
cHg7Ci0gICAgICAgIC8vIGZvbnQtc2l6ZTogMTRweDsgW2RdCi0KLSAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5zZXRQcm9wZXJ0eVRleHQoc3R5bGUuc3R5bGVJZCwgMywgIiIsIHRydWUsIGRpZERp
c2FibGVQcm9wZXJ0eS5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7CisgICAgICAgIGZ1bmN0
aW9uIGRpZEVuYWJsZVByb3BlcnR5KHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQgPT09Iik7CisgICAgICAgICAgICBkdW1w
UnVsZU9yU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3RvckJhY2tlbmQudG9nZ2xlUHJvcGVy
dHkoc3R5bGVJZCwgNiwgZmFsc2UpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZVBy
b3BlcnR5KHN0eWxlSWQsIDgsIGZhbHNlLCBkaWRFbmFibGVQcm9wZXJ0eSk7CiAgICAgfQogCi0g
ICAgdmFyIHRvZ2dsZUVsZW1lbnQgPSBmcm9udGVuZF9ub2RlRm9ySWQoInRvZ2dsZSIpOwotICAg
IEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZSh0b2dnbGVFbGVtZW50LmlkLCBzdHls
ZXNDYWxsYmFjay5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci19CisgICAgLy8gRGF0YSBk
dW1waW5nCiAKLWZ1bmN0aW9uIGZyb250ZW5kX2VuYWJsZVByb3BlcnR5KHRlc3RDb250cm9sbGVy
LCBzdHlsZUlkKQotewotICAgIGZ1bmN0aW9uIGRpZEVuYWJsZVByb3BlcnR5KHRlc3RDb250cm9s
bGVyLCBzdHlsZSkKKyAgICBmdW5jdGlvbiBkdW1wUnVsZXNBcnJheShydWxlcykKICAgICB7Ci0g
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQgPT09Iik7Ci0g
ICAgICAgIGZyb250ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJvbGxlciwgc3R5bGUpOwot
ICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RDb250cm9sbGVyLnJlc3VsdHMp
OworICAgICAgICBpZiAoIXJ1bGVzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgZHVtcFJ1bGVP
clN0eWxlKHJ1bGVzW2ldKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZVBy
b3BlcnR5KHN0eWxlSWQsIDYsIGZhbHNlKTsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnRvZ2dsZVBy
b3BlcnR5KHN0eWxlSWQsIDgsIGZhbHNlLCBkaWRFbmFibGVQcm9wZXJ0eS5iaW5kKG51bGwsIHRl
c3RDb250cm9sbGVyKSk7Ci19Ci0KLS8vIERhdGEgZHVtcGluZwotCi1mdW5jdGlvbiBmcm9udGVu
ZF9kdW1wUnVsZXNBcnJheSh0ZXN0Q29udHJvbGxlciwgcnVsZXMpCi17Ci0gICAgaWYgKCFydWxl
cykKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3Ro
OyArK2kpCi0gICAgICAgIGZyb250ZW5kX2R1bXBSdWxlT3JTdHlsZSh0ZXN0Q29udHJvbGxlciwg
cnVsZXNbaV0pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENv
bnRyb2xsZXIsIHJ1bGVPclN0eWxlKQotewotICAgIGlmICghcnVsZU9yU3R5bGUpCi0gICAgICAg
IHJldHVybjsKLSAgICB2YXIgaXNSdWxlID0gISEocnVsZU9yU3R5bGUuc3R5bGUpOwotICAgIHZh
ciBzdHlsZSA9IGlzUnVsZSA/IHJ1bGVPclN0eWxlLnN0eWxlIDogcnVsZU9yU3R5bGU7Ci0gICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCIiKTsKLSAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goaXNSdWxlID8gInJ1bGUiIDogInN0eWxlIik7Ci0gICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cy5wdXNoKChpc1J1bGUgPyAocnVsZU9yU3R5bGUuc2VsZWN0b3JUZXh0ICsgIjogWyIg
KyBydWxlT3JTdHlsZS5vcmlnaW4gKyAiXSIpIDogInJhdyBzdHlsZSIpKTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
dmFyIHByb3BlcnR5ID0gc3R5bGUuY3NzUHJvcGVydGllc1tpXTsKLSAgICAgICAgaWYgKHByb3Bl
cnR5LnN0YXR1cyAhPT0gImRpc2FibGVkIikKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJl
c3VsdHMucHVzaCgiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHkudmFsdWUg
KyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPT09ICJpbXBvcnRhbnQiID8gIiBpcy1pbXBvcnRh
bnQiIDogIiIpICsgKHByb3BlcnR5LnBhcnNlZE9rID8gIiIgOiAiIG5vbi1wYXJzZWQiKSArIl0g
QFsiICsgcHJvcGVydHkuc3RhcnRPZmZzZXQgKyAiLSIgKyBwcm9wZXJ0eS5lbmRPZmZzZXQgKyAi
XSAiICsgcHJvcGVydHkuc3RhdHVzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAiJ10gIiAr
IHByb3BlcnR5LnN0YXR1cyk7CisgICAgZnVuY3Rpb24gZHVtcFJ1bGVPclN0eWxlKHJ1bGVPclN0
eWxlKQorICAgIHsKKyAgICAgICAgaWYgKCFydWxlT3JTdHlsZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdmFyIGlzUnVsZSA9ICEhKHJ1bGVPclN0eWxlLnN0eWxlKTsKKyAgICAgICAg
dmFyIHN0eWxlID0gaXNSdWxlID8gcnVsZU9yU3R5bGUuc3R5bGUgOiBydWxlT3JTdHlsZTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChpc1J1bGUgPyAicnVsZSIgOiAic3R5bGUiKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoKGlzUnVsZSA/IChydWxlT3JTdHlsZS5zZWxlY3RvclRleHQgKyAiOiBb
IiArIHJ1bGVPclN0eWxlLm9yaWdpbiArICJdIikgOiAicmF3IHN0eWxlIikpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07CisgICAgICAg
ICAgICBpZiAocHJvcGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQiKQorICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbJyIgKyBwcm9wZXJ0eS5uYW1lICsgIic6JyIgKyBw
cm9wZXJ0eS52YWx1ZSArICInIiArIChwcm9wZXJ0eS5wcmlvcml0eSA9PT0gImltcG9ydGFudCIg
PyAiIGlzLWltcG9ydGFudCIgOiAiIikgKyAocHJvcGVydHkucGFyc2VkT2sgPyAiIiA6ICIgbm9u
LXBhcnNlZCIpICsiXSBAWyIgKyBwcm9wZXJ0eS5zdGFydE9mZnNldCArICItIiArIHByb3BlcnR5
LmVuZE9mZnNldCArICJdICIgKyBwcm9wZXJ0eS5zdGF0dXMpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbdGV4dD0nIiArIHByb3Bl
cnR5LnRleHQgKyAiJ10gIiArIHByb3BlcnR5LnN0YXR1cyk7CisgICAgICAgIH0KICAgICB9Ci19
CiAKIAotZnVuY3Rpb24gZnJvbnRlbmRfbG9hZEFuZER1bXBTdHlsZVNoZWV0KHRlc3RDb250cm9s
bGVyLCBzdHlsZVNoZWV0SWQsIGNvbnRpbnVhdGlvbikKLXsKLSAgICBmdW5jdGlvbiBzdHlsZVNo
ZWV0TG9hZGVkKHRlc3RDb250cm9sbGVyLCBzdHlsZVNoZWV0KQorICAgIGZ1bmN0aW9uIGxvYWRB
bmREdW1wU3R5bGVTaGVldChzdHlsZVNoZWV0SWQsIGNvbnRpbnVhdGlvbikKICAgICB7Ci0gICAg
ICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiIik7Ci0gICAgICAgIHRlc3RDb250cm9s
bGVyLnJlc3VsdHMucHVzaCgiU3R5bGVTaGVldDogJyIgKyBzdHlsZVNoZWV0LnRleHQgKyAiJyIp
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlU2hlZXQucnVsZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICBmcm9udGVuZF9kdW1wUnVsZU9yU3R5bGUodGVzdENvbnRyb2xsZXIs
IHN0eWxlU2hlZXQucnVsZXNbaV0pOwotICAgICAgICBpZiAoY29udGludWF0aW9uKQotICAgICAg
ICAgICAgY29udGludWF0aW9uKHN0eWxlU2hlZXQpOwotICAgIH0KKyAgICAgICAgZnVuY3Rpb24g
c3R5bGVTaGVldExvYWRlZChzdHlsZVNoZWV0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiU3R5bGVTaGVldDogJyIgKyBzdHlsZVNoZWV0LnRleHQgKyAiJyIpOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LnJ1bGVzLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgICAgIGR1bXBSdWxlT3JTdHlsZShzdHlsZVNoZWV0LnJ1bGVzW2ldKTsKKyAgICAg
ICAgICAgIGlmIChjb250aW51YXRpb24pCisgICAgICAgICAgICAgICAgY29udGludWF0aW9uKHN0
eWxlU2hlZXQpOworICAgICAgICB9CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlU2hl
ZXQoc3R5bGVTaGVldElkLCBzdHlsZVNoZWV0TG9hZGVkLmJpbmQobnVsbCwgdGVzdENvbnRyb2xs
ZXIpKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTdHlsZVNoZWV0KHN0eWxlU2hlZXRJ
ZCwgc3R5bGVTaGVldExvYWRlZCk7CisgICAgfQogfQogCiAvKgpAQCAtMjkyLDcgKzI5MSw3IEBA
IGJvZHkubWFpbnBhZ2UgewogPC9zdHlsZT4KIDwvaGVhZD4KIAotPGJvZHkgY2xhc3M9Im1haW4x
IG1haW4yIG1haW5wYWdlIiBvbmxvYWQ9Im9ubG9hZCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5v
cm1hbDsgd2lkdGg6IDg1JSI+Cis8Ym9keSBpZD0ibWFpbkJvZHkiIGNsYXNzPSJtYWluMSBtYWlu
MiBtYWlucGFnZSIgb25sb2FkPSJydW5UZXN0KCkiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFs
OyB3aWR0aDogODUlIj4KIDxwPgogVGVzdHMgdGhhdCBJbnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0
aG9kcyB3b3JrIGFzIGV4cGVjdGVkLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtZXhwZWN0ZWQudHh0CmluZGV4IDY2MTgzNzljODQ3
YmMzMzE2MDk5MTQ0YmI2MDA5YjllMjYxNzgxYzEuLjhlYjAyMjA2YTNhMjc2YmM1MWNmMjEyMmVh
NzY5MTgyNTAzNTViODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMt
c291cmNlLWxpbmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzLXNvdXJjZS1saW5lcy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSwyNiBAQAogVGVzdHMgdGhh
dCBwcm9wZXIgc291cmNlIGxpbmVzIGFyZSByZXBvcnRlZCBmb3IgdGhlIHBhcnNlZCBzdHlsZXMu
CiAKLUxpbmU6MTUJYm9keSwgLmF0X2xpbmVfMTU6OmJlZm9yZQotTGluZToyOQlib2R5LCAuYXRf
bGluZV8yOQotTGluZTo0Mwlib2R5LCAuYXRfbGluZV80MwotTGluZTo1MAlib2R5LCAuYXRfbGlu
ZV81MAorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKKworPT09PT09PT0gTWF0Y2hlZCBD
U1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gYm9keSwgLmF0X2xpbmVfNTAgeyAoc3R5bGVz
LXNvdXJjZS1saW5lcy5odG1sOjUwKQorYm9yZGVyOiAxcHggc29saWQKKyAgICByZWQ7CisKK1tl
eHBhbmRlZF0gYm9keSwgLmF0X2xpbmVfNDMgeyAoc3R5bGVzLXNvdXJjZS1saW5lcy5odG1sOjQz
KQorZm9udC1zaXplOiAxMHB4OworCitbZXhwYW5kZWRdIGJvZHksIC5hdF9saW5lXzI5IHsgKHN0
eWxlcy1zb3VyY2UtbGluZXMuaHRtbDoyOSkKK2ZvbnQtZmFtaWx5OiAvKiAgQ29tbWVudCBpbiAK
KyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgKi9jb3VyaWVyOworCitbZXhwYW5kZWRdIGJv
ZHksIC5hdF9saW5lXzE1OjpiZWZvcmUgeyAoc3R5bGVzLXNvdXJjZS1saW5lcy5odG1sOjE1KQor
Y29sb3I6IHJlZDsKK2NvbnRlbnQ6ICJCZWZvcmUiOworCitbZXhwYW5kZWRdIGJvZHkgeyAodXNl
ciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CittYXJnaW46IDhweDsKKworCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLWlu
bGluZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5s
aW5lLmh0bWwKaW5kZXggZGNjOGEyMTIwN2Y4ZWZlMjhkMDhhMDMxYmQwNTZiMzYwMDgzYzhiMC4u
YzI3YmUyYzVjNTdiMjNiYjI2ZjI0ZjZlZTk2YmJmZTBjNTc4YzY3MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWwKQEAg
LTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVt
ZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIAogPHN0eWxlPgog
LmZvbyB7CkBAIC0xMSw0MSArMTEsMjEgQEAKIAogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgp
CitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBydW5BZnRlcklmcmFtZUlzTG9hZGVkKGZ1bmN0aW9u
KCkgewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGR1bXBBcnJheShyZXN1bHQpOwotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAg
ICAgICB9Ci0gICAgICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1bXBTdHls
ZXMiLCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KLQot
ZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFN0eWxlcyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJl
ZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfc2VsZWN0RWxlbWVudENvbnRp
bnVhdGlvbik7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJmb28iLCBz
dGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51YXRpb24odGVz
dENvbnRyb2xsZXIpCi17Ci0gICAgZnJvbnRlbmRfc2VsZWN0RWxlbWVudEFuZFJ1bih0ZXN0Q29u
dHJvbGxlciwgImZvbyIsIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51YXRpb24yKTsKLX0K
LQotZnVuY3Rpb24gZnJvbnRlbmRfc2VsZWN0RWxlbWVudENvbnRpbnVhdGlvbjIodGVzdENvbnRy
b2xsZXIpCi17Ci0gICAgdmFyIHJlc3VsdCA9IGZyb250ZW5kX2dldFNlbGVjdGVkRWxlbWVudFN0
eWxlcyh0cnVlKTsKLSAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7CisgICAg
ZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0
ZWRFbGVtZW50U3R5bGVzKHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9k
eSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVz
dHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBwcm9wZXIgaW5saW5lIHN0eWxlIGxvY2F0aW9u
cyBpbiB0aGUgc2lkZWJhciBwYW5lbC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzLXNvdXJjZS1saW5lcy5odG1sCmluZGV4IDIzZWJmYWE1NzA2M2NjYTYwNjJmNGIzNGIw
Y2Q3YTAyZTY0ODFhNDIuLjdkYzMxZTA3OTBmZDYyNzRjOWViMzRhYjE2YzViYTUyNDA4OTgwMGMg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMuaHRtbApA
QCAtNTMsNDcgKzUzLDI1IEBAIGJvZHksIC5hdF9saW5lXzUwCiB9CiA8L3N0eWxlPgogCi08c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0KCkK
IHsKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhzdHlsZXMpCi0gICAgewotICAgICAgICB2YXIgbWF0
Y2hlZENTU1J1bGVzID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlczsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtYXRjaGVkQ1NTUnVsZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlm
IChtYXRjaGVkQ1NTUnVsZXNbaV0ub3JpZ2luICE9PSAiIikKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIG91dHB1dCgiTGluZToiICsgKG1hdGNoZWRDU1NSdWxlc1tpXS5z
b3VyY2VMaW5lICsgMSkgKyAiXHQiICsgbWF0Y2hlZENTU1J1bGVzW2ldLnNlbGVjdG9yVGV4dCk7
Ci0gICAgICAgIH0KLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBldmFsdWF0ZUlu
V2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wU291cmNlTGluZXMiLCBjYWxsYmFjayk7Ci19Ci0K
LQotLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgorICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdp
dGhJZCgibWFpbkJvZHkiLCBzdGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2R1bXBTb3VyY2VM
aW5lcyh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Ci0gICAgZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwg
bnVsbCwgZnJvbnRlbmRfZ2V0UmF3U3R5bGVzKTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfZ2V0
UmF3U3R5bGVzKHRlc3RDb250cm9sbGVyKQotewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHN0eWxl
cykKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKHN0eWxlcyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxl
bWVudFN0eWxlcyh0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0KCk7CiAgICAgfQotICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9k
ZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYm9keS5pZCwgY2FsbGJhY2spOwogfQog
CiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSIgaWQ9Im1haW5Cb2R5Ij4KIDxwPgogVGVzdHMgdGhhdCBwcm9wZXIg
c291cmNlIGxpbmVzIGFyZSByZXBvcnRlZCBmb3IgdGhlIHBhcnNlZCBzdHlsZXMuCiA8L3A+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0bWwKaW5k
ZXggOTBhNzIzZWU5YjdhMDQ0MDE4ZmRmZTE5NTgxNWNkNDI4YmU5YWZjNy4uMGFiYTMxZDIzYjQ1
ZThjZGZkNzg2NDJmZmY0NTg5NWE3MTMwZjI5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMtc291cmNlLW9mZnNldHMuaHRtbApAQCAtMyw3MSArMyw1MSBAQAogCiA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXMtc291cmNlLW9mZnNldHMu
Y3NzIiAtLT4KIAotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQor
ZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIGZ1
bmN0aW9uIGR1bXBTdHlsZURhdGEocnVsZU9yU3R5bGUpCiAgICAgewotICAgICAgICBpZiAocmVz
dWx0ID09PSAicmVmcmVzaGluZyIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGR1bXBB
cnJheShyZXN1bHQpOwotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRl
SW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7Ci19Ci0KLQotLy8g
RnJvbnRlbmQgZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9ydW5UZXN0KHRlc3RDb250
cm9sbGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBmcm9u
dGVuZF9leHBhbmRET01TdWJ0cmVlKFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudCk7Ci0K
LSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkg
ewotICAgICAgICBmdW5jdGlvbiBzdHlsZXNDYWxsYmFjayh0ZXN0Q29udHJvbGxlciwgc3R5bGVz
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5bGVzLm1h
dGNoZWRDU1NSdWxlczsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hlZENT
U1J1bGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJ1bGUgPSBtYXRjaGVk
Q1NTUnVsZXNbaV07Ci0gICAgICAgICAgICAgICAgZnJvbnRlbmRfZHVtcFN0eWxlRGF0YSh0ZXN0
Q29udHJvbGxlciwgcnVsZSwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJv
bnRlbmRfZHVtcFN0eWxlRGF0YSh0ZXN0Q29udHJvbGxlciwgc3R5bGVzLmlubGluZVN0eWxlLCB0
cnVlKTsKKyAgICAgICAgdmFyIGlzUnVsZSA9ICEhKHJ1bGVPclN0eWxlLnN0eWxlKTsKKyAgICAg
ICAgdmFyIHN0eWxlOworICAgICAgICB2YXIgaGVhZGVyID0gIiI7CisgICAgICAgIGlmIChpc1J1
bGUpIHsKKyAgICAgICAgICAgIGlmIChydWxlT3JTdHlsZS5vcmlnaW4gIT09ICIiKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN0eWxlID0gcnVsZU9yU3R5bGUuc3R5bGU7
CisgICAgICAgICAgICBoZWFkZXIgPSBydWxlT3JTdHlsZS5zZWxlY3RvclRleHQgKyAiOiBbIiAr
IChydWxlT3JTdHlsZS5zZWxlY3RvclJhbmdlID8gcnVsZU9yU3R5bGUuc2VsZWN0b3JSYW5nZS5z
dGFydCArICItIiArIHJ1bGVPclN0eWxlLnNlbGVjdG9yUmFuZ2UuZW5kIDogIiIpICArICJdIjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0eWxlID0gcnVsZU9yU3R5bGU7CisgICAg
ICAgICAgICBoZWFkZXIgPSAiZWxlbWVudC5zdHlsZToiOwogICAgICAgICB9Ci0gICAgICAgIElu
c3BlY3RvckJhY2tlbmQuZ2V0U3R5bGVzRm9yTm9kZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9j
dW1lbnQuYm9keS5pZCwgc3R5bGVzQ2FsbGJhY2suYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikp
OwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wU3R5bGVEYXRhKHRlc3RDb250
cm9sbGVyLCBydWxlT3JTdHlsZSwgc2hvdWxkQmFpbCkKLXsKLSAgICB2YXIgaXNSdWxlID0gISEo
cnVsZU9yU3R5bGUuc3R5bGUpOwotICAgIHZhciBzdHlsZTsKLSAgICB2YXIgaGVhZGVyID0gIiI7
Ci0gICAgaWYgKGlzUnVsZSkgewotICAgICAgICBpZiAocnVsZU9yU3R5bGUub3JpZ2luICE9PSAi
IikgewotICAgICAgICAgICAgaWYgKHNob3VsZEJhaWwpCi0gICAgICAgICAgICAgICAgdGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRzKTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaGVhZGVyICsgIiBbIiAr
IHN0eWxlLnByb3BlcnRpZXMuc3RhcnRPZmZzZXQgICsgIi0iICsgc3R5bGUucHJvcGVydGllcy5l
bmRPZmZzZXQgKyAiXSIpOworICAgICAgICB2YXIgYWxsUHJvcGVydGllcyA9IHN0eWxlLmNzc1By
b3BlcnRpZXM7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsUHJvcGVydGllcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gYWxsUHJvcGVydGllc1tpXTsK
KyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5zdGF0dXMgPT09ICJzdHlsZSIpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyci
ICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHkudmFsdWUgKyAiJyIgKyAocHJvcGVy
dHkucHJpb3JpdHkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsgKHByb3BlcnR5LnBhcnNlZE9rID8g
IiIgOiAiIG5vbi1wYXJzZWQiKSArIl0gQFsiICsgcHJvcGVydHkuc3RhcnRPZmZzZXQgKyAiLSIg
KyBwcm9wZXJ0eS5lbmRPZmZzZXQgKyAiXSIpOwogICAgICAgICB9Ci0gICAgICAgIHN0eWxlID0g
cnVsZU9yU3R5bGUuc3R5bGU7Ci0gICAgICAgIGhlYWRlciA9IHJ1bGVPclN0eWxlLnNlbGVjdG9y
VGV4dCArICI6IFsiICsgKHJ1bGVPclN0eWxlLnNlbGVjdG9yUmFuZ2UgPyBydWxlT3JTdHlsZS5z
ZWxlY3RvclJhbmdlLnN0YXJ0ICsgIi0iICsgcnVsZU9yU3R5bGUuc2VsZWN0b3JSYW5nZS5lbmQg
OiAiIikgICsgIl0iOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0eWxlID0gcnVsZU9yU3R5bGU7
Ci0gICAgICAgIGhlYWRlciA9ICJlbGVtZW50LnN0eWxlOiI7CiAgICAgfQotICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaChoZWFkZXIgKyAiIFsiICsgc3R5bGUucHJvcGVydGllcy5zdGFy
dE9mZnNldCAgKyAiLSIgKyBzdHlsZS5wcm9wZXJ0aWVzLmVuZE9mZnNldCArICJdIik7Ci0gICAg
dmFyIGFsbFByb3BlcnRpZXMgPSBzdHlsZS5jc3NQcm9wZXJ0aWVzOwotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYWxsUHJvcGVydGllcy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgcHJvcGVy
dHkgPSBhbGxQcm9wZXJ0aWVzW2ldOwotICAgICAgICBpZiAocHJvcGVydHkuc3RhdHVzID09PSAi
c3R5bGUiKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJl
c3VsdHMucHVzaCgiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHkudmFsdWUg
KyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsgKHByb3Bl
cnR5LnBhcnNlZE9rID8gIiIgOiAiIG5vbi1wYXJzZWQiKSArIl0gQFsiICsgcHJvcGVydHkuc3Rh
cnRPZmZzZXQgKyAiLSIgKyBwcm9wZXJ0eS5lbmRPZmZzZXQgKyAiXSIpOworICAgIAorICAgIElu
c3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgibWFpbkJvZHkiLCBzdGVwMSk7CisKKyAgICBm
dW5jdGlvbiBzdGVwMShub2RlKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRT
dHlsZXNGb3JOb2RlKG5vZGUuaWQsIHN0ZXAyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVw
MihzdHlsZXMpCisgICAgeworICAgICAgICB2YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5bGVzLm1h
dGNoZWRDU1NSdWxlczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVkQ1NTUnVs
ZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBkdW1wU3R5bGVEYXRhKG1hdGNoZWRDU1NSdWxl
c1tpXSk7CisgICAgICAgIGR1bXBTdHlsZURhdGEoc3R5bGVzLmlubGluZVN0eWxlKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0gICAgaWYgKHNob3VsZEJh
aWwpCi0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUodGVzdENvbnRyb2xsZXIucmVz
dWx0cyk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtODIsNyArNjIsNyBAQCBib2R5Lm1haW5wYWdlIHsK
IDwvc3R5bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGNsYXNzPSJtYWluMSBtYWluMiBtYWlucGFnZSIg
b25sb2FkPSJvbmxvYWQoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdpZHRoOiA4MCUi
PgorPGJvZHkgaWQ9Im1haW5Cb2R5IiBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBhZ2UiIG9ubG9h
ZD0icnVuVGVzdCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2lkdGg6IDgwJSI+CiA8
cD4KIFRlc3RzIHRoYXQgcHJvcGVyIGRhdGEgYW5kIHN0YXJ0L2VuZCBvZmZzZXQgcG9zaXRpb25z
IGFyZSByZXBvcnRlZCBmb3IgQ1NTIHN0eWxlIGRlY2xhcmF0aW9ucyBhbmQgcHJvcGVydGllcy4K
IDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtdXJsLWxpbmtp
ZnkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtdXJsLWxpbmtpZnkuaHRtbApp
bmRleCBmZTY3MTc3YWZjNDEyYTI0YzA1NTliZDEzZDBiZDkwYWZmN2JjMmRjLi5hMDY5YjU1MDEx
YzE3OWQxNjczMDBhYmE5OTM1MDY2NzkyMjNhMzdjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzLXVybC1saW5raWZ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy11cmwtbGlua2lmeS5odG1sCkBAIC0xLDI1ICsxLDMwIEBACiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzMi5q
cyI+PC9zY3JpcHQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHls
ZXMtdXJsLWxpbmtpZnkuY3NzIj4KKworPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1m
dW5jdGlvbiBydW5BZnRlcklmcmFtZUxvYWRlZCgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBm
dW5jdGlvbiBzdGVwKCkKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVVSTChiYXNlVVJMLCBocmVmKQog
ICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVkKQotICAgICAgICAgICAgc2V0
VGltZW91dChzdGVwLCAxMDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBydW5UZXN0KCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KFdlYkluc3BlY3Rvci5jb21wbGV0ZVVS
TChiYXNlVVJMLCBocmVmKSk7CiAgICAgfQotICAgIHNldFRpbWVvdXQoc3RlcCwgMTAwKTsKLX0K
IAotZnVuY3Rpb24gdGVzdCgpCi17CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlBhcnRp
YWwgVVJMcyBjb21wbGV0ZWQ6Iik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNv
bSIsICIvIik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJtb28iKTsK
KyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRwczovL3NlY3VyZS5j
b20vbW9vIik7CisgICAgY29tcGxldGVVUkwoImh0dHBzOi8vZXhhbXBsZS5jb20vZm9vIiwgIi8v
c2VjdXJlLmNvbS9tb28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUuY29tL2Zv
by96b28iLCAiL21vbyIpOworICAgIGNvbXBsZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5jb20vZm9v
L3pvby8iLCAibW9vIik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28v
em9vIiwgImJvby9tb28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUuY29tL2Zv
byIsICJtb28iKTsKKyAgICBjb21wbGV0ZVVSTCgiaHR0cDovL2V4YW1wbGUuY29tL2ZvbyIsICI/
YT1iIik7CisgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28/Yz1kIiwgIj9h
PWIiKTsKKwogICAgIGZ1bmN0aW9uIGR1bXBIcmVmKCkKICAgICB7CiAgICAgICAgIHZhciBocmVm
OwpAQCAtNDEsNTIgKzQ2LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdChvdXRwdXQuam9pbigiLyIpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
ZWxlY3RMb2NhbEVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3RF
bGVtZW50QW5kUnVuKCJsb2NhbCIsIGV4ZWN1dGVMb2NhbFRlc3QpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGNvbXBsZXRlVVJMKGJhc2VVUkwsIGhyZWYpCi0gICAgewotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChXZWJJbnNwZWN0b3IuY29tcGxldGVVUkwoYmFzZVVSTCwgaHJlZikp
OwotICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoImxvY2FsIiwgc3Rl
cDEpOwogCi0gICAgZnVuY3Rpb24gY29tcGxldGVVUkxUZXN0KCkKKyAgICBmdW5jdGlvbiBzdGVw
MSgpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUGFydGlhbCBVUkxz
IGNvbXBsZXRlZDoiKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0dHA6Ly9leGFtcGxlLmNvbSIs
ICIvIik7Ci0gICAgICAgIGNvbXBsZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5jb20iLCAibW9vIik7
Ci0gICAgICAgIGNvbXBsZXRlVVJMKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHBzOi8vc2Vj
dXJlLmNvbS9tb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0dHBzOi8vZXhhbXBsZS5jb20v
Zm9vIiwgIi8vc2VjdXJlLmNvbS9tb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0dHA6Ly9l
eGFtcGxlLmNvbS9mb28vem9vIiwgIi9tb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0dHA6
Ly9leGFtcGxlLmNvbS9mb28vem9vLyIsICJtb28iKTsKLSAgICAgICAgY29tcGxldGVVUkwoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28vem9vIiwgImJvby9tb28iKTsKLSAgICAgICAgY29tcGxldGVV
UkwoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28iLCAibW9vIik7Ci0gICAgICAgIGNvbXBsZXRlVVJM
KCJodHRwOi8vZXhhbXBsZS5jb20vZm9vIiwgIj9hPWIiKTsKLSAgICAgICAgY29tcGxldGVVUkwo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28/Yz1kIiwgIj9hPWIiKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBleGVjdXRlTG9jYWxUZXN0KCkKLSAgICB7Ci0gICAgICAgIGNvbXBsZXRlVVJMVGVzdCgp
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGluayBmb3IgYSBVUkkgZnJvbSBD
U1MgZG9jdW1lbnQ6Iik7CiAgICAgICAgIGR1bXBIcmVmKCk7Ci0gICAgICAgIEluc3BlY3RvclRl
c3Quc2VsZWN0RWxlbWVudEFuZFJ1bigiaWZyYW1lZCIsIGV4ZWN1dGVJZnJhbWVkVGVzdCk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgiaWZyYW1lZCIsIHN0ZXAyKTsK
ICAgICB9CiAKLSAgICBmdW5jdGlvbiBleGVjdXRlSWZyYW1lZFRlc3QoKQorICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJMaW5rIGZv
ciBhIFVSSSBmcm9tIGlmcmFtZSBpbmxpbmUgc3R5bGVzaGVldDoiKTsKICAgICAgICAgZHVtcEhy
ZWYoKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Ci0KLSAg
ICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4obnVsbCwgc2VsZWN0TG9jYWxF
bGVtZW50KTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1bkFmdGVy
SWZyYW1lTG9hZGVkKCkiPgorPGJvZHkgb25sb2FkPSJydW5BZnRlcklmcmFtZUlzTG9hZGVkKCki
PgogPHA+CiBUZXN0cyB0aGF0IFVSTHMgYXJlIGxpbmtlZCB0byBhbmQgY29tcGxldGVkIGNvcnJl
Y3RseS4gQnVncyA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTY2MyI+NTE2NjM8L2E+LCA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MzE3MSI+NTMxNzE8L2E+CiA8L3A+Cg==
</data>
<flag name="review"
          id="73928"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>