<?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>153251</bug_id>
          
          <creation_ts>2016-01-19 14:06:13 -0800</creation_ts>
          <short_desc>Modern IDB: Split all storage/indexeddb/modern tests into separate HTML + JS format</short_desc>
          <delta_ts>2016-01-19 15:41:30 -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>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156731</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-19 14:06:13 -0800</bug_when>
    <thetext>Modern IDB: Split all storage/indexeddb/modern tests into separate HTML + JS format

Many of these tests were written in a complete ad hoc manner, not at all like our JS-test infrastructure, so getting them on to the JS-test infrastructure will require lots of updated test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156737</commentid>
    <comment_count>1</comment_count>
      <attachid>269293</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-19 14:13:53 -0800</bug_when>
    <thetext>Created attachment 269293
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156751</commentid>
    <comment_count>2</comment_count>
      <attachid>269293</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-01-19 14:50:22 -0800</bug_when>
    <thetext>Comment on attachment 269293
patch v1

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156766</commentid>
    <comment_count>3</comment_count>
      <attachid>269293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 15:41:27 -0800</bug_when>
    <thetext>Comment on attachment 269293
patch v1

Clearing flags on attachment: 269293

Committed r195321: &lt;http://trac.webkit.org/changeset/195321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156767</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 15:41:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269293</attachid>
            <date>2016-01-19 14:13:53 -0800</date>
            <delta_ts>2016-01-19 15:41:27 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>604822</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNTgzZmFmLi5mZWY4NzJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE2LTAx
LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4g
SURCOiBTcGxpdCBhbGwgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuIHRlc3RzIGludG8gc2VwYXJh
dGUgSFRNTCArIEpTIGZvcm1hdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MzI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3RzLWNh
bmNlbGxlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9hYm9ydGVkLXB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2Fib3J0ZWQtcHV0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLWFkZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLWFkZC5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9iYXNpYy1wdXQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9iYXNpYy1wdXQuaHRtbDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlLWluZGV4LWZhaWx1cmVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlLWluZGV4LWZh
aWx1cmVzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9i
amVjdHN0b3JlLWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vY3JlYXRlb2JqZWN0c3RvcmUtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGVvYmplY3RzdG9yZS1m
YWlsdXJlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3It
MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNv
ci0xLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0yLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTIu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMy5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci00Lmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci01LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTUuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTYtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNi5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci03Lmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci04LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTguaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vZGF0ZS1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTEuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMi1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTIu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2Ut
bnVsbC1uYW1lLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNlcHRpb24uaHRtbDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1l
dmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Rl
bGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWlu
ZGV4LTIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlb2Jq
ZWN0c3RvcmUtMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2RlbGV0ZW9iamVjdHN0b3JlLTEuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vZG91YmxlLWFib3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLWFib3J0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RvdWJsZS1vcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLW9wZW4uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZ2V0LWluZGV4LWZhaWx1cmVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWluZGV4LWZhaWx1cmVzLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmpl
Y3RzdG9yZS1mYWlsdXJlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLXRyYW5zYWN0aW9u
LWZhaWx1cmVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRiZGF0YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMuaHRtbDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtcHJvcGVydGllcy1iYXNpYy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LXByb3BlcnRp
ZXMtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTEuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTIu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUt
Y291bnQtMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2lkYm9iamVjdHN0b3JlLWNvdW50LTEuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWls
dXJlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3Rz
dG9yZS1kZWxldGUtMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0xLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0yLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTIu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUt
ZGVsZXRlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLWZhaWx1cmVzLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWdldC1mYWlsdXJlcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0
b3JlLWdldC1mYWlsdXJlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1j
bGVhci1mYWlsdXJlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9p
ZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZh
aWx1cmVzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTEt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0x
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0yLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0zLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC00Lmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01Lmh0bWw6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTEuaHRtbDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0z
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3Vu
dC1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LWdldC1jb3VudC1iYXNpYy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC1nZXQtY291bnQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1nZXQtY291bnQtZmFpbHVyZXMuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4va2V5cGF0aC1iYXNpYy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2tleXBhdGgtYmFzaWMu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXR0
cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L29iamVjdHN0b3JlLWF0dHJpYnV0ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVyZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJzb3It
YWR2YW5jZS1mYWlsdXJlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9vYmplY3RzdG9yZS1jdXJzb3ItY29udGludWUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJzb3ItY29udGlu
dWUtZmFpbHVyZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3Bl
bmN1cnNvci1mYWlsdXJlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1l
dmVudC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJh
c2UtcmVxdWVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1zdWNjZXNzLWFmdGVyLXZlcnNpb25jaGFuZ2UtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
c3VjY2Vzcy1hZnRlci12ZXJzaW9uY2hhbmdlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS12ZXJzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS12ZXJzaW9ucy5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXF1ZXN0LXJlYWR5c3RhdGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXF1ZXN0LXJl
YWR5c3RhdGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5odG1sLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYWJvcnRlZC1wdXQu
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9y
dGVkLXB1dC5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvYXV0b2luY3JlbWVudC1hYm9ydC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQuaHRtbC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jhc2ljLWFkZC5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLWFkZC5odG1sLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmFzaWMtcHV0Lmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMt
cHV0Lmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9j
cmVhdGUtaW5kZXgtZmFpbHVyZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVyZXMuaHRtbC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2NyZWF0ZW9iamVjdHN0b3JlLWJhc2lj
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Jl
YXRlb2JqZWN0c3RvcmUtYmFzaWMuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2NyZWF0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlb2JqZWN0c3RvcmUt
ZmFpbHVyZXMuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2N1cnNvci0xLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vY3Vyc29yLTEuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL2N1cnNvci0yLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTIuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2N1cnNvci0zLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTMuaHRtbC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2N1cnNvci00LmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTQuaHRtbC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2N1cnNvci01LmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTUuaHRt
bC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2N1cnNvci02
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vy
c29yLTYuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2N1cnNvci03LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vY3Vyc29yLTcuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2N1cnNvci04LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTguaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL2RhdGUtYmFzaWMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLmh0bWwuCisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS0xLmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJh
c2UtMS5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
ZGVsZXRlZGF0YWJhc2UtMi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTIuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNlcHRp
b24uanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQu
aHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0
ZWRhdGFiYXNlLXJlcXVlc3QuanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvZGVsZXRlaW5kZXgtMS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEuaHRtbC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0ZWluZGV4LTIuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRl
eC0yLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9k
ZWxldGVvYmplY3RzdG9yZS0xLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlb2JqZWN0c3RvcmUtMS5odG1sLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZG91YmxlLWFib3J0LmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLWFib3J0Lmh0bWwu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9kb3VibGUtb3Bl
bi5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNl
cy9nZXQtaW5kZXgtZmFpbHVyZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9nZXQtaW5kZXgtZmFpbHVyZXMuaHRtbC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2dldC1rZXlyYW5nZS5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS5odG1s
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRiZGF0YWJh
c2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1m
YWlsdXJlcy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvaWRiZGF0YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMuanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS10cmFuc2FjdGlvbi1m
YWlsdXJlcy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvaWRiaW5kZXgtcHJvcGVydGllcy1iYXNpYy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LXByb3BlcnRpZXMtYmFzaWMuaHRtbC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0
b3JlLWNsZWFyLTEuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3Rv
cmUtY2xlYXItMi5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNv
dXJjZXMvaWRib2JqZWN0c3RvcmUtY291bnQtMS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEuaHRtbC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3Jl
LWNvdW50LWZhaWx1cmVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWRlbGV0
ZS0xLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtZGVsZXRlLTEuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0yLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVs
ZXRlLTIuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2lkYm9iamVjdHN0b3JlLWRlbGV0ZS1mYWlsdXJlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS1mYWlsdXJl
cy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRi
b2JqZWN0c3RvcmUtZ2V0LWZhaWx1cmVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZ2V0LWZhaWx1cmVzLmh0bWwuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJvYmplY3RzdG9y
ZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJl
cy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRi
dHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMuanM6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5kZXgtMS5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTEuaHRtbC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LTIuanM6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0yLmh0bWwu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRleC0zLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgt
My5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5k
ZXgtNC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LTQuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2luZGV4LTUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC01Lmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L3Jlc291cmNlcy9pbmRleC1jdXJzb3ItMS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLmh0bWwuCisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRleC1jdXJzb3ItMi5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0y
Lmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRl
eC1jdXJzb3ItMy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2luZGV4LWN1cnNvci0zLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3Jlc291cmNlcy9pbmRleC1nZXQtY291bnQtYmFzaWMuanM6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1nZXQtY291bnQtYmFzaWMu
aHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4
LWdldC1jb3VudC1mYWlsdXJlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1mYWlsdXJlcy5odG1sLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpYy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2tleXBhdGgtYmFz
aWMuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29i
amVjdHN0b3JlLWF0dHJpYnV0ZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdHRyaWJ1dGVzLmh0bWwuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3ItYWR2
YW5jZS1mYWlsdXJlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNvci1hZHZhbmNlLWZhaWx1cmVzLmh0bWwuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJz
b3ItY29udGludWUtZmFpbHVyZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJzb3ItY29udGludWUtZmFpbHVyZXMuaHRt
bC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29wZW5jdXJz
b3ItZmFpbHVyZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5qczogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0
YWJhc2UtcmVxdWVzdC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0Lmh0bWwuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0YWJhc2Utc3VjY2Vzcy1hZnRlci12ZXJz
aW9uY2hhbmdlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmRhdGFiYXNlLXN1Y2Nlc3MtYWZ0ZXItdmVyc2lvbmNoYW5nZS5odG1sLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvb3BlbmRhdGFiYXNlLXZl
cnNpb25zLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb3BlbmRhdGFiYXNlLXZlcnNpb25zLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL3Jlc291cmNlcy9yZXF1ZXN0LXJlYWR5c3RhdGUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1
bGVyLTEuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMS5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTIuanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hl
ZHVsZXItMi5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMy5odG1sLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2No
ZWR1bGVyLTUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNS5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTYuanM6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1z
Y2hlZHVsZXItNi5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNv
dXJjZXMvdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi0yLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LXRo
ZW4tcmVvcGVuLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vdmVyc2lvbmNoYW5nZS1hYm9ydC10aGVuLXJlb3Blbi5odG1sLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1ldmVudC5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25j
aGFuZ2UtZXZlbnQuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJh
bnNhY3Rpb24tc2NoZWR1bGVyLTEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMi1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVk
dWxlci0yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0
aW9uLXNjaGVkdWxlci0zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTUtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXIt
NS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1z
Y2hlZHVsZXItNi1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi92ZXJzaW9uY2hhbmdlLWFib3J0
LXRoZW4tcmVvcGVuLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vdmVyc2lvbmNoYW5nZS1hYm9ydC10aGVuLXJlb3Blbi5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi92ZXJzaW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1ldmVudC5o
dG1sOgorCiAyMDE2LTAxLTE5ICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF1bY3NzLWFsaWduXSBqdXN0aWZ5LXNlbGYgc3RyZXRj
aCBpcyBub3QgYXBwbGllZCBmb3IgaW1nIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydC1yZXF1
ZXN0cy1jYW5jZWxsZWQtZXhwZWN0ZWQudHh0CmluZGV4IDg5YzBjNzcuLjY2MDM4NGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydC1yZXF1ZXN0
cy1jYW5jZWxsZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsOCBAQAogVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB1bi1oYW5kbGVkIHJlcXVlc3RzIGlu
IGEgdHJhbnNhY3Rpb24gcmVjZWl2ZSBvbmVycm9yIGNhbGxiYWNrcyB3aGVuIHRoZSB0cmFuc2Fj
dGlvbiBpcyBhYm9ydGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogSW5pdGlh
bCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogRXJyb3Ig
aGFuZGxpbmc6ICJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdBJyB9LCAxKTsiIChlcnJvcikKIEVy
cm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnQicgfSwgMik7IiAoZXJyb3Ip
CkBAIC0yMCw1ICsyNCw3IEBAIEVycm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUuZ2V0KDEpOyIg
KGVycm9yKQogRXJyb3IgaGFuZGxpbmc6ICJvYmplY3RTdG9yZS5nZXQoMik7IiAoZXJyb3IpCiBF
cnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLmdldCgzKTsiIChlcnJvcikKIHJlYWRvbmx5IHRy
YW5zYWN0aW9uIGFib3J0ZWQKLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmh0bWwKaW5k
ZXggZDcwZDk3Ny4uZmRkZGE0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQuaHRt
bApAQCAtMSwxNTYgKzEsMTAgQEAKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgdW4taGFuZGxl
ZCByZXF1ZXN0cyBpbiBhIHRyYW5zYWN0aW9uIHJlY2VpdmUgb25lcnJvciBjYWxsYmFja3Mgd2hl
biB0aGUgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZC48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2
PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0
aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFyIGRhdGFiYXNlOwotdmFyIG9iamVjdFN0
b3JlOwotCi1mdW5jdGlvbiBzZXR1cFJlcXVlc3QoY29kZSkKLXsKLSAgICB2YXIgcmVxdWVzdCA9
IGV2YWwoY29kZSk7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBsb2cgKCJTdWNjZXNzIGhhbmRsaW5nOiBcIiIgKyBjb2RlICsgIlwiIik7Ci0gICAg
fQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAgICBsb2cg
KCJFcnJvciBoYW5kbGluZzogXCIiICsgY29kZSArICJcIiAoIiArIGUudHlwZSArICIpIik7Ci0g
ICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSAgIAotfQotCi1zdGFydFRlc3QoKTsK
LQotZnVuY3Rpb24gc3RhcnRUZXN0KCkgewotICAgIHZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJBYm9ydFJlcXVlc3RzQ2FuY2VsbGVkRGF0YWJhc2UiLCAxKTsKLSAg
ICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQu
b2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAg
ICAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247
Ci0gICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIG9i
amVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIp
OwotICAgICAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0EnIH0sIDEp
OyIpOwotICAgICAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0InIH0s
IDIpOyIpOwotICAgICAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0Mn
IH0sIDMpOyIpOwotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5hYm9ydCgpOwotCi0gICAg
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gYWJv
cnRlZCIpOwotICAgICAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgICAgIGNvbnRp
bnVlVGVzdDEoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGxvZygiSW5pdGlhbCB1cGdy
YWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOwotICAg
ICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgbG9nKCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvciAiICsgZXZlbnQpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkgewotICAgIHZhciBjcmVh
dGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJBYm9ydFJlcXVlc3RzQ2FuY2VsbGVk
RGF0YWJhc2UiLCAxKTsKLSAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiU2Vjb25kIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVy
c2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5u
ZXdWZXJzaW9uKTsKLQotICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVx
dWVzdC50cmFuc2FjdGlvbjsKLSAgICAgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0
OwotICAgICAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKLSAgICAKLSAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5w
dXQoeyBiYXI6ICdBJyB9LCAxKTsiKTsKLSAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9y
ZS5wdXQoeyBiYXI6ICdCJyB9LCAyKTsiKTsKLSAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RT
dG9yZS5wdXQoeyBiYXI6ICdDJyB9LCAzKTsiKTsKLSAgICAKLSAgICAgICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgbG9nKCJTZWNv
bmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGxvZygiU2Vj
b25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGxvZygiU2Vj
b25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiAr
IGV2ZW50KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVu
Y3Rpb24gY29udGludWVUZXN0MigpIHsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50
cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOwotICAgIG9iamVjdFN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotCi0gICAg
c2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMSk7Iik7Ci0gICAgc2V0dXBSZXF1ZXN0KCJv
YmplY3RTdG9yZS5nZXQoMik7Iik7Ci0gICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQo
Myk7Iik7Ci0gICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdEJyB9LCA0
KTsiKTsKLSAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0UnIH0sIDUp
OyIpOwotICAgIHNldHVwUmVxdWVzdCgib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnRicgfSwgNik7
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbi5hYm9ydCgpOwotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9u
IGFib3J0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0MygpOwotICAgIH0KLQotICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWR3
cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7Ci0gICAgICAgIGRvbmUoKTsK
LSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVu
dCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDMo
KSB7Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmpl
Y3RTdG9yZSIsICJyZWFkb25seSIpOwotICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotCi0gICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RT
dG9yZS5nZXQoMSk7Iik7Ci0gICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMik7Iik7
Ci0gICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMyk7Iik7Ci0KLSAgICB0cmFuc2Fj
dGlvbi5hYm9ydCgpOwotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
Y29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWR3cml0ZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0K
LX0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291
cmNlcy9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fi
b3J0ZWQtcHV0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9hYm9ydGVkLXB1dC1leHBlY3RlZC50eHQKaW5kZXggZGQ0NjAzNy4uMWZiNjRiNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0ZWQtcHV0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
YWJvcnRlZC1wdXQtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsOCBAQAorVGhpcyB0ZXN0IGNyZWF0
ZXMgc29tZSBvYmplY3Qgc3RvcmVzLCBwdXR0aW5nIHNvbWUgdmFsdWVzIGluIHRoZW0sIGNvbW1p
dHRpbmcgdGhlIHRyYW5zYWN0aW9uLiBJbiBhIG5ldyB0cmFuc2FjdGlvbiwgaXQgdGhlbiBvdmVy
d3JpdGVzIHRob3NlIHZhbHVlcywgYnV0IHRoZW4gYWJvcnRzIHRoZSB0cmFuc2FjdGlvbi4gRmlu
YWxseSBpdCB2ZXJpZmllcyBldmVyeXRoaW5nIGlzIHNldCB1cCBmcm9tIHRoZSBmaXJzdCB0cmFu
c2FjdGlvbiwgYW5kIG5vdGhpbmcgZnJvbSB0aGUgYWJvcnRlZCBvbmUgY29tbWl0dGVkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IEZpcnN0IHVwZ3JhZGUgbmVlZGVk
OiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBBTEVSVDogW29iamVjdCBJREJUcmFu
c2FjdGlvbl0gLSB2ZXJzaW9uY2hhbmdlCiBBTEVSVDogW29iamVjdCBJREJEYXRhYmFzZV0KQEAg
LTE3LDggKzIyLDcgQEAgQUxFUlQ6IFtvYmplY3QgSURCRGF0YWJhc2VdCiBBTEVSVDogZ2V0MSAn
Zm9vJyBzdWNjZWVkZWQgLSB2YWx1ZSB3YXMgJ2JhcicKIEFMRVJUOiBnZXQyICdmYXInIHN1Y2Nl
ZWRlZCAtIHZhbHVlIHdhcyAndW5kZWZpbmVkJwogQUxFUlQ6IFRoaXJkIHZlcnNpb24gY2hhbmdl
IHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1BTEVSVDogRG9uZQotVGhpcyB0ZXN0IGNyZWF0ZXMgc29t
ZSBvYmplY3Qgc3RvcmVzLCBwdXR0aW5nIHNvbWUgdmFsdWVzIGluIHRoZW0sIGNvbW1pdHRpbmcg
dGhlIHRyYW5zYWN0aW9uLgotSW4gYSBuZXcgdHJhbnNhY3Rpb24sIGl0IHRoZW4gb3ZlcndyaXRl
cyB0aG9zZSB2YWx1ZXMsIGJ1dCB0aGVuIGFib3J0cyB0aGUgdHJhbnNhY3Rpb24uCi1GaW5hbGx5
IGl0IHZlcmlmaWVzIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGZyb20gdGhlIGZpcnN0IHRyYW5zYWN0
aW9uLCBhbmQgbm90aGluZyBmcm9tIHRoZSBhYm9ydGVkIG9uZSBjb21taXR0ZWQuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0ZWQtcHV0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnRlZC1wdXQuaHRtbAppbmRl
eCA4OWY4ZTU2Li4wMzUyNWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vYWJvcnRlZC1wdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vYWJvcnRlZC1wdXQuaHRtbApAQCAtMSwyMDMgKzEsOSBAQAotVGhpcyB0
ZXN0IGNyZWF0ZXMgc29tZSBvYmplY3Qgc3RvcmVzLCBwdXR0aW5nIHNvbWUgdmFsdWVzIGluIHRo
ZW0sIGNvbW1pdHRpbmcgdGhlIHRyYW5zYWN0aW9uLjxicj4KLUluIGEgbmV3IHRyYW5zYWN0aW9u
LCBpdCB0aGVuIG92ZXJ3cml0ZXMgdGhvc2UgdmFsdWVzLCBidXQgdGhlbiBhYm9ydHMgdGhlIHRy
YW5zYWN0aW9uLjxicj4KLUZpbmFsbHkgaXQgdmVyaWZpZXMgZXZlcnl0aGluZyBpcyBzZXQgdXAg
ZnJvbSB0aGUgZmlyc3QgdHJhbnNhY3Rpb24sIGFuZCBub3RoaW5nIGZyb20gdGhlIGFib3J0ZWQg
b25lIGNvbW1pdHRlZC48YnI+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLX0KLQotdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkFib3J0ZWRQ
dXRUZXN0RGF0YWJhc2UiKTsKLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUi
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfQotCi1yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KQot
ewotICAgIGFsZXJ0KCJGaXJzdCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZl
bnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0g
ICAgCi0gICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICB2YXIgZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0OwotCi0gICAgYWxlcnQodHggKyAiIC0gIiArIHR4Lm1vZGUpOwotICAg
IGFsZXJ0KGRiKTsKLQotICAgIHZhciBvczEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9i
amVjdFN0b3JlMSIpOwotICAgIHZhciBvczIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9i
amVjdFN0b3JlMiIpOwotCi0gICAgdmFyIHB1dFJlcXVlc3QgPSBvczEucHV0KCJiYXIiLCAiZm9v
Iik7Ci0gICAgCi0gICAgcHV0UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICBhbGVydCgicHV0IHN1Y2NlZWRlZCAtIGtleSB3YXMgJyIgKyBwdXRSZXF1ZXN0LnJl
c3VsdCArICInIik7Ci0gICAgICAgIAotICAgICAgICB2YXIgZ2V0UmVxdWVzdDEgPSBvczEuZ2V0
KCJmb28iKTsKLSAgICAgICAgZ2V0UmVxdWVzdDEub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgICAgIGFsZXJ0KCJnZXQgJ2Zvbycgc3VjY2VlZGVkIC0gdmFsdWUgd2FzICci
ICsgZ2V0UmVxdWVzdDEucmVzdWx0ICsgIiciKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFJl
cXVlc3QxLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgYWxlcnQoImdl
dCAnZm9vJyB1bmV4cGVjdGVkbHkgZmFpbGVkIC0gIiArIGV2ZW50KTsKLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdmFyIGdldFJlcXVlc3QyID0gb3My
LmdldCgiZmFyIik7Ci0gICAgICAgIGdldFJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiZ2V0ICdmYXInIHN1Y2NlZWRlZCAtIHZhbHVlIHdh
cyAnIiArIGdldFJlcXVlc3QyLnJlc3VsdCArICInIik7Ci0gICAgICAgIH0KLQotICAgICAgICBn
ZXRSZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0
KCJnZXQgJ2ZhcicgdW5leHBlY3RlZGx5IGZhaWxlZCAtICIgKyBldmVudCk7Ci0gICAgICAgICAg
ICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdXRSZXF1ZXN0Lm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicHV0IHVuZXhwZWN0ZWRseSBmYWlsZWQg
LSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIAotICAgIHR4Lm9uYWJv
cnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiRmlyc3QgdmVyc2lvbiBjaGFu
Z2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwotICAgICAgICBkb25lKCk7Ci0gICAg
fQotCi0gICAgdHgub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0
KCJGaXJzdCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAg
ZGIuY2xvc2UoKTsKLSAgICAgICAgY29udGludWVUZXN0MSgpOwotICAgIH0KLQotICAgIHR4Lm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiRmlyc3QgdmVyc2lvbiBj
aGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZh
ciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJBYm9ydGVkUHV0VGVzdERhdGFiYXNl
IiwgMik7Ci0KLSAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGFsZXJ0KCJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwotICAgIAotICAgICAgICB2YXIgdHggPSByZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgICAgICB2
YXIgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0gICAgICAgIGFsZXJ0KHR4ICsgIiAtICIg
KyB0eC5tb2RlKTsKLSAgICAgICAgYWxlcnQoZGIpOwotCi0gICAgICAgIHZhciBvczEgPSB0eC5v
YmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMSIpOwotICAgICAgICB2YXIgb3MyID0gdHgub2Jq
ZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTIiKTsKLSAgICAgICAgdmFyIHB1dFJlcXVlc3QxID0g
b3MxLnB1dCgiYmF6IiwgImZvbyIpOwotICAgICAgICB2YXIgcHV0UmVxdWVzdDIgPSBvczIucHV0
KCJib28iLCAiZmFyIik7Ci0gICAgCi0gICAgICAgIHB1dFJlcXVlc3QxLm9uZXJyb3IgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBlcnJvciBvdmVyd3JpdGlu
ZyBiYXIgd2l0aCBiYXogLSAiICsgZSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBwdXRSZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgYWxlcnQoIldyaXRpbmcgaW50byBzZWNvbmQgb2JqZWN0IHN0b3JlIHVuZXhwZWN0ZWRseSBm
YWlsZWQgLSAiICsgZSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHB1dFJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIHZhciBnZXRSZXF1ZXN0MSA9IG9zMS5nZXQoImZvbyIpOwotICAgICAgICAgICAgdmFyIGdl
dFJlcXVlc3QyID0gb3MyLmdldCgiZmFyIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGdl
dFJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAg
YWxlcnQoImdldDEgJ2Zvbycgc3VjY2VlZGVkIC0gdmFsdWUgd2FzICciICsgZ2V0UmVxdWVzdDEu
cmVzdWx0ICsgIiciKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2V0UmVxdWVzdDEu
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQoImdldDEg
dW5leHBlY3RlZGx5IGZhaWxlZCAtICIgKyBldmVudCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBnZXRSZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgICAgIGFsZXJ0KCJnZXQyICdmYXInIHN1Y2Nl
ZWRlZCAtIHZhbHVlIHdhcyAnIiArIGdldFJlcXVlc3QyLnJlc3VsdCArICInIik7Ci0gICAgICAg
ICAgICAgICAgdHguYWJvcnQoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ2V0UmVx
dWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgYWxlcnQo
ImdldDIgdW5leHBlY3RlZGx5IGZhaWxlZCAtICIgKyBldmVudCk7Ci0gICAgICAgICAgICAgICAg
ZG9uZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0eC5v
bmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJTZWNvbmQgdmVy
c2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnQiKTsKLSAgICAgICAgICAgIGRiLmNsb3NlKCk7
Ci0gICAgICAgICAgICBjb250aW51ZVRlc3QyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0eC5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJTZWNvbmQg
dmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOwotICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHgub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiU2Vjb25kIHZlcnNpb24gY2hhbmdlIHRyYW5z
YWN0aW9uIGVycm9yIC0gIiArIGV2ZW50KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rp
b24gY29udGludWVUZXN0MigpCi17Ci0gICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERC
Lm9wZW4oIkFib3J0ZWRQdXRUZXN0RGF0YWJhc2UiLCAyKTsKLQotICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlRoaXJkIHVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVy
c2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLSAgICAKLSAgICAgICAgdmFyIHR4ID0gcmVx
dWVzdC50cmFuc2FjdGlvbjsKLSAgICAgICAgdmFyIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LQotICAgICAgICBhbGVydCh0eCArICIgLSAiICsgdHgubW9kZSk7Ci0gICAgICAgIGFsZXJ0KGRi
KTsKLQotICAgICAgICB2YXIgb3MxID0gdHgub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTEi
KTsKLSAgICAgICAgdmFyIG9zMiA9IHR4Lm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUyIik7
Ci0gICAgICAgIHZhciBnZXRSZXF1ZXN0MSA9IG9zMS5nZXQoImZvbyIpOwotICAgICAgICB2YXIg
Z2V0UmVxdWVzdDIgPSBvczIuZ2V0KCJmYXIiKTsKLSAgICAKLSAgICAgICAgZ2V0UmVxdWVzdDEu
b25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJnZXQxICdm
b28nIHN1Y2NlZWRlZCAtIHZhbHVlIHdhcyAnIiArIGdldFJlcXVlc3QxLnJlc3VsdCArICInIik7
Ci0gICAgICAgIH0KLQotICAgICAgICBnZXRSZXF1ZXN0MS5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJnZXQxICdmb28nIHVuZXhwZWN0ZWRseSBmYWlsZWQg
LSAiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Z2V0UmVxdWVzdDIub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFs
ZXJ0KCJnZXQyICdmYXInIHN1Y2NlZWRlZCAtIHZhbHVlIHdhcyAnIiArIGdldFJlcXVlc3QyLnJl
c3VsdCArICInIik7Ci0gICAgICAgIH0KLQotICAgICAgICBnZXRSZXF1ZXN0Mi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJnZXQyICdmYXInIHVuZXhwZWN0
ZWRseSBmYWlsZWQgLSAiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICB0eC5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgICAgIGFsZXJ0KCJUaGlyZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0Iik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0eC5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJUaGlyZCB2
ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdHgub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBhbGVydCgiVGhpcmQgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBl
Y3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYWJvcnRlZC1wdXQuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNy
ZW1lbnQtYWJvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQtZXhwZWN0ZWQudHh0CmluZGV4IDY0ZjBmMzQuLjMx
ZGFhODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9h
dXRvaW5jcmVtZW50LWFib3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3JlbWVudC1hYm9ydC1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSw4IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aXRoIGFuIG9iamVj
dHN0b3JlIHRoYXQgYXV0b2luY3JlbWVudHMuIEl0IHRoZW4gcHV0cyBzb21lIHRoaW5ncyBpbiB0
aGF0IG9iamVjdCBzdG9yZSwgY2hlY2tpbmcgdGhlIGtleXMgdGhhdCB3ZXJlIHVzZWQuIEJ1dCBp
dCB0aGVuIGFib3J0cyB0aGF0IHRyYW5zYWN0aW9uLiBUaGVuIGl0IG9wZW5zIGEgbmV3IG9uZSBh
bmQgcHV0cyBzb21ldGhpbmcgaW4gaXQsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZSBrZXkgZ2Vu
ZXJhdG9yIHdhcyByZXZlcnRlZCB3aGVuIHRoZSBhYm92ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRl
ZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFMRVJUOiBJbml0aWFsIHVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBBTEVSVDogSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKIEFMRVJUOiBPcGVu
aW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB0byBidW1wIHRoZSBrZXkgZ2VuZXJhdG9yLCBidXQg
aXQgd2lsbCBiZSBhYm9ydGVkCkBAIC0yNCw5ICsyOSw3IEBAIEFMRVJUOiBLZXkgdXNlZCBmb3Ig
cHV0IHdhcyAxMAogQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDExCiBBTEVSVDogS2V5IHVz
ZWQgZm9yIHB1dCB3YXMgMTIKIEFMRVJUOiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUK
LUFMRVJUOiBEb25lCi1UaGlzIHRlc3QgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aXRoIGFuIG9i
amVjdHN0b3JlIHRoYXQgYXV0b2luY3JlbWVudHMuCi1JdCB0aGVuIHB1dHMgc29tZSB0aGluZ3Mg
aW4gdGhhdCBvYmplY3Qgc3RvcmUsIGNoZWNraW5nIHRoZSBrZXlzIHRoYXQgd2VyZSB1c2VkLgot
QnV0IGl0IHRoZW4gYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uCi1UaGVuIGl0IG9wZW5zIGEgbmV3
IG9uZSBhbmQgcHV0cyBzb21ldGhpbmcgaW4gaXQsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZSBr
ZXkgZ2VuZXJhdG9yIHdhcyByZXZlcnRlZCB3aGVuIHRoZSBhYm92ZSB0cmFuc2FjdGlvbiB3YXMg
YWJvcnRlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0
b2luY3JlbWVudC1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQuaHRtbAppbmRleCA3M2NiOGMyLi5iNGJiOTI5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3JlbWVu
dC1hYm9ydC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9h
dXRvaW5jcmVtZW50LWFib3J0Lmh0bWwKQEAgLTEsMTU5ICsxLDkgQEAKLVRoaXMgdGVzdCBjcmVh
dGVzIGEgbmV3IGRhdGFiYXNlIHdpdGggYW4gb2JqZWN0c3RvcmUgdGhhdCBhdXRvaW5jcmVtZW50
cy48YnI+Ci1JdCB0aGVuIHB1dHMgc29tZSB0aGluZ3MgaW4gdGhhdCBvYmplY3Qgc3RvcmUsIGNo
ZWNraW5nIHRoZSBrZXlzIHRoYXQgd2VyZSB1c2VkLjxicj4KLUJ1dCBpdCB0aGVuIGFib3J0cyB0
aGF0IHRyYW5zYWN0aW9uLjxicj4KLVRoZW4gaXQgb3BlbnMgYSBuZXcgb25lIGFuZCBwdXRzIHNv
bWV0aGluZyBpbiBpdCwgZG91YmxlIGNoZWNraW5nIHRoYXQgdGhlIGtleSBnZW5lcmF0b3Igd2Fz
IHJldmVydGVkIHdoZW4gdGhlIGFib3ZlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLjxicj4KLTxz
Y3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBk
b25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0
ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJBdXRvaW5jcmVtZW50QWJvcnREYXRhYmFzZSIsIDEp
OwotdmFyIGRhdGFiYXNlOwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5l
d1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3Qu
dHJhbnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIHZh
ciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3Rv
cmUnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgY29udGludWVUZXN0MSgp
OwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiBwdXRDaGVja2VyKGV2ZW50KSB7Ci0gICAgYWxlcnQoIktleSB1c2Vk
IGZvciBwdXQgd2FzICIgKyBldmVudC50YXJnZXQucmVzdWx0KTsKLX0KLQotZnVuY3Rpb24gY29u
dGludWVUZXN0MSgpCi17Ci0gICAgYWxlcnQoIk9wZW5pbmcgcmVhZHdyaXRlIHRyYW5zYWN0aW9u
IHRvIGJ1bXAgdGhlIGtleSBnZW5lcmF0b3IsIGJ1dCBpdCB3aWxsIGJlIGFib3J0ZWQiKTsKLSAg
ICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbignVGVzdE9iamVjdFN0b3Jl
JywgInJlYWR3cml0ZSIpOwotICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnKTsKLSAgICAKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCgiYmFyMSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsK
LSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgiYmFyMyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKLSAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gcHV0Q2hlY2tlcjsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKLSAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyNiIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgcHV0Q2hlY2tlcihldmVudCk7Ci0gICAgICAgIHRyYW5zYWN0
aW9uLmFib3J0KCk7Ci0gICAgfQotICAgIAotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0
Iik7Ci0gICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9
Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIik7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQotewotICAgIGFs
ZXJ0KCJPcGVuaW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB0byBtYWtlIHN1cmUgdGhlIGtleSBn
ZW5lcmF0b3IgaGFkIHN1Y2Nlc3NmdWxseSByZXZlcnRlZCIpOwotICAgIAotICAgIHZhciB0cmFu
c2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCdUZXN0T2JqZWN0U3RvcmUnLCAicmVhZHdy
aXRlIik7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ1Rl
c3RPYmplY3RTdG9yZScpOwotCi0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJh
cjEiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjIiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1
dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoImJhcjQiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7
Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjUiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjYiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0KLSAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJl
YWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7Ci0gICAgICAgIGRvbmUoKTsK
LSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAg
ICBjb250aW51ZVRlc3QzKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5l
eHBlY3RlZCBlcnJvciIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBj
b250aW51ZVRlc3QzKCkKLXsKLSAgICBhbGVydCgiT3BlbmluZyByZWFkd3JpdGUgdHJhbnNhY3Rp
b24gdG8gbWFrZSBzdXJlIHRoZSBrZXkgZ2VuZXJhdG9yIHBpY2tzIHVwIHdoZXJlIGl0IHNob3Vs
ZCd2ZSBsZWZ0IG9mZiIpOwotICAgIAotICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRy
YW5zYWN0aW9uKCdUZXN0T2JqZWN0U3RvcmUnLCAicmVhZHdyaXRlIik7Ci0gICAgdmFyIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOwotCi0g
ICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjEiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQo
ImJhcjIiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJl
cXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5wdXQoImJhcjUiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNr
ZXI7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjYiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGFib3J0Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWR3
cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0g
ICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0
KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIpOwotICAgICAgICBkb25l
KCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtYWJvcnQuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2Jhc2ljLWFkZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vYmFzaWMtYWRkLWV4cGVjdGVkLnR4dAppbmRleCAzMmU5NDJlLi45YjE2NmE0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtYWRk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
YmFzaWMtYWRkLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBkb2VzIGJh
c2ljIHRlc3Rpbmcgb2YgSURCT2JqZWN0U3RvcmUuYWRkKCksIG1ha2luZyBzdXJlIHRoYXQgYW4g
YXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYWxyZWFkeS1leGlzdGluZyBrZXkgZmFpbHMgd2l0aCB0
aGUgYXBwcm9wcmlhdGUgZXJyb3IuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBB
TEVSVDogVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIEFM
RVJUOiBbb2JqZWN0IElEQlRyYW5zYWN0aW9uXSAtIHZlcnNpb25jaGFuZ2UKIEFMRVJUOiBbb2Jq
ZWN0IElEQkRhdGFiYXNlXQpAQCAtNSw2ICsxMCw3IEBAIEFMRVJUOiBwdXQgMSBzdWNjZWVkZWQg
LSBrZXkgd2FzICdmb28nCiBBTEVSVDogcHV0IDIgZmFpbGVkIC0gZXJyb3IKIEFMRVJUOiBnZXQg
c3VjY2VlZGVkIC0ga2V5IHdhcyAnYmFyJwogQUxFUlQ6IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlZAotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdCBkb2VzIGJhc2ljIHRlc3Rpbmcg
b2YgSURCT2JqZWN0U3RvcmUuYWRkKCksIG1ha2luZyBzdXJlIHRoYXQgYW4gYXR0ZW1wdCB0byBv
dmVyd3JpdGUgYW4gYWxyZWFkeS1leGlzdGluZyBrZXkgZmFpbHMgd2l0aCB0aGUgYXBwcm9wcmlh
dGUgZXJyb3IuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jh
c2ljLWFkZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2lj
LWFkZC5odG1sCmluZGV4IDM5MWUwY2IuLjU3ZDQ2NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9iYXNpYy1hZGQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtYWRkLmh0bWwKQEAgLTEsNzggKzEsOSBA
QAotVGhpcyB0ZXN0IGRvZXMgYmFzaWMgdGVzdGluZyBvZiBJREJPYmplY3RTdG9yZS5hZGQoKSwg
bWFraW5nIHN1cmUgdGhhdCBhbiBhdHRlbXB0IHRvIG92ZXJ3cml0ZSBhbiBhbHJlYWR5LWV4aXN0
aW5nIGtleSBmYWlscyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcnJvci48YnI+Ci08c2NyaXB0Pgot
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotdmFyIHJlcXVlc3QgPSB3aW5k
b3cuaW5kZXhlZERCLm9wZW4oIk5ld0RhdGFiYXNlQWRkVGVzdERhdGFiYXNlIik7Ci0KLWZ1bmN0
aW9uIGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFsZXJ0KCJVcGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAi
ICsgZXZlbnQubmV3VmVyc2lvbik7Ci0gICAgCi0gICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2Fj
dGlvbjsKLSAgICB2YXIgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0gICAgYWxlcnQodHgg
KyAiIC0gIiArIHR4Lm1vZGUpOwotICAgIGFsZXJ0KGRiKTsKLQotICAgIHZhciBvcyA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB2YXIgcHV0UmVxdWVzdDEg
PSBvcy5hZGQoImJhciIsICJmb28iKTsKLSAgICB2YXIgcHV0UmVxdWVzdDIgPSBvcy5hZGQoImJh
eiIsICJmb28iKTsKLQotICAgIHB1dFJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGFsZXJ0KCJwdXQgMSBzdWNjZWVkZWQgLSBrZXkgd2FzICciICsgcHV0UmVx
dWVzdDEucmVzdWx0ICsgIiciKTsKLSAgICB9Ci0KLSAgICBwdXRSZXF1ZXN0MS5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInB1dCAxIHVuZXhwZWN0ZWRseSBmYWls
ZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgcHV0UmVxdWVz
dDIub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInB1dCAyIHVu
ZXhwZWN0ZWRseSBzdWNjZWVkZWQgLSBrZXkgd2FzICciICsgcHV0UmVxdWVzdDIucmVzdWx0ICsg
IiciKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHB1dFJlcXVlc3QyLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicHV0IDIgZmFpbGVkIC0gIiArIGV2
ZW50LnR5cGUpOwotCi0gICAgICAgIHZhciBnZXRSZXF1ZXN0ID0gb3MuZ2V0KCJmb28iKTsKLSAg
ICAgICAgCi0gICAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgICAgIGFsZXJ0KCJnZXQgc3VjY2VlZGVkIC0ga2V5IHdhcyAnIiArIGdldFJlcXVl
c3QucmVzdWx0ICsgIiciKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFJlcXVlc3Qub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiZ2V0IHVuZXhwZWN0ZWRs
eSBmYWlsZWQgLSAiICsgZXZlbnQudHlwZSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0KLSAgICAgICAgCi0gICAgdHgub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJ2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0
eC5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb24g
Y2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
Ci0gICAgdHgub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJ2ZXJz
aW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKLSAg
ICAgICAgZG9uZSgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFzaWMtYWRkLmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9iYXNpYy1wdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2Jhc2ljLXB1dC1leHBlY3RlZC50eHQKaW5kZXggNmU0YTMzYi4uMjA5NzUyZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLXB1dC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jh
c2ljLXB1dC1leHBlY3RlZC50eHQKQEAgLTQsNSArNCw3IEBAIEFMRVJUOiBbb2JqZWN0IElEQkRh
dGFiYXNlXQogQUxFUlQ6IHB1dCBzdWNjZWVkZWQgLSBrZXkgd2FzICdmb28nCiBBTEVSVDogZ2V0
IHN1Y2NlZWRlZCAtIHZhbHVlIHdhcyAnYmFyJwogQUxFUlQ6IHZlcnNpb24gY2hhbmdlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlZAotQUxFUlQ6IERvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtcHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtcHV0Lmh0bWwKaW5kZXggMmM1NzA2MS4uYTU2YjdlZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLXB1dC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9iYXNpYy1wdXQu
aHRtbApAQCAtMSw2NCArMSw5IEBACi08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLX0KLQotdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIk5ld0Rh
dGFiYXNlUHV0VGVzdERhdGFiYXNlIik7Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGFsZXJ0
KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0KLQotcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
dmVudCkgewotICAgIGFsZXJ0KCJVcGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZl
bnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0g
ICAgCi0gICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICB2YXIgZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0OwotCi0gICAgYWxlcnQodHggKyAiIC0gIiArIHR4Lm1vZGUpOwotICAg
IGFsZXJ0KGRiKTsKLQotICAgIHZhciBvcyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKLSAgICB2YXIgcHV0UmVxdWVzdCA9IG9zLnB1dCgiYmFyIiwgImZvbyIpOwot
ICAgIAotICAgIHB1dFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoInB1dCBzdWNjZWVkZWQgLSBrZXkgd2FzICciICsgcHV0UmVxdWVzdC5yZXN1bHQg
KyAiJyIpOwotICAgICAgICAKLSAgICAgICAgdmFyIGdldFJlcXVlc3QgPSBvcy5nZXQoImZvbyIp
OwotICAgICAgICBnZXRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgICAgICBhbGVydCgiZ2V0IHN1Y2NlZWRlZCAtIHZhbHVlIHdhcyAnIiArIGdldFJlcXVlc3Qu
cmVzdWx0ICsgIiciKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFJlcXVlc3Qub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiZ2V0IHVuZXhwZWN0ZWRseSBm
YWlsZWQgLSAiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcHV0UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoInB1dCB1bmV4cGVjdGVkbHkgZmFpbGVkIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0KLSAgICAKLSAgICB0eC5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgYWxlcnQoInZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQi
KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHR4Lm9uY29tcGxldGUgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gY29t
cGxldGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0eC5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
fQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2Jhc2ljLXB1dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlLWluZGV4LWZhaWx1
cmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9j
cmVhdGUtaW5kZXgtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CmluZGV4IGVjMGFkYWEuLjdkNDFkN2Yg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGUt
aW5kZXgtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsOCBAQAogVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVu
IHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKIEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gMCBOZXcgdmVyc2lvbiAtIDEKIEZhaWxlZCB0byBjcmVhdGUgaW5kZXggd2l0aCBudWxsIG5h
bWUKIEZhaWxlZCB0byBjcmVhdGUgaW5kZXggd2l0aCBpbnZhbGlkIGtleSBwYXRoCkBAIC05LDUg
KzEzLDcgQEAgRmFpbGVkIHRvIGNyZWF0ZSBpbmRleCB3aGlsZSB0aGUgdHJhbnNhY3Rpb24gaXMg
aW5hY3RpdmUKIEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBs
ZXRlCiBGYWlsZWQgdG8gY3JlYXRlIGluZGV4IG91dHNpZGUgb2YgYSB2ZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbgogcmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUKLURvbmUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlLWluZGV4LWZhaWx1cmVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlLWluZGV4
LWZhaWx1cmVzLmh0bWwKaW5kZXggMTk0MmFjMy4uYzYwMzA0OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZS1pbmRleC1mYWlsdXJlcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgt
ZmFpbHVyZXMuaHRtbApAQCAtMSwxMzAgKzEsMTAgQEAKLVRoaXMgdGVzdHMgc29tZSBvYnZpb3Vz
IGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQk9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCkuPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAg
ICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJ
REJPYmplY3RTdG9yZUNyZWF0ZUluZGV4RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwotdmFyIGRhdGFi
YXNlOwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVu
dC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQot
ICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwot
ICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUg
PSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0KLSAgICB0
cnkgewotICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChudWxsLCAiZm9vIik7Ci0gICAg
fSBjYXRjaChlKSB7Ci0gICAgICAgIGxvZygiRmFpbGVkIHRvIGNyZWF0ZSBpbmRleCB3aXRoIG51
bGwgbmFtZSIpOwotICAgIH0KLSAgICAKLSAgICB0cnkgewotICAgICAgICBvYmplY3RTdG9yZS5j
cmVhdGVJbmRleCgiVGVzdEluZGV4MSIsIG51bGwpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkZhaWxlZCB0byBjcmVhdGUgaW5kZXggd2l0aCBpbnZhbGlkIGtleSBwYXRoIik7Ci0g
ICAgfQotICAgIAotICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKLSAgICB0cnkgewotICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdElu
ZGV4MiIsICJmb28iKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJGYWlsZWQgdG8g
Y3JlYXRlIGluZGV4IG9uIGEgZGVsZXRlZCBvYmplY3Qgc3RvcmUiKTsKLSAgICB9Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUi
KTsKLSAgICAKLSAgICB0cnkgewotICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVz
dEluZGV4MyIsIFsiZm9vIiwgImJhciJdLCB7IG11bHRpRW50cnk6IHRydWUgfSk7Ci0gICAgfSBj
YXRjaChlKSB7Ci0gICAgICAgIGxvZygiRmFpbGVkIHRvIGNyZWF0ZSBtdWx0aS1lbnRyeSBpbmRl
eCB3aXRoIGFuIGFycmF5IGtleSBwYXRoIik7Ci0gICAgfQotICAgIAotICAgIG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCJUZXN0SW5kZXg0IiwgImZvbyIpOwotICAgIHRyeSB7Ci0gICAgICAgIG9i
amVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXg0IiwgImZvbyIpOwotICAgIH0gY2F0Y2go
ZSkgewotICAgICAgICBsb2coIkZhaWxlZCB0byBjcmVhdGUgaW5kZXggdGhhdCBhbHJlYWR5IGV4
aXN0cyIpOwotICAgIH0KLQotICAgIC8vIFNwaW4gdGhlIHRyYW5zYWN0aW9uIHdpdGggZ2V0IHJl
cXVlc3RzIHRvIGtlZXAgaXQgYWxpdmUgbG9uZyBlbm91Z2ggZm9yIHRoZSBzZXRUaW1lb3V0IHRv
IGZpcmUuCi0gICAgdmFyIGNhbkZpbmlzaCA9IGZhbHNlOwotICAgIHZhciBzcGluR2V0ID0gZnVu
Y3Rpb24oKSB7IAotICAgICAgICBvYmplY3RTdG9yZS5nZXQoImZvbyIpLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKCFjYW5GaW5pc2gpCi0gICAgICAgICAgICAgICAg
c3BpbkdldCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNwaW5HZXQoKTsKLQotICAgIHZhciBj
cmVhdGVXaGlsZUluYWN0aXZlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NSIsICJmb28iKTsKLSAgICAg
ICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBsb2coIkZhaWxlZCB0byBjcmVhdGUgaW5kZXgg
d2hpbGUgdGhlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlIik7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FuRmluaXNoID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgc2V0VGltZW91dChjcmVhdGVXaGls
ZUluYWN0aXZlLCAwKTsKLSAgICAKLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAg
ICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gY29tcGxldGUiKTsKLSAgICAgICAgY29udGludWVUZXN0MSgpOwotICAgIH0KLQotICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9n
KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVy
cm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29u
dGludWVUZXN0MSgpCi17Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rp
b24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKLSAgICB2YXIgb2JqZWN0U3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0KLSAgICB0cnkg
ewotICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NiIsICJmb28iKTsK
LSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJGYWlsZWQgdG8gY3JlYXRlIGluZGV4IG91
dHNpZGUgb2YgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiIpOwotICAgIH0KLSAgICAgICAg
Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxv
ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIgKyBldmVudCk7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBl
Y3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLTwvc2Ny
aXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVh
dGUtaW5kZXgtZmFpbHVyZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0
b3JlLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9jcmVhdGVvYmplY3RzdG9yZS1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggMzljZmQwNS4u
NDRmM2UxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2NyZWF0ZW9iamVjdHN0b3JlLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlb2JqZWN0c3RvcmUtYmFzaWMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsOCBAQAorVGhpcyB0ZXN0IHN0YXJ0cyBzb21lIHZlcnNpb24gY2hhbmdl
IHRyYW5zYWN0aW9ucywgY3JlYXRlcyBzb21lIG9iamVjdCBzdG9yZXMsIGFuZCB2YXJpYWJseSBj
b21taXRzIG9yIGFib3J0cyB0aGUgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb25zLiBBdCB2YXJp
b3VzIHN0YWdlcyBpdCB2ZXJpZmllcyB0aGUgb2JqZWN0IHN0b3JlcyBpbiB0aGUgZGF0YWJhc2Ug
YXJlIGFzLWV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6
IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEK
IEFMRVJUOiBPYmplY3Qgc3RvcmUgbmFtZXM6CiBBTEVSVDogRmlyc3RBYm9ydGVkT2JqZWN0U3Rv
cmUKQEAgLTIxLDcgKzI2LDcgQEAgQUxFUlQ6IEZvdXJ0aCB1cGdyYWRlIG5lZWRlZDogT2xkIHZl
cnNpb24gLSAyIE5ldyB2ZXJzaW9uIC0gMwogQUxFUlQ6IE9iamVjdCBzdG9yZSBuYW1lczoKIEFM
RVJUOiBGaXJzdENvbW1pdHRlZE9iamVjdFN0b3JlCiBBTEVSVDogU2Vjb25kQ29tbWl0dGVkT2Jq
ZWN0U3RvcmUKLUFMRVJUOiBEb25lCi1UaGlzIHRlc3Qgc3RhcnRzIHNvbWUgdmVyc2lvbiBjaGFu
Z2UgdHJhbnNhY3Rpb25zLCBjcmVhdGVzIHNvbWUgb2JqZWN0IHN0b3JlcywgYW5kIHZhcmlhYmx5
IGNvbW1pdHMgb3IgYWJvcnRzIHRoZSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbnMuCi1BdCB2
YXJpb3VzIHN0YWdlcyBpdCB2ZXJpZmllcyB0aGUgb2JqZWN0IHN0b3JlcyBpbiB0aGUgZGF0YWJh
c2UgYXJlIGFzLWV4cGVjdGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9jcmVhdGVvYmplY3RzdG9yZS1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWJhc2ljLmh0bWwKaW5kZXggMTBl
ZjFiOS4uMDNjYTliYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWJhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWJhc2ljLmh0bWwKQEAgLTEs
MTM4ICsxLDkgQEAKLVRoaXMgdGVzdCBzdGFydHMgc29tZSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbnMsIGNyZWF0ZXMgc29tZSBvYmplY3Qgc3RvcmVzLCBhbmQgdmFyaWFibHkgY29tbWl0cyBv
ciBhYm9ydHMgdGhlIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9ucy48YnI+Ci1BdCB2YXJpb3Vz
IHN0YWdlcyBpdCB2ZXJpZmllcyB0aGUgb2JqZWN0IHN0b3JlcyBpbiB0aGUgZGF0YWJhc2UgYXJl
IGFzLWV4cGVjdGVkLjxicj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19
Ci0KLWZ1bmN0aW9uIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpIHsKLSAgICB2YXIgbGlzdCA9
IGRhdGFiYXNlLm9iamVjdFN0b3JlTmFtZXM7Ci0gICAgYWxlcnQoIk9iamVjdCBzdG9yZSBuYW1l
czoiKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHsgCi0gICAg
ICAgIGFsZXJ0KGxpc3RbaV0pOwotICAgIH0KLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5k
b3cuaW5kZXhlZERCLm9wZW4oIkNyZWF0ZU9iamVjdFN0b3JlVGVzdERhdGFiYXNlIiwgMSk7Ci0K
LWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBh
bGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xk
VmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAgICB2
YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICB2
YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIHZhciBvYmplY3RTdG9yZSA9
IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJGaXJzdEFib3J0ZWRPYmplY3RTdG9yZSIpOwot
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJmb28iLCAiYmFyIik7Ci0KLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJQdXQg
c3VjY2VlZGVkIik7Ci0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5hYm9ydCgpOwotICAgIH0K
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgi
UHV0IGZhaWxlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgCi0g
ICAgZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7ICAgIAotICAgIAotICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICAgICAg
ZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7Ci0gICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKLSAg
ICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvciAiICsgZXZlbnQpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gY29udGludWVUZXN0MSgpCi17Ci0gICAgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVk
REIub3BlbigiQ3JlYXRlT2JqZWN0U3RvcmVUZXN0RGF0YWJhc2UiLCAxKTsKLQotICAgIGNyZWF0
ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIlNlY29uZCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVy
c2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAgICAgICAg
dmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAg
ICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGR1bXBPYmpl
Y3RTdG9yZXMoZGF0YWJhc2UpOwotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5j
cmVhdGVPYmplY3RTdG9yZSgiRmlyc3RDb21taXR0ZWRPYmplY3RTdG9yZSIpOwotCi0gICAgICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
ICAgIGFsZXJ0KCJTZWNvbmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgYWJvcnQiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgICAgIGFsZXJ0KCJTZWNvbmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIik7Ci0gICAgICAgICAgICBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKLSAgICAgICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiU2Vjb25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MigpCi17
Ci0gICAgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQ3JlYXRlT2JqZWN0
U3RvcmVUZXN0RGF0YWJhc2UiLCAyKTsKLQotICAgIGNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlRoaXJkIHVwZ3JhZGUgbmVl
ZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAt
ICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9u
ID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3Jl
YXRlT2JqZWN0U3RvcmUoIlNlY29uZENvbW1pdHRlZE9iamVjdFN0b3JlIik7Ci0KLSAgICAgICAg
ZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7ICAgIAotICAgIAotICAgICAgICB2ZXJzaW9uVHJh
bnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgi
VGhpcmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQi
KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0
KCJUaGlyZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAg
ICAgICAgICAgIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpOwotICAgICAgICAgICAgZGF0YWJh
c2UuY2xvc2UoKTsgCi0gICAgICAgICAgICBjb250aW51ZVRlc3QzKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBhbGVydCgiVGhpcmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QzKCkKLXsKLSAgICBjcmVhdGVS
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJDcmVhdGVPYmplY3RTdG9yZVRlc3REYXRh
YmFzZSIsIDMpOwotCi0gICAgY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBhbGVydCgiRm91cnRoIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVy
c2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5u
ZXdWZXJzaW9uKTsKLSAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICAgICAgZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7Ci0gICAgICAgIGRvbmUoKTsKLSAg
ICB9Ci19Ci0KLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZW9iamVjdHN0b3JlLWJh
c2ljLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGVvYmplY3RzdG9yZS1mYWlsdXJlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRl
b2JqZWN0c3RvcmUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CmluZGV4IDEzODZiMTguLjhlODhhYTQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGVv
YmplY3RzdG9yZS1mYWlsdXJlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4
dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBleGVyY2lzZXMgdGhlIG9idmlvdXMgd2F5cyB0
aGF0IElEQkRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlIGNhbiBmYWlsLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2
ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIEFMRVJUOiBGYWlsZWQgdG8gY3JlYXRlIG9iamVj
dCBzdG9yZSB3aXRoIGJvdGggYXV0b2luY3JlbWVudCBhbmQgYW4gZW1wdHkga2V5cGF0aDogRXJy
b3I6IEZhaWxlZCB0byBleGVjdXRlICdjcmVhdGVPYmplY3RTdG9yZScgb24gJ0lEQkRhdGFiYXNl
JzogVGhlIGF1dG9JbmNyZW1lbnQgb3B0aW9uIHdhcyBzZXQgYnV0IHRoZSBrZXlQYXRoIG9wdGlv
biB3YXMgZW1wdHkgb3IgYW4gYXJyYXkuCiBBTEVSVDogT2JqZWN0IHN0b3JlIG5hbWVzOgpAQCAt
MjAsNSArMjUsNyBAQCBBTEVSVDogVGVzdE9iamVjdFN0b3JlMQogQUxFUlQ6IEZhaWxlZCB0byBj
cmVhdGUgb2JqZWN0IHN0b3JlIG91dHNpZGUgb2Ygb251cGdyYWRlbmVlZGVkOiBFcnJvcjogRmFp
bGVkIHRvIGV4ZWN1dGUgJ2NyZWF0ZU9iamVjdFN0b3JlJyBvbiAnSURCRGF0YWJhc2UnOiBUaGUg
ZGF0YWJhc2UgaXMgbm90IHJ1bm5pbmcgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4KIEFM
RVJUOiBPYmplY3Qgc3RvcmUgbmFtZXM6CiBBTEVSVDogVGVzdE9iamVjdFN0b3JlMQotQUxFUlQ6
IERvbmUKLVRoaXMgdGVzdCBleGVyY2lzZXMgdGhlIG9idmlvdXMgd2F5cyB0aGF0IElEQkRhdGFi
YXNlLmNyZWF0ZU9iamVjdFN0b3JlIGNhbiBmYWlsLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGVvYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWZhaWx1
cmVzLmh0bWwKaW5kZXggY2JhYjY5MC4uN2QwMWUyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0
b3JlLWZhaWx1cmVzLmh0bWwKQEAgLTEsMTAzICsxLDkgQEAKLVRoaXMgdGVzdCBleGVyY2lzZXMg
dGhlIG9idmlvdXMgd2F5cyB0aGF0IElEQkRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlIGNhbiBm
YWlsLgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1
bmN0aW9uIGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24g
ZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSkgewotICAgIHZhciBsaXN0ID0gZGF0YWJhc2Uub2Jq
ZWN0U3RvcmVOYW1lczsKLSAgICBhbGVydCgiT2JqZWN0IHN0b3JlIG5hbWVzOiIpOwotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkgeyAKLSAgICAgICAgYWxlcnQobGlz
dFtpXSk7Ci0gICAgfQotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIu
b3BlbigiQ3JlYXRlT2JqZWN0U3RvcmVGYWlsdXJlc1Rlc3REYXRhYmFzZSIsIDEpOwotdmFyIGRh
dGFiYXNlOwotdmFyIHZlcnNpb25UcmFuc2FjdGlvbjsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lv
biAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNy
ZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVz
dWx0OwotCi0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3Jl
YXRlT2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSAs
IGtleVBhdGg6ICIiIH0pOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYWxlcnQoIkZhaWxl
ZCB0byBjcmVhdGUgb2JqZWN0IHN0b3JlIHdpdGggYm90aCBhdXRvaW5jcmVtZW50IGFuZCBhbiBl
bXB0eSBrZXlwYXRoOiAiICsgZSk7Ci0gICAgICAgIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2Up
OwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNl
LmNyZWF0ZU9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnLCB7IGF1dG9JbmNyZW1lbnQ6IHRy
dWUgLCBrZXlQYXRoOiBbJ2ZvbyddIH0pOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYWxl
cnQoIkZhaWxlZCB0byBjcmVhdGUgb2JqZWN0IHN0b3JlIHdpdGggYm90aCBhdXRvaW5jcmVtZW50
IGFuZCBhIHNlcXVlbmNlIGtleXBhdGg6ICIgKyBlKTsKLSAgICAgICAgZHVtcE9iamVjdFN0b3Jl
cyhkYXRhYmFzZSk7Ci0gICAgfQotICAgIAotICAgIHRyeSB7Ci0gICAgICAgIHZhciBvYmplY3RT
dG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnLCB7IGtl
eVBhdGg6ICInZm9vIGJhcicifSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhbGVydCgi
RmFpbGVkIHRvIGNyZWF0ZSBvYmplY3Qgc3RvcmUgd2l0aCBpbnZhbGlkIGtleVBhdGg6ICIgKyBl
KTsKLSAgICAgICAgZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7Ci0gICAgfQotCi0gICAgZGF0
YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTEiKTsKLSAgICBhbGVydCgi
QWN0dWFsbHkgY3JlYXRlZCBhbiBvYmplY3Qgc3RvcmUiKTsKLSAgICBkdW1wT2JqZWN0U3RvcmVz
KGRhdGFiYXNlKTsKLSAgICAKLSAgICB0cnkgewotICAgICAgICBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMSIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBh
bGVydCgiRmFpbGVkIHRvIGNyZWF0ZSBUZXN0T2JqZWN0U3RvcmUgYSBzZWNvbmQgdGltZTogIiAr
IGUpOwotICAgICAgICBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKTsKLSAgICB9Ci0KLSAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFs
ZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB1bmV4cGVjdGVkIGFib3J0Iik7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBkdW1wT2JqZWN0U3Rv
cmVzKGRhdGFiYXNlKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgZGF0YWJhc2UuY3Jl
YXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTIiKTsKLSAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNyZWF0ZSBvYmplY3Qgc3RvcmUgd2hpbGUg
dGhlcmUgaXMgbm8gdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb246ICIgKyBlKTsKLSAgICAgICAg
ICAgIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpOwotICAgICAgICB9Ci0gICAgCi0gICAgICAg
IHNldFRpbWVvdXQoZmluaXNoVXAsIDApOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmaW5pc2hVcCgpCi17Ci0g
ICAgdHJ5IHsKLSAgICAgICAgZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZTk5Iik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gY3Jl
YXRlIG9iamVjdCBzdG9yZSBvdXRzaWRlIG9mIG9udXBncmFkZW5lZWRlZDogIiArIGUpOwotICAg
ICAgICBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKTsKLSAgICB9Ci0gICAgCi0gICAgZG9uZSgp
OwotfQotCi08L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVvYmplY3RzdG9yZS1mYWls
dXJlcy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLWV4cGVjdGVkLnR4dApp
bmRleCBkYjE4Y2QzLi5mOTM4YWExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw4
IEBACiBUaGlzIHRlc3RzIGJhc2ljIElEQkN1cnNvciBmdW5jdGlvbmFsaXR5CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCiBTdWNjZXNzIG9wZW5pbmcgY3Vyc29yCiBDdXJzb3IgaXM6
IFtvYmplY3QgSURCQ3Vyc29yV2l0aFZhbHVlXQpAQCAtNzMsNSArNzcsNyBAQCBDdXJzb3Igc291
cmNlIGlzOiBbb2JqZWN0IElEQkluZGV4XSAoVGVzdEluZGV4MSkKIEN1cnNvciBrZXkgaXM6IEhl
bGxvCiBDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IGZvbwogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMS5odG1sCmluZGV4IDU4ZDQ2M2IwLi41MWM2MDJlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEu
aHRtbApAQCAtMSw5NSArMSwxMCBAQAotVGhpcyB0ZXN0cyBiYXNpYyBJREJDdXJzb3IgZnVuY3Rp
b25hbGl0eTxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9n
KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4i
OwotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQ3Vyc29y
MURhdGFiYXNlIiwgMSk7Ci0KLWZ1bmN0aW9uIGxvZ0N1cnNvcihjdXJzb3IpCi17Ci0gICAgbG9n
KCJDdXJzb3IgaXM6ICIgKyBjdXJzb3IpOwotICAgIGxvZygiQ3Vyc29yIGRpcmVjdGlvbiBpczog
IiArIGN1cnNvci5kaXJlY3Rpb24pOwotICAgIGxvZygiQ3Vyc29yIHNvdXJjZSBpczogIiArIGN1
cnNvci5zb3VyY2UgKyAiICgiICsgY3Vyc29yLnNvdXJjZS5uYW1lICsgIikiKTsgICAgCi0gICAg
bG9nKCJDdXJzb3Iga2V5IGlzOiAiICsgY3Vyc29yLmtleSk7ICAgIAotICAgIGxvZygiQ3Vyc29y
IHByaW1hcnkga2V5IGlzOiAiICsgY3Vyc29yLnByaW1hcnlLZXkpOyAgICAKLX0KLQotZnVuY3Rp
b24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QpCi17Ci0gICAgLy8gRklYTUU6IFJpZ2h0IG5vdyAodW50
aWwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTE5NiBpcyByZXNv
bHZlZCkgd2hhdCBzaG91bGQgYmUgc3VjY2Vzc2Z1bCBjdXJzb3Igb3BlcmF0aW9ucyB3aWxsIGFj
dHVhbGx5IGFsd2F5cyBmYWlsLgotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGxvZygiU3VjY2VzcyBvcGVuaW5nIGN1cnNvciIpOwotICAgICAgICBsb2dDdXJz
b3IocmVxdWVzdC5yZXN1bHQpOyAgCi0gICAgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgbG9nKCJFcnJvciBvcGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9y
IG5vdykiKTsKLSAgICAgICAgbG9nQ3Vyc29yKHJlcXVlc3QucmVzdWx0KTsKLSAgICAgICAgZS5z
dG9wUHJvcGFnYXRpb24oKTsKLSAgICB9IAotfQotCi12YXIgb2JqZWN0U3RvcmU7Ci12YXIgaW5k
ZXg7Ci0KLWZ1bmN0aW9uIHRlc3RDdXJzb3JEaXJlY3Rpb24oZGlyZWN0aW9uKQotewotICAgIHZh
ciByYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoLUluZmluaXR5KTsKLSAgICB2YXIgcmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7Ci0gICAgc2V0
dXBSZXF1ZXN0KHJlcXVlc3QpOwotICAgIHJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKHJhbmdl
LCBkaXJlY3Rpb24pOwotICAgIHNldHVwUmVxdWVzdChyZXF1ZXN0KTsKLSAgICByZXF1ZXN0ID0g
aW5kZXgub3BlbktleUN1cnNvcihyYW5nZSwgZGlyZWN0aW9uKTsKLSAgICBzZXR1cFJlcXVlc3Qo
cmVxdWVzdCk7Ci19Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNp
b24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNh
Y3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBvYmpl
Y3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsK
LSAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgxIiwgImJhciIp
OwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIG9iamVjdFN0
b3JlLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKLSAgICB9Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsg
YmFyOiAiSGVsbG8iIH0sICJmb28iKTsKLQotICAgIHRlc3RDdXJzb3JEaXJlY3Rpb24oIm5leHQi
KTsKLSAgICB0ZXN0Q3Vyc29yRGlyZWN0aW9uKCJuZXh0dW5pcXVlIik7Ci0gICAgdGVzdEN1cnNv
ckRpcmVjdGlvbigicHJldiIpOwotICAgIHRlc3RDdXJzb3JEaXJlY3Rpb24oInByZXZ1bmlxdWUi
KTsKLSAgICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLTEuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2N1cnNvci0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9jdXJzb3ItMi1leHBlY3RlZC50eHQKaW5kZXggMmVhNDZkZC4uOThjZjU3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0yLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vy
c29yLTItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsOCBAQAogVGhpcyB0ZXN0IGNoZWNrcyBiYXNp
YyBmdW5jdGlvbmFsaXR5IHdhbGtpbmcgYSAibmV4dCIgYW5kICJwcmV2IiBjdXJzb3Igb24gYW4g
b2JqZWN0IHN0b3JlIHdpdGggc29tZSByZWNvcmRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJz
aW9uIC0gMQogU3VjY2VzcyBpdGVyYXRpbmcgbmV4dCBjdXJzb3IKIEN1cnNvciBpczogW29iamVj
dCBJREJDdXJzb3JXaXRoVmFsdWVdCkBAIC0xNTUsNSArMTU5LDcgQEAgQ3Vyc29yIGtleSBpczog
MAogQ3Vyc29yIHZhbHVlIGlzOiBSZWNvcmQgMAogQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAwCiBJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotRG9uZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMi5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0yLmh0bWwKaW5k
ZXggNGIwYWZmYi4uZTIxNGJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2N1cnNvci0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2N1cnNvci0yLmh0bWwKQEAgLTEsODggKzEsMTAgQEAKLVRoaXMgdGVzdCBj
aGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSB3YWxraW5nIGEgIm5leHQiIGFuZCAicHJldiIgY3Vy
c29yIG9uIGFuIG9iamVjdCBzdG9yZSB3aXRoIHNvbWUgcmVjb3Jkcy48YnI+Ci08ZGl2IGlkPSJs
b2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dn
ZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFyIGNyZWF0ZVJlcXVl
c3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkN1cnNvcjJEYXRhYmFzZSIsIDEpOwotCi1mdW5j
dGlvbiBsb2dDdXJzb3IoY3Vyc29yKQotewotICAgIGxvZygiQ3Vyc29yIGlzOiAiICsgY3Vyc29y
KTsKLSAgICBsb2coIkN1cnNvciBkaXJlY3Rpb24gaXM6ICIgKyBjdXJzb3IuZGlyZWN0aW9uKTsK
LSAgICBsb2coIkN1cnNvciBzb3VyY2UgaXM6ICIgKyBjdXJzb3Iuc291cmNlICsgIiAoIiArIGN1
cnNvci5zb3VyY2UubmFtZSArICIpIik7ICAgIAotICAgIGxvZygiQ3Vyc29yIGtleSBpczogIiAr
IGN1cnNvci5rZXkpOyAgICAKLSAgICBsb2coIkN1cnNvciB2YWx1ZSBpczogIiArIGN1cnNvci52
YWx1ZSk7ICAgIAotICAgIGxvZygiQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAiICsgY3Vyc29yLnBy
aW1hcnlLZXkpOyAgICAKLX0KLQotdmFyIG9iamVjdFN0b3JlOwotdmFyIHNob3VsZFN0YXJ0UHJl
dmlvdXMgPSB0cnVlOwotZnVuY3Rpb24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QpCi17Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCFyZXF1ZXN0LnJlc3Vs
dCkgewotICAgICAgICAgICAgaWYgKHNob3VsZFN0YXJ0UHJldmlvdXMpIHsKLSAgICAgICAgICAg
ICAgICBzZXR1cFJlcXVlc3Qob2JqZWN0U3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dl
ckJvdW5kKC1JbmZpbml0eSksICJwcmV2IikpOwotICAgICAgICAgICAgICAgIHNob3VsZFN0YXJ0
UHJldmlvdXMgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGxvZygiU3VjY2VzcyBpdGVyYXRpbmcgIiArIHJlcXVlc3QucmVz
dWx0LmRpcmVjdGlvbiArICIgY3Vyc29yIik7Ci0gICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJl
c3VsdCk7Ci0gICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7Ci0gICAgfQotCi0gICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICBsb2coIkVycm9yIGl0ZXJh
dGluZyBjdXJzb3IiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0gCi19Ci0KLWNyZWF0ZVJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwg
dXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5l
dyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFu
c2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9i
amVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkgewotICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7Ci0g
ICAgfQotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkhlbGxvIiB9LCAiZm9vIik7Ci0gICAg
Ci0gICAgc2V0dXBSZXF1ZXN0KG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKSk7Ci0gICAgICAKLSAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAg
IGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3Rl
ZCBhYm9ydGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAg
ZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2N1cnNvci0yLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29y
LTMtZXhwZWN0ZWQudHh0CmluZGV4IDI3YjgyYzYuLjU1MDBmYzUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0zLWV4cGVjdGVk
LnR4dApAQCAtMSw0ICsxLDggQEAKLVRoaXMgdGVzdCB2YXJpb3VzIHVzZXMgb2YgYWR2YW5jZSgp
IGFuZCBjb250aW51ZSgpIG9uIGEgIm5leHQiIGN1cnNvciIuCitUaGlzIHRlc3QgdmFyaW91cyB1
c2VzIG9mIGFkdmFuY2UoKSBhbmQgY29udGludWUoKSBvbiBhICJuZXh0IiBjdXJzb3IuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBTdWNjZXNzIGl0ZXJhdGluZyBjdXJzb3IKIEN1
cnNvciBpczogW29iamVjdCBJREJDdXJzb3JXaXRoVmFsdWVdCkBAIC03MSw1ICs3NSw3IEBAIEN1
cnNvciBrZXkgaXM6IDkKIEN1cnNvciB2YWx1ZSBpczogUmVjb3JkIDkKIEN1cnNvciBwcmltYXJ5
IGtleSBpczogOQogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29t
cGxldGUKLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
Y3Vyc29yLTMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJz
b3ItMy5odG1sCmluZGV4IGIyNWU1YTYuLjJhNzY5MWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMy5odG1sCkBAIC0xLDk4ICsxLDEwIEBA
Ci1UaGlzIHRlc3QgdmFyaW91cyB1c2VzIG9mIGFkdmFuY2UoKSBhbmQgY29udGludWUoKSBvbiBh
ICJuZXh0IiBjdXJzb3IiLjxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0Pgot
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17
Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0g
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdl
ICsgIjxicj4iOwotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Bl
bigiQ3Vyc29yM0RhdGFiYXNlIiwgMSk7Ci0KLWZ1bmN0aW9uIGxvZ0N1cnNvcihjdXJzb3IpCi17
Ci0gICAgbG9nKCJDdXJzb3IgaXM6ICIgKyBjdXJzb3IpOwotICAgIGxvZygiQ3Vyc29yIGRpcmVj
dGlvbiBpczogIiArIGN1cnNvci5kaXJlY3Rpb24pOwotICAgIGxvZygiQ3Vyc29yIHNvdXJjZSBp
czogIiArIGN1cnNvci5zb3VyY2UgKyAiICgiICsgY3Vyc29yLnNvdXJjZS5uYW1lICsgIikiKTsg
ICAgCi0gICAgbG9nKCJDdXJzb3Iga2V5IGlzOiAiICsgY3Vyc29yLmtleSk7ICAgIAotICAgIGxv
ZygiQ3Vyc29yIHZhbHVlIGlzOiAiICsgY3Vyc29yLnZhbHVlKTsgICAgCi0gICAgbG9nKCJDdXJz
b3IgcHJpbWFyeSBrZXkgaXM6ICIgKyBjdXJzb3IucHJpbWFyeUtleSk7ICAgIAotfQotCi12YXIg
b2JqZWN0U3RvcmU7Ci0KLWZ1bmN0aW9uIHNldHVwUmVxdWVzdDEocmVxdWVzdCkKLXsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoIXJlcXVlc3QucmVz
dWx0KSB7Ci0gICAgICAgICAgICBzZXR1cFJlcXVlc3QyKG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbG9nKCJTdWNjZXNz
IGl0ZXJhdGluZyBjdXJzb3IiKTsKLSAgICAgICAgbG9nQ3Vyc29yKHJlcXVlc3QucmVzdWx0KTsK
LSAgICAgICAgcmVxdWVzdC5yZXN1bHQuY29udGludWUocmVxdWVzdC5yZXN1bHQua2V5ICsgMik7
Ci0gICAgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgbG9n
KCJFcnJvciBpdGVyYXRpbmcgY3Vyc29yIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9IAotfQot
Ci1mdW5jdGlvbiBzZXR1cFJlcXVlc3QyKHJlcXVlc3QpCi17Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCFyZXF1ZXN0LnJlc3VsdCkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbG9nKCJTdWNjZXNzIGl0ZXJhdGluZyBjdXJzb3IiKTsKLSAg
ICAgICAgbG9nQ3Vyc29yKHJlcXVlc3QucmVzdWx0KTsKLSAgICAgICAgcmVxdWVzdC5yZXN1bHQu
YWR2YW5jZSgzKTsgICAgICAgIAotICAgIH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bihlKSB7Ci0gICAgICAgIGxvZygiRXJyb3IgaXRlcmF0aW5nIGN1cnNvciIpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfSAKLX0KLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5j
dGlvbihldmVudCkgewotICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50
cmFuc2FjdGlvbjsKLSAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAg
IG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIG9iamVj
dFN0b3JlLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKLSAgICB9Ci0gICAgb2JqZWN0U3RvcmUucHV0
KHsgYmFyOiAiSGVsbG8iIH0sICJmb28iKTsKLSAgICAKLSAgICBzZXR1cFJlcXVlc3QxKG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKSk7Ci0gICAgICAKLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAgICAgIGRv
bmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9n
KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVy
cm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci0zLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTQtZXhwZWN0ZWQudHh0CmluZGV4IDg1
ODk1MjguLjdlYWQ5MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9jdXJzb3ItNC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2N1cnNvci00LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKLVRo
aXMgdGVzdCB2YXJpb3VzIHVzZXMgb2YgYWR2YW5jZSgpIGFuZCBjb250aW51ZSgpIG9uIGEgInBy
ZXYiIGN1cnNvciIuCitUaGlzIHRlc3QgdmFyaW91cyB1c2VzIG9mIGFkdmFuY2UoKSBhbmQgY29u
dGludWUoKSBvbiBhICJwcmV2IiBjdXJzb3IuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24g
LSAxCiBTdWNjZXNzIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBpczogW29iamVjdCBJREJDdXJz
b3JXaXRoVmFsdWVdCkBAIC02NCw1ICs2OCw3IEBAIEN1cnNvciBrZXkgaXM6IDAKIEN1cnNvciB2
YWx1ZSBpczogUmVjb3JkIDAKIEN1cnNvciBwcmltYXJ5IGtleSBpczogMAogSW5pdGlhbCB1cGdy
YWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKLURvbmUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTQuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNC5odG1sCmluZGV4IDM4MDk5MjIu
LmUzM2FlMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9jdXJzb3ItNC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9jdXJzb3ItNC5odG1sCkBAIC0xLDk3ICsxLDEwIEBACi1UaGlzIHRlc3QgdmFyaW91cyB1c2Vz
IG9mIGFkdmFuY2UoKSBhbmQgY29udGludWUoKSBvbiBhICJwcmV2IiBjdXJzb3IiLjxicj4KLTxk
aXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgY3Jl
YXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQ3Vyc29yNERhdGFiYXNlIiwgMSk7
Ci0KLWZ1bmN0aW9uIGxvZ0N1cnNvcihjdXJzb3IpCi17Ci0gICAgbG9nKCJDdXJzb3IgaXM6ICIg
KyBjdXJzb3IpOwotICAgIGxvZygiQ3Vyc29yIGRpcmVjdGlvbiBpczogIiArIGN1cnNvci5kaXJl
Y3Rpb24pOwotICAgIGxvZygiQ3Vyc29yIHNvdXJjZSBpczogIiArIGN1cnNvci5zb3VyY2UgKyAi
ICgiICsgY3Vyc29yLnNvdXJjZS5uYW1lICsgIikiKTsgICAgCi0gICAgbG9nKCJDdXJzb3Iga2V5
IGlzOiAiICsgY3Vyc29yLmtleSk7ICAgIAotICAgIGxvZygiQ3Vyc29yIHZhbHVlIGlzOiAiICsg
Y3Vyc29yLnZhbHVlKTsgICAgCi0gICAgbG9nKCJDdXJzb3IgcHJpbWFyeSBrZXkgaXM6ICIgKyBj
dXJzb3IucHJpbWFyeUtleSk7ICAgIAotfQotCi12YXIgb2JqZWN0U3RvcmU7Ci0KLWZ1bmN0aW9u
IHNldHVwUmVxdWVzdDEocmVxdWVzdCkKLXsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAoIXJlcXVlc3QucmVzdWx0KSB7Ci0gICAgICAgICAgICBzZXR1
cFJlcXVlc3QyKG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgt
SW5maW5pdHkpLCAicHJldiIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBsb2coIlN1Y2Nlc3MgaXRlcmF0aW5nIGN1cnNvciIpOwotICAgICAgICBsb2dDdXJzb3Io
cmVxdWVzdC5yZXN1bHQpOwotICAgICAgICByZXF1ZXN0LnJlc3VsdC5jb250aW51ZShyZXF1ZXN0
LnJlc3VsdC5rZXkgLSAyKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICBsb2coIkVycm9yIGl0ZXJhdGluZyBjdXJzb3IiKTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0gCi19Ci0KLWZ1bmN0aW9uIHNldHVwUmVxdWVzdDIocmVxdWVzdCkKLXsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoIXJlcXVlc3Qu
cmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBsb2coIlN1Y2Nlc3MgaXRlcmF0
aW5nIGN1cnNvciIpOwotICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOwotICAgICAg
ICByZXF1ZXN0LnJlc3VsdC5hZHZhbmNlKDMpOyAgICAgICAgCi0gICAgfQotICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgbG9nKCJFcnJvciBpdGVyYXRpbmcgY3Vy
c29yIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9IAotfQotCi1jcmVhdGVSZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lv
biAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24g
PSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Ci0gICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kp
IHsKLSAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQgIiArIGksIGkpOwotICAgIH0KLSAg
ICAgICAgCi0gICAgc2V0dXBSZXF1ZXN0MShvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLmxvd2VyQm91bmQoLUluZmluaXR5KSwgInByZXYiKSk7Ci0gICAgICAKLSAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5p
dGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVk
Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0K
LQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2N1cnNvci00LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTUtZXhwZWN0
ZWQudHh0CmluZGV4IDE0YTIyZjYuLjg5ZWZkM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci01LWV4cGVjdGVkLnR4dApAQCAt
MSw5ICsxLDE1IEBACiBUaGlzIHRlc3RzIGl0ZXJhdGluZyBhICJuZXh0IiBjdXJzb3IgaW4gYSBy
ZWFkLXdyaXRlIHRyYW5zYWN0aW9uIHdoaWxlIGNoYW5naW5nIHJlY29yZHMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCiBDdXJzb3Igb3BlbiBhdCBrZXkgMAogUmVjb3JkIDAgZGVs
ZXRlZCwgZXZlbiB0aG91Z2ggdGhhdCdzIHdoZXJlIHRoZSBjdXJzb3IgY3VycmVudGx5IHBvaW50
cy4KIEN1cnNvciBpdGVyYXRlZCB0byBrZXkgMQogQ3Vyc29yIGl0ZXJhdGVkIHRvIGtleSAyIHdp
dGggdmFsdWUgJ1NjYXJ5IG5ldyBhY3R1YWwgcmVjb3JkIScKIEluaXRpYWwgdXBncmFkZSB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci01Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTUuaHRtbAppbmRleCA4MTkyYzBmLi4wNmExMTZj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29y
LTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29y
LTUuaHRtbApAQCAtMSw3NyArMSwxMCBAQAotVGhpcyB0ZXN0cyBpdGVyYXRpbmcgYSAibmV4dCIg
Y3Vyc29yIGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiB3aGlsZSBjaGFuZ2luZyByZWNvcmRz
Ljxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25l
Iik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQot
Ci12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQ3Vyc29yNURhdGFi
YXNlIiwgMSk7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rp
b247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7
Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKLSAgICAgICAgb2JqZWN0U3RvcmUu
cHV0KCJSZWNvcmQgIiArIGksIGkpOwotICAgIAotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcigpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGxvZygiQ3Vyc29yIG9wZW4gYXQga2V5ICIgKyByZXF1ZXN0LnJlc3VsdC5rZXkpOwot
Ci0gICAgICAgIC8vIFRoaXMgdGVzdHMgZGVsZXRpbmcgdGhlIGN1cnJlbnQgcmVjb3JkIG91dCBv
ZiB1bmRlcm5lYXRoIHRoZSBjdXJzb3IuCi0gICAgICAgIC8vIEl0cyBjdXJyZW50IGtleSBzaG91
bGQgYmUgMCwgYWZ0ZXIgYW4gaXRlcmF0aW9uIGl0cyBuZXh0IGtleSBzaG91bGQgYmUgMS4KLSAg
ICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKDApLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgbG9nKCJSZWNvcmQgMCBkZWxldGVkLCBldmVuIHRob3VnaCB0aGF0J3Mgd2hlcmUg
dGhlIGN1cnNvciBjdXJyZW50bHkgcG9pbnRzLiIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICAvLyBOb3cgdGhhdCBjdXJzb3IgaXRlcmF0aW9uIGhhcyBiZWd1biwgbWFudWFsbHkgZGVs
ZXRlIGFuZCB0aGVuIHJlcGxhY2UgYSByZWNvcmQgCi0gICAgICAgIC8vIHRoYXQgd2lsbCBldmVu
dHVhbGx5IGJlIGl0ZXJhdGVkIHRvLCBtYWtpbmcgc3VyZSB0aGUgbmV3IHZhbHVlIGlzIHBpY2tl
ZCB1cC4gCi0gICAgICAgIG9iamVjdFN0b3JlLmRlbGV0ZSgyKTsKLSAgICAgICAgb2JqZWN0U3Rv
cmUucHV0KCJTY2FyeSBuZXcgYWN0dWFsIHJlY29yZCEiLCAyKTsKLSAgICAKLSAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxvZygiQ3Vyc29yIGl0
ZXJhdGVkIHRvIGtleSAiICsgcmVxdWVzdC5yZXN1bHQua2V5KTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBsb2coIkN1cnNvciBpdGVyYXRlZCB0byBrZXkgIiArIHJlcXVlc3QucmVzdWx0LmtleSArICIg
d2l0aCB2YWx1ZSAnIiArIHJlcXVlc3QucmVzdWx0LnZhbHVlICsgIiciKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmVxdWVzdC5yZXN1bHQuY29udGludWUoKTsK
LSAgICAgICAgfQotICAgICAgICByZXF1ZXN0LnJlc3VsdC5jb250aW51ZSgpOwotICAgIH0KLSAg
ICAgICAgICAKLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAg
IGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUi
KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAg
ICAgZG9uZSgpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci01LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9jdXJzb3ItNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vY3Vyc29yLTYtZXhwZWN0ZWQudHh0CmluZGV4IGMyYWE0MGMuLjA4NDljZDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNv
ci02LWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDE1IEBACiBUaGlzIHRlc3RzIGl0ZXJhdGluZyBh
ICJwcmV2IiBjdXJzb3IgaW4gYSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIHdoaWxlIGNoYW5naW5n
IHJlY29yZHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBDdXJzb3Igb3BlbiBh
dCBrZXkgMgogUmVjb3JkIDIgZGVsZXRlZCwgZXZlbiB0aG91Z2ggdGhhdCdzIHdoZXJlIHRoZSBj
dXJzb3IgY3VycmVudGx5IHBvaW50cy4KIEN1cnNvciBpdGVyYXRlZCB0byBrZXkgMQogQ3Vyc29y
IGl0ZXJhdGVkIHRvIGtleSAwIHdpdGggdmFsdWUgJ1NjYXJ5IG5ldyBhY3R1YWwgcmVjb3JkIScK
IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25l
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci02Lmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTYuaHRtbApp
bmRleCBiMWFhMGVhLi40NTYzMDQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTYuaHRtbApAQCAtMSw3OCArMSwxMCBAQAotVGhpcyB0ZXN0
cyBpdGVyYXRpbmcgYSAicHJldiIgY3Vyc29yIGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiB3
aGlsZSBjaGFuZ2luZyByZWNvcmRzLjxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2Ny
aXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9u
ZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRN
TCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiQ3Vyc29yNkRhdGFiYXNlIiwgMSk7Ci0KLWNyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7
ICsraSkKLSAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQgIiArIGksIGkpOwotICAgIAot
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dl
ckJvdW5kKC1JbmZpbml0eSksICJwcmV2Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgbG9nKCJDdXJzb3Igb3BlbiBhdCBrZXkgIiArIHJlcXVlc3QucmVz
dWx0LmtleSk7Ci0KLSAgICAgICAgLy8gVGhpcyB0ZXN0cyBkZWxldGluZyB0aGUgY3VycmVudCBy
ZWNvcmQgb3V0IG9mIHVuZGVybmVhdGggdGhlIGN1cnNvci4KLSAgICAgICAgLy8gSXRzIGN1cnJl
bnQga2V5IHNob3VsZCBiZSAyLCBhZnRlciBhbiBpdGVyYXRpb24gaXRzIG5leHQga2V5IHNob3Vs
ZCBiZSAxLgotICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoMikub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBsb2coIlJlY29yZCAyIGRlbGV0ZWQsIGV2ZW4gdGhvdWdoIHRo
YXQncyB3aGVyZSB0aGUgY3Vyc29yIGN1cnJlbnRseSBwb2ludHMuIik7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIC8vIE5vdyB0aGF0IGN1cnNvciBpdGVyYXRpb24gaGFzIGJlZ3VuLCBt
YW51YWxseSBkZWxldGUgYW5kIHRoZW4gcmVwbGFjZSBhIHJlY29yZCAKLSAgICAgICAgLy8gdGhh
dCB3aWxsIGV2ZW50dWFsbHkgYmUgaXRlcmF0ZWQgdG8sIG1ha2luZyBzdXJlIHRoZSBuZXcgdmFs
dWUgaXMgcGlja2VkIHVwLiAKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKDApOwotICAgICAg
ICBvYmplY3RTdG9yZS5wdXQoIlNjYXJ5IG5ldyBhY3R1YWwgcmVjb3JkISIsIDApOwotICAgIAot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbG9n
KCJDdXJzb3IgaXRlcmF0ZWQgdG8ga2V5ICIgKyByZXF1ZXN0LnJlc3VsdC5rZXkpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIGxvZygiQ3Vyc29yIGl0ZXJhdGVkIHRvIGtleSAiICsgcmVxdWVzdC5yZXN1
bHQua2V5ICsgIiB3aXRoIHZhbHVlICciICsgcmVxdWVzdC5yZXN1bHQudmFsdWUgKyAiJyIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXF1ZXN0LnJlc3VsdC5j
b250aW51ZSgpOwotICAgICAgICB9Ci0gICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7
Ci0gICAgfQotICAgICAgICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAg
IH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biBjb21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZl
bnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLTYuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2N1cnNvci03LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNy1leHBlY3RlZC50eHQKaW5kZXggOWJkNmZiYy4uMjhl
YjExZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1
cnNvci03LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vY3Vyc29yLTctZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTQgQEAKIFRoaXMgdGVzdHMg
aXRlcmF0aW5nIGEgIm5leHQiIGN1cnNvciBpbiBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gY29t
YmluZWQgd2l0aCBjbGVhcmluZyB0aGUgb2JqZWN0IHN0b3JlLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5l
dyB2ZXJzaW9uIC0gMQogQ3Vyc29yIG9wZW4gYXQga2V5IDAKIE9iamVjdCBzdG9yZSBjbGVhcmVk
LgogQ3Vyc29yIGl0ZXJhdGVkIHRvIGtleSAxMDAKIEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci03Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTcuaHRtbAppbmRleCAxMzU3ZWQzLi40MjFlOGE3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTcuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTcuaHRt
bApAQCAtMSw3MSArMSwxMCBAQAotVGhpcyB0ZXN0cyBpdGVyYXRpbmcgYSAibmV4dCIgY3Vyc29y
IGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiBjb21iaW5lZCB3aXRoIGNsZWFyaW5nIHRoZSBv
YmplY3Qgc3RvcmUuPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAg
ICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJD
dXJzb3I3RGF0YWJhc2UiLCAxKTsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZl
cnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQu
bmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVz
dC50cmFuc2FjdGlvbjsKLSAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0Owot
ICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQotICAgICAgICBv
YmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7Ci0gICAgCi0gICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgbG9nKCJDdXJzb3Igb3BlbiBhdCBrZXkgIiArIHJlcXVlc3QucmVz
dWx0LmtleSk7Ci0KLSAgICAgICAgLy8gVGhpcyB0ZXN0cyBkZWxldGluZyB0aGUgY3VycmVudCBy
ZWNvcmQgb3V0IG9mIHVuZGVybmVhdGggdGhlIGN1cnNvci4KLSAgICAgICAgLy8gSXRzIGN1cnJl
bnQga2V5IHNob3VsZCBiZSAwLCBhZnRlciBhbiBpdGVyYXRpb24gaXRzIG5leHQga2V5IHNob3Vs
ZCBiZSAxLgotICAgICAgICBvYmplY3RTdG9yZS5jbGVhcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgbG9nKCJPYmplY3Qgc3RvcmUgY2xlYXJlZC4iKTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgLy8gVGhlIGN1cnNvciBpcyBjdXJyZW50bHkgb24ga2V5IDAs
IHdoaWNoIG5vIGxvbmdlciBleGlzdHMuCi0gICAgICAgIC8vIEl0J3MgbmV4dCBrZXkgd291bGQg
aGF2ZSBiZWVuIDEsIGJ1dCB0aGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGNsZWFyZWQuCi0gICAg
ICAgIC8vIFdoYXRldmVyIGtleSB3ZSBwdXQgaW4gdGhlIG9iamVjdCBzdG9yZSB0aGF0IGlzIGdy
ZWF0ZXIgdGhhbiAwIHdpbGwgYmUgdGhlIGFjdHVhbCBuZXh0IGtleS4KLSAgICAgICAgb2JqZWN0
U3RvcmUucHV0KCJSZWNvcmQgMTAwIiwgMTAwKTsKLSAgICAKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxvZygiQ3Vyc29yIGl0ZXJhdGVkIHRv
IGtleSAiICsgcmVxdWVzdC5yZXN1bHQua2V5KTsKLSAgICAgICAgfQotICAgICAgICByZXF1ZXN0
LnJlc3VsdC5jb250aW51ZSgpOwotICAgIH0KLSAgICAgICAgICAKLSAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0K
LQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotPC9z
Y3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1
cnNvci03LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItOC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTgtZXhwZWN0ZWQudHh0
CmluZGV4IGYzNzAxMDIuLmQ2YWM1YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jdXJzb3ItOC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci04LWV4cGVjdGVkLnR4dApAQCAtMSw4ICsx
LDE0IEBACiBUaGlzIHRlc3RzIGl0ZXJhdGluZyBhICJwcmV2IiBjdXJzb3IgaW4gYSByZWFkLXdy
aXRlIHRyYW5zYWN0aW9uIHdoaWxlIGNoYW5naW5nIHJlY29yZHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAg
TmV3IHZlcnNpb24gLSAxCiBDdXJzb3Igb3BlbiBhdCBrZXkgMgogT2JqZWN0IHN0b3JlIGNsZWFy
ZWQuCiBDdXJzb3IgaXRlcmF0ZWQgdG8ga2V5IC0xMDAKIEluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci04Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTguaHRtbAppbmRleCAzZjNlOTViLi40YWY0MzBlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTgu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTgu
aHRtbApAQCAtMSw3MiArMSwxMCBAQAotVGhpcyB0ZXN0cyBpdGVyYXRpbmcgYSAicHJldiIgY3Vy
c29yIGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiB3aGlsZSBjaGFuZ2luZyByZWNvcmRzLjxi
cj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25lIik7
Ci0gICAgCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwot
fQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQ3Vyc29yOERh
dGFiYXNlIiwgMSk7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNp
b24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNh
Y3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIg
b2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3Jl
Iik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKLSAgICAgICAgb2JqZWN0U3Rv
cmUucHV0KCJSZWNvcmQgIiArIGksIGkpOwotICAgIAotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKC1JbmZpbml0eSksICJwcmV2
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJD
dXJzb3Igb3BlbiBhdCBrZXkgIiArIHJlcXVlc3QucmVzdWx0LmtleSk7Ci0KLSAgICAgICAgLy8g
VGhpcyB0ZXN0cyBkZWxldGluZyB0aGUgY3VycmVudCByZWNvcmQgb3V0IG9mIHVuZGVybmVhdGgg
dGhlIGN1cnNvci4KLSAgICAgICAgLy8gSXRzIGN1cnJlbnQga2V5IHNob3VsZCBiZSAwLCBhZnRl
ciBhbiBpdGVyYXRpb24gaXRzIG5leHQga2V5IHNob3VsZCBiZSAxLgotICAgICAgICBvYmplY3RT
dG9yZS5jbGVhcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbG9nKCJP
YmplY3Qgc3RvcmUgY2xlYXJlZC4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8g
VGhlIGN1cnNvciBpcyBjdXJyZW50bHkgb24ga2V5IDIsIHdoaWNoIG5vIGxvbmdlciBleGlzdHMu
Ci0gICAgICAgIC8vIEl0J3MgbmV4dCBrZXkgd291bGQgaGF2ZSBiZWVuIDEsIGJ1dCB0aGUgb2Jq
ZWN0IHN0b3JlIGhhcyBiZWVuIGNsZWFyZWQuCi0gICAgICAgIC8vIFdoYXRldmVyIGtleSB3ZSBw
dXQgaW4gdGhlIG9iamVjdCBzdG9yZSB0aGF0IGlzIGxlc3MgdGhhbiAyIHdpbGwgYmUgdGhlIGFj
dHVhbCBuZXh0IGtleS4KLSAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQgLTEwMCIsIC0x
MDApOwotICAgIAotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgbG9nKCJDdXJzb3IgaXRlcmF0ZWQgdG8ga2V5ICIgKyByZXF1ZXN0LnJlc3VsdC5r
ZXkpOwotICAgICAgICB9Ci0gICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7Ci0gICAg
fQotICAgICAgICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQot
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21w
bGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLTguanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2RhdGUtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IDFiN2ViMDEuLjQyZjkx
NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRl
LWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vZGF0ZS1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw4IEBACitUaGlzIHRlc3Rz
IHVzaW5nIERhdGUgb2JqZWN0cyBhcyBrZXlzIGFuZCB2YWx1ZXMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCiBBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCiBBTEVSVDogU3VjY2VzcyBnZXR0aW5nIGtleSAnRnJp
IE5vdiAwNCAxOTU1IDE3OjAwOjAwIEdNVC0wNzAwIChQRFQpJyBvZiB0eXBlIG9iamVjdCwgcmVz
dWx0IGlzICdGbHV4IGNhcGFjaXRvcicgb2YgdHlwZSBzdHJpbmcKQEAgLTEzLDUgKzE4LDcgQEAg
QUxFUlQ6IFJlc3VsdCBpcyBhIERhdGUgb2JqZWN0LCBidHcKIEFMRVJUOiBTdWNjZXNzIGdldHRp
bmcga2V5ICdjJyBvZiB0eXBlIHN0cmluZywgcmVzdWx0IGlzICdXZWQgT2N0IDIxIDIwMTUgMDk6
MDA6MDAgR01ULTA3MDAgKFBEVCknIG9mIHR5cGUgb2JqZWN0CiBBTEVSVDogUmVzdWx0IGlzIGEg
RGF0ZSBvYmplY3QsIGJ0dwogQUxFUlQ6IHJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1B
TEVSVDogRG9uZQotVGhpcyB0ZXN0cyB1c2luZyBEYXRlIG9iamVjdHMgYXMga2V5cyBhbmQgdmFs
dWVzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJh
c2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGF0ZS1iYXNp
Yy5odG1sCmluZGV4IGY1ODkzNDguLmExZDA5NTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RhdGUtYmFzaWMuaHRtbApAQCAtMSwxMDAgKzEsOSBA
QAotVGhpcyB0ZXN0cyB1c2luZyBEYXRlIG9iamVjdHMgYXMga2V5cyBhbmQgdmFsdWVzLgotPHNj
cmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRv
bmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3Qg
PSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRhdGVCYXNpY0RhdGFiYXNlIiwgMSk7Ci12YXIgZGF0
YWJhc2U7Ci0KLXZhciBkYXRlMSA9IG5ldyBEYXRlKCIxOTU1LTExLTA1VDAwOjAwOjAwIik7Ci12
YXIgZGF0ZTIgPSBuZXcgRGF0ZSgiMTk1NS0xMS0xMlQxODowMDowMCIpOwotdmFyIGRhdGUzID0g
bmV3IERhdGUoIjIwMTUtMTAtMjFUMTY6MDA6MDAiKTsKLSAgICAKLWNyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhbGVydCgiSW5pdGlhbCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotCi0gICAgb2JqZWN0U3RvcmUucHV0KCJGbHV4IGNh
cGFjaXRvciIsIGRhdGUxKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoIkZpc2ggdW5kZXIgdGhlIHNl
YSIsIGRhdGUyKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoIkhvdmVyYm9hcmRzIiwgZGF0ZTMpOwot
ICAgIAotICAgIG9iamVjdFN0b3JlLnB1dChkYXRlMSwgImEiKTsKLSAgICBvYmplY3RTdG9yZS5w
dXQoZGF0ZTIsICJiIik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KGRhdGUzLCAiYyIpOwotICAgIAot
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgi
SW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAg
ICAgICAgY29udGludWVUZXN0MSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi12YXIgb2JqZWN0U3RvcmU7Ci0KLWZ1bmN0aW9u
IHRlc3RHZXQoa2V5KSB7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGFsZXJ0
KCJTdWNjZXNzIGdldHRpbmcga2V5ICciICsga2V5ICsgIicgb2YgdHlwZSAiICsgdHlwZW9mKGtl
eSkgKyAiLCByZXN1bHQgaXMgJyIgKyByZXF1ZXN0LnJlc3VsdCArICInIG9mIHR5cGUgIiArIHR5
cGVvZihyZXF1ZXN0LnJlc3VsdCkpOwotICAgICAgICBpZiAoa2V5IGluc3RhbmNlb2YgRGF0ZSkK
LSAgICAgICAgICAgIGFsZXJ0KCJLZXkgaXMgYSBEYXRlIG9iamVjdCwgYnR3Iik7Ci0gICAgICAg
IGlmIChyZXF1ZXN0LnJlc3VsdCBpbnN0YW5jZW9mIERhdGUpCi0gICAgICAgICAgICBhbGVydCgi
UmVzdWx0IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dyIpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBhbGVydCgiRXhwZWN0ZWQgZXJyb3IgZ2V0
dGluZyBrZXkgJyIgKyBrZXkgKyAiJyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGludWVU
ZXN0MSgpCi17Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRl
c3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIpOwotICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgIAotICAgIHRlc3RHZXQoZGF0
ZTEpOwotICAgIHRlc3RHZXQoZGF0ZTIpOwotICAgIHRlc3RHZXQoZGF0ZTMpOwotICAgIHRlc3RH
ZXQoImEiKTsKLSAgICB0ZXN0R2V0KCJiIik7Ci0gICAgdGVzdEdldCgiYyIpOwotICAgIAotICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgi
cmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3Nj
cmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGUt
YmFzaWMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNl
LTEtZXhwZWN0ZWQudHh0CmluZGV4IDhiMTU5MGUuLmU2MTE4OTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0xLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0
YWJhc2UtMS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw4IEBACiBUaGlzIHRlc3RzIHRoYXQgaWYg
ZGVsZXRlRGF0YWJhc2UgaXMgY2FsbGVkIHdoaWxlIHRoZXJlIGlzIGFscmVhZHkgYW4gb3BlbiBj
b25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZSB0aGF0IHRoZSBvcGVuIGNvbm5lY3Rpb24gZ2V0cyB0
aGUgYXBwcm9wcmlhdGUgdmVyc2lvbkNoYW5nZSBldmVudC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKIEluaXRpYWwgdXBncmFkZSBvbGQgdmVyc2lvbiAtIDAgbmV3IHZlcnNpb24g
LSAxCiBWZXJzaW9uIGNoYW5nZSBjb21wbGV0ZQogUmVxdWVzdGluZyBkZWxldGVEYXRhYmFzZQpA
QCAtOSw1ICsxMyw3IEBAIFJlY3JlYXRpbmcgZGF0YWJhc2UgdG8gbWFrZSBzdXJlIGl0J3MgbmV3
IGFuZCBlbXB0eQogU2Vjb25kIHVwZ3JhZGUgb2xkIHZlcnNpb24gLSAwIG5ldyB2ZXJzaW9uIC0g
MQogVW5hYmxlIHRvIGdldCBvYmplY3Qgc3RvcmUgaW4gc2Vjb25kIHVwZ3JhZGUgdHJhbnNhY3Rp
b24gKHdoaWNoIGlzIGNvcnJlY3QgYmVjYXVzZSBpdCBzaG91bGQgbm90IGJlIHRoZXJlKQogU2Vj
b25kIGRhdGFiYXNlIHVwZ3JhZGUgc3VjY2VzcwotRG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0xLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMS5odG1sCmluZGV4IGQ4
NWUzZGMuLjYxM2RiNjlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0xLmh0bWwKQEAgLTEsMTMyICsxLDEwIEBA
Ci1UaGlzIHRlc3RzIHRoYXQgaWYgZGVsZXRlRGF0YWJhc2UgaXMgY2FsbGVkIHdoaWxlIHRoZXJl
IGlzIGFscmVhZHkgYW4gb3BlbiBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZSB0aGF0IHRoZSBv
cGVuIGNvbm5lY3Rpb24gZ2V0cyB0aGUgYXBwcm9wcmlhdGUgdmVyc2lvbkNoYW5nZSBldmVudC48
YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQot
dmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRlbGV0ZURhdGFiYXNlMVRlc3RE
YXRhYmFzZSIpOwotcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi17Ci0gICAgbG9nKCJv
cGVuIGRiIHN1Y2Nlc3MiKTsKLX0KLXJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCi17Ci0g
ICAgbG9nKCJVbmV4cGVjdGVkIGVycm9yIik7Ci0JZG9uZSgpOwotfQotCi1yZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi17Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgb2xk
IHZlcnNpb24gLSAiICsgZS5vbGRWZXJzaW9uICsgIiBuZXcgdmVyc2lvbiAtICIgKyBlLm5ld1Zl
cnNpb24pOwotICAgIAotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSByZXF1ZXN0LnRyYW5z
YWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgdmFy
IG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOwotICAgIG9iamVjdFN0b3JlLnB1dCgiVGhpcyBpcyBhIHJlY29yZCIsIDEpOwotICAgICAg
ICAKLSAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBsb2coIlZlcnNpb24gY2hhbmdlIGNvbXBsZXRlIik7Ci0gICAgICAgIGRhdGFi
YXNlLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGxvZygiRmlyc3QgY29ubmVjdGlvbiByZWNlaXZlZCB2ZXJzaW9uY2hhbmdlIGV2ZW50OiBvbGRW
ZXJzaW9uICIgKyBlLm9sZFZlcnNpb24gKyAiLCBuZXdWZXJzaW9uICIgKyBlLm5ld1ZlcnNpb24p
OwotICAgICAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgfQotICAgICAgICBjb250
aW51ZVRlc3QxKCk7Ci0gICAgfQotICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGxvZygiVmVyc2lvbiBjaGFuZ2UgdW5leHBlY3RlZCBh
Ym9ydCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIHJlcXVlc3QudHJhbnNhY3Rpb24u
b25lcnJvciA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGxvZygiVmVyc2lvbiBjaGFuZ2Ug
dW5leHBlY3RlZCBlcnJvciIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBjb250aW51ZVRlc3QxKCkKLXsKLSAgICBsb2coIlJlcXVlc3RpbmcgZGVsZXRlRGF0YWJhc2Ui
KTsKLSAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoIkRl
bGV0ZURhdGFiYXNlMVRlc3REYXRhYmFzZSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oZSkKLSAgICB7Ci0gICAgICAgIGxvZygiRGVsZXRlIGRhdGFiYXNlIHN1Y2Nlc3M6IG9s
ZFZlcnNpb24gIiArIGUub2xkVmVyc2lvbiArICIsIG5ld1ZlcnNpb24gIiArIGUubmV3VmVyc2lv
bik7Ci0gICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oZSkKLSAgICB7Ci0gICAgICAgIGxvZygiRGVsZXRlIGRhdGFiYXNlIHVuZXhw
ZWN0ZWQgZXJyb3IiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAgICBsb2coIkRlbGV0ZSBkYXRh
YmFzZSB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQiKTsKLSAgICAJZG9uZSgpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gY29udGludWVUZXN0MigpCi17Ci0gICAgbG9nKCJSZWNyZWF0aW5nIGRhdGFi
YXNlIHRvIG1ha2Ugc3VyZSBpdCdzIG5ldyBhbmQgZW1wdHkiKTsKLSAgICB2YXIgcmVxdWVzdCA9
IHdpbmRvdy5pbmRleGVkREIub3BlbigiRGVsZXRlRGF0YWJhc2UxVGVzdERhdGFiYXNlIik7Ci0K
LSAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAg
ICBsb2coIlNlY29uZCB1cGdyYWRlIG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIg
bmV3IHZlcnNpb24gLSAiICsgZS5uZXdWZXJzaW9uKTsKLSAgICAgICAgdmFyIHZlcnNpb25UcmFu
c2FjdGlvbiA9IHJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgICAgIAotICAgICAgICB0cnkgewot
ICAgICAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdmVyc2lvblRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAg
ICBsb2coIlVuYWJsZSB0byBnZXQgb2JqZWN0IHN0b3JlIGluIHNlY29uZCB1cGdyYWRlIHRyYW5z
YWN0aW9uICh3aGljaCBpcyBjb3JyZWN0IGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBiZSB0aGVyZSki
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZSkKLSAgICAgICAgewotICAgICAgICAgICAgbG9nKCJTZWNvbmQgZGF0YWJhc2Ug
dXBncmFkZSBzdWNjZXNzIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgbG9nKCJTZWNvbmQgZGF0YWJhc2UgdXBncmFkZSB1bmV4cGVj
dGVkIGFib3J0Iik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGxvZygiU2Vjb25kIGRhdGFiYXNlIHVwZ3JhZGUgdW5leHBlY3Rl
ZCBlcnJvciIpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKQotICAgIHsKLSAgICAgICAgbG9nKCJTZWNv
bmQgZGF0YWJhc2Ugb3BlbmluZyB1bmV4cGVjdGVkIHN1Y2Nlc3MiKTsKLSAgICAgICAgZG9uZSgp
OwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQotICAgIHsK
LSAgICAgICAgbG9nKCJTZWNvbmQgZGF0YWJhc2Ugb3BlbmluZyB1bmV4cGVjdGVkIGVycm9yIik7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtMS5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMi1leHBlY3RlZC50eHQK
aW5kZXggNGQ3OGEwNy4uYjkyYzczZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0yLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDggQEAKLVRoaXMgdGVzdHMgdGhhdCBpZiBkZWxldGVEYXRhYmFzZSBp
cyBjYWxsZWQgd2hpbGUgdGhlcmUgaXMgYWxyZWFkeSBhbiBvcGVuIGNvbm5lY3Rpb24gdG8gdGhl
IGRhdGFiYXNlIHRoYXQgdGhlIG9wZW4gY29ubmVjdGlvbiBnZXRzIHRoZSBhcHByb3ByaWF0ZSB2
ZXJzaW9uQ2hhbmdlIGV2ZW50LgotVGhhdCBvcGVuIGNvbm5lY3Rpb24gYWxzbyBoYXMgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24gYXQgdGhlIHRpbWUgaXQgZ2V0cyB0aGUgdmVyc2lvbkNoYW5n
ZSBldmVudC4KK1RoaXMgdGVzdHMgdGhhdCBpZiBkZWxldGVEYXRhYmFzZSBpcyBjYWxsZWQgd2hp
bGUgdGhlcmUgaXMgYWxyZWFkeSBhbiBvcGVuIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlIHRo
YXQgdGhlIG9wZW4gY29ubmVjdGlvbiBnZXRzIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uQ2hhbmdl
IGV2ZW50LiBUaGF0IG9wZW4gY29ubmVjdGlvbiBhbHNvIGhhcyBhbiBpbi1wcm9ncmVzcyB0cmFu
c2FjdGlvbiBhdCB0aGUgdGltZSBpdCBnZXRzIHRoZSB2ZXJzaW9uQ2hhbmdlIGV2ZW50LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG9sZCB2ZXJzaW9u
IC0gMCBuZXcgdmVyc2lvbiAtIDEKIFJlcXVlc3RpbmcgZGVsZXRlRGF0YWJhc2UKIEZpcnN0IGNv
bm5lY3Rpb24gcmVjZWl2ZWQgdmVyc2lvbmNoYW5nZSBldmVudDogb2xkVmVyc2lvbiAxLCBuZXdW
ZXJzaW9uIG51bGwKQEAgLTEwLDUgKzEzLDcgQEAgUmVjcmVhdGluZyBkYXRhYmFzZSB0byBtYWtl
IHN1cmUgaXQncyBuZXcgYW5kIGVtcHR5CiBTZWNvbmQgdXBncmFkZSBvbGQgdmVyc2lvbiAtIDAg
bmV3IHZlcnNpb24gLSAxCiBVbmFibGUgdG8gZ2V0IG9iamVjdCBzdG9yZSBpbiBzZWNvbmQgdXBn
cmFkZSB0cmFuc2FjdGlvbiAod2hpY2ggaXMgY29ycmVjdCBiZWNhdXNlIGl0IHNob3VsZCBub3Qg
YmUgdGhlcmUpCiBTZWNvbmQgZGF0YWJhc2UgdXBncmFkZSBzdWNjZXNzCi1Eb25lCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTIuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0y
Lmh0bWwKaW5kZXggYjQ5MDU4OS4uNjU3NDJmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLTIuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMi5odG1sCkBAIC0x
LDE0OSArMSwxMCBAQAotVGhpcyB0ZXN0cyB0aGF0IGlmIGRlbGV0ZURhdGFiYXNlIGlzIGNhbGxl
ZCB3aGlsZSB0aGVyZSBpcyBhbHJlYWR5IGFuIG9wZW4gY29ubmVjdGlvbiB0byB0aGUgZGF0YWJh
c2UgdGhhdCB0aGUgb3BlbiBjb25uZWN0aW9uIGdldHMgdGhlIGFwcHJvcHJpYXRlIHZlcnNpb25D
aGFuZ2UgZXZlbnQuPGJyPgotVGhhdCBvcGVuIGNvbm5lY3Rpb24gYWxzbyBoYXMgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24gYXQgdGhlIHRpbWUgaXQgZ2V0cyB0aGUgdmVyc2lvbkNoYW5nZSBl
dmVudC48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygi
RG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsK
LX0KLQotdmFyIHN0b3BTcGlubmluZyA9IGZhbHNlOwotCi12YXIgcmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiRGVsZXRlRGF0YWJhc2UyVGVzdERhdGFiYXNlIik7Ci1yZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBsb2coIm9wZW4gZGIgc3VjY2VzcyIpOwotfQot
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKLXsKLSAgICBsb2coIk9wZW4gcmVxdWVzdCBl
cnJvcjogIiArIHJlcXVlc3QuZXJyb3IubmFtZSk7Ci19Ci0KLXJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oZSkKLXsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBvbGQgdmVyc2lv
biAtICIgKyBlLm9sZFZlcnNpb24gKyAiIG5ldyB2ZXJzaW9uIC0gIiArIGUubmV3VmVyc2lvbik7
Ci0gICAgCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IHJlcXVlc3QudHJhbnNhY3Rpb247
Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0g
ICAgb2JqZWN0U3RvcmUucHV0KCJUaGlzIGlzIGEgcmVjb3JkIiwgMSk7Ci0gICAgCi0gICAgLy8g
U3BpbiB0aGUgdHJhbnNhY3Rpb24gdW50aWwgdG9sZCB0byBzdG9wIHNwaW5uaW5nIGl0LgotICAg
IHZhciBrZWVwR29pbmcgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCFzdG9wU3Bpbm5pbmcp
Ci0gICAgICAgICAgICBvYmplY3RTdG9yZS5nZXQoMSkub25zdWNjZXNzID0ga2VlcEdvaW5nOwot
ICAgIH0KLSAgICBvYmplY3RTdG9yZS5nZXQoMSkub25zdWNjZXNzID0ga2VlcEdvaW5nOwotCi0g
ICAgZGF0YWJhc2Uub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZSkKLSAgICB7Ci0gICAgICAg
IGxvZygiRmlyc3QgY29ubmVjdGlvbiByZWNlaXZlZCB2ZXJzaW9uY2hhbmdlIGV2ZW50OiBvbGRW
ZXJzaW9uICIgKyBlLm9sZFZlcnNpb24gKyAiLCBuZXdWZXJzaW9uICIgKyBlLm5ld1ZlcnNpb24p
OwotICAgICAgICAKLSAgICAgICAgdmFyIHNodXRFckRvd24gPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgICAgICBzdG9wU3Bpbm5pbmcgPSB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHNodXRFckRvd24sIDApOwot
ICAgIH0KLSAgICAgICAgCi0gICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgbG9nKCJGaXJzdCB2ZXJzaW9uIGNoYW5nZSBjb21wbGV0
ZSIpOwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBsb2coIlZlcnNpb24gY2hhbmdlIHVuZXhwZWN0ZWQgYWJv
cnQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBsb2coIlZlcnNpb24gY2hhbmdlIHVu
ZXhwZWN0ZWQgZXJyb3IiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICAKLSAgICB3aW5k
b3cuc2V0VGltZW91dChjb250aW51ZVRlc3QxLCAwKTsKLX0KLQotZnVuY3Rpb24gY29udGludWVU
ZXN0MSgpCi17Ci0gICAgbG9nKCJSZXF1ZXN0aW5nIGRlbGV0ZURhdGFiYXNlIik7Ci0gICAgdmFy
IHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCJEZWxldGVEYXRhYmFz
ZTJUZXN0RGF0YWJhc2UiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpCi0g
ICAgewotICAgICAgICBsb2coIkRlbGV0ZSBkYXRhYmFzZSBzdWNjZXNzOiBvbGRWZXJzaW9uICIg
KyBlLm9sZFZlcnNpb24gKyAiLCBuZXdWZXJzaW9uICIgKyBlLm5ld1ZlcnNpb24pOwotICAgICAg
ICBjb250aW51ZVRlc3QyKCk7Ci0gICAgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
KGUpCi0gICAgewotICAgICAgICBsb2coIkRlbGV0ZSBkYXRhYmFzZSB1bmV4cGVjdGVkIGVycm9y
Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihlKQotICAgIHsKLSAgICAgICAgbG9nKCJEZWxldGUgZGF0YWJhc2UgdW5leHBl
Y3RlZCB1cGdyYWRlbmVlZGVkIik7Ci0gICAgCWRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IGNvbnRpbnVlVGVzdDIoKQotewotICAgIGxvZygiUmVjcmVhdGluZyBkYXRhYmFzZSB0byBtYWtl
IHN1cmUgaXQncyBuZXcgYW5kIGVtcHR5Iik7Ci0gICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIkRlbGV0ZURhdGFiYXNlMlRlc3REYXRhYmFzZSIpOwotCi0gICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQotICAgIHsKLSAgICAgICAgbG9nKCJTZWNv
bmQgdXBncmFkZSBvbGQgdmVyc2lvbiAtICIgKyBlLm9sZFZlcnNpb24gKyAiIG5ldyB2ZXJzaW9u
IC0gIiArIGUubmV3VmVyc2lvbik7Ci0gICAgICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBy
ZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgICAgICAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IHZhciBvYmplY3RTdG9yZSA9IHZlcnNpb25UcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9i
amVjdFN0b3JlIik7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgbG9nKCJVbmFi
bGUgdG8gZ2V0IG9iamVjdCBzdG9yZSBpbiBzZWNvbmQgdXBncmFkZSB0cmFuc2FjdGlvbiAod2hp
Y2ggaXMgY29ycmVjdCBiZWNhdXNlIGl0IHNob3VsZCBub3QgYmUgdGhlcmUpIik7Ci0gICAgICAg
IH0KLQotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGxvZygiU2Vjb25kIGRhdGFiYXNlIHVwZ3JhZGUgc3Vj
Y2VzcyIpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGxvZygiU2Vjb25kIGRhdGFiYXNlIHVwZ3JhZGUgdW5leHBlY3RlZCBhYm9ydCIp
OwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
dmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBsb2coIlNlY29uZCBkYXRhYmFzZSB1cGdyYWRlIHVuZXhwZWN0ZWQgZXJyb3IiKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZSkKLSAgICB7Ci0gICAgICAgIGxvZygiU2Vjb25kIGRhdGFiYXNl
IG9wZW5pbmcgdW5leHBlY3RlZCBzdWNjZXNzIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0g
ICAgCi0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKLSAgICB7Ci0gICAgICAgIGxv
ZygiU2Vjb25kIGRhdGFiYXNlIG9wZW5pbmcgdW5leHBlY3RlZCBlcnJvciIpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfQotfQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLTIuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFt
ZS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGMxMjRlYTguLjVlZGE4NjYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1u
dWxsLW5hbWUtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtbnVsbC1uYW1lLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQKQEAgLTEsMyArMSwxMCBAQAotQUxFUlQ6IFR5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMKLUFMRVJUOiBEb25lCiBUaGlzIHRlc3QgY2FsbHMgZGVsZXRlRGF0YWJhc2Ugb24g
d2luZG93LmluZGV4ZWREQiB3aXRoIGEgbnVsbCBkYXRhYmFzZSBuYW1lLCBtYWtpbmcgc3VyZSB0
aGVyZSBpcyBhbiBleGNlcHRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitB
TEVSVDogVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0
YWJhc2UtbnVsbC1uYW1lLWV4Y2VwdGlvbi5odG1sCmluZGV4IDc2ZjlkZGIuLmNlODQ2YTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRh
YmFzZS1udWxsLW5hbWUtZXhjZXB0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLW51bGwtbmFtZS1leGNlcHRpb24uaHRtbApA
QCAtMSwyMyArMSw5IEBACi1UaGlzIHRlc3QgY2FsbHMgZGVsZXRlRGF0YWJhc2Ugb24gd2luZG93
LmluZGV4ZWREQiB3aXRoIGEgbnVsbCBkYXRhYmFzZSBuYW1lLCBtYWtpbmcgc3VyZSB0aGVyZSBp
cyBhbiBleGNlcHRpb24uCi08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUiKTsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQot
Ci10cnkgewotCXZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgp
OwotfSBjYXRjaCAoZSkgewotCWFsZXJ0KGUpOwotfQotCi1kb25lKCk7Ci08L3NjcmlwdD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNl
LW51bGwtbmFtZS1leGNlcHRpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFi
YXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGRhMGVjMzUuLmJhNzc0ZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2Ut
cmVxdWVzdC1ldmVudC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwxMSBAQAorVGhpcyB0ZXN0IGNh
bGxzIGRlbGV0ZURhdGFiYXNlIG9uIHdpbmRvdy5pbmRleGVkREIgYW5kIHZlcmlmaWVzIHRoYXQg
YW4gZXZlbnQgaXMgZmlyZWQgYXQgdGhlIHJlcXVlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCiBBTEVSVDogW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XQogQUxFUlQ6IHN1Y2Nl
c3MKLUFMRVJUOiBEb25lCi1UaGlzIHRlc3QgY2FsbHMgZGVsZXRlRGF0YWJhc2Ugb24gd2luZG93
LmluZGV4ZWREQiBhbmQgdmVyaWZpZXMgdGhhdCBhbiBldmVudCBpcyBmaXJlZCBhdCB0aGUgcmVx
dWVzdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRl
ZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbAppbmRleCA1ODVkYWY0
Li41N2ZlN2U0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LWV2ZW50Lmh0bWwK
QEAgLTEsMzEgKzEsOSBAQAotVGhpcyB0ZXN0IGNhbGxzIGRlbGV0ZURhdGFiYXNlIG9uIHdpbmRv
dy5pbmRleGVkREIgYW5kIHZlcmlmaWVzIHRoYXQgYW4gZXZlbnQgaXMgZmlyZWQgYXQgdGhlIHJl
cXVlc3QuPGJyPgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19
Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFy
IHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCJUZXN0RGF0YWJhc2Ui
KTsKLQotcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi17Ci0JYWxlcnQoInN1Y2Nlc3Mi
KTsKLQlkb25lKCk7Ci19Ci1yZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQotewotCWFsZXJ0
KCJlcnJvciAiICsgZSk7Ci0JZG9uZSgpOwotfQotCi1hbGVydChyZXF1ZXN0KTsKLQotPC9zY3Jp
cHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGVk
YXRhYmFzZS1yZXF1ZXN0LWV2ZW50LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRh
YmFzZS1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LWV4cGVjdGVkLnR4dAppbmRleCA1YzZmZWNi
Li4zZDU0MTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsMTAgQEAKLUFMRVJUOiBbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdCi1B
TEVSVDogRG9uZQogVGhpcyB0ZXN0IGNhbGxzIGRlbGV0ZURhdGFiYXNlIG9uIHdpbmRvdy5pbmRl
eGVkREIgYW5kIHZlcmlmaWVzIHRoYXQgYW4gSURCT3BlbkRCUmVxdWVzdCBvYmplY3QgaXMgcmV0
dXJuZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitBTEVSVDogW29iamVjdCBJ
REJPcGVuREJSZXF1ZXN0XQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC5odG1sCmluZGV4IGIxMDM1NWEu
LmMzZWFhZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QuaHRtbApAQCAtMSwyMCArMSw5
IEBACi1UaGlzIHRlc3QgY2FsbHMgZGVsZXRlRGF0YWJhc2Ugb24gd2luZG93LmluZGV4ZWREQiBh
bmQgdmVyaWZpZXMgdGhhdCBhbiBJREJPcGVuREJSZXF1ZXN0IG9iamVjdCBpcyByZXR1cm5lZC4K
LTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlv
biBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciByZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgiVGVzdERhdGFiYXNlIik7Ci1hbGVydChy
ZXF1ZXN0KTsKLQotZG9uZSgpOwotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9kZWxldGVpbmRleC0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRleC0xLWV4cGVjdGVkLnR4dAppbmRleCA5ODAw
ZDFkLi40YzAyYTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vZGVsZXRlaW5kZXgtMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
OCBAQAogVGhpcyB0ZXN0cyBkZWxldGluZyBhbiBpbmRleCBhbmQgdGhlbiBjb21taXR0aW5nIHRo
ZSB0cmFuc2FjdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEluaXRpYWwg
dXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIENvdW50IGlz
OiAyCiBDdXJzb3IgYXQgcmVjb3JkOiBBIC8gMQpAQCAtOCw1ICsxMiw3IEBAIEluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCiBPYmplY3Qgc3RvcmUgaGFz
IGluZGV4ZXM6CiBVbmFibGUgdG8gZ2V0IGluZGV4IGZyb20gb2JqZWN0IHN0b3JlIChpdCBzaG91
bGRuJ3QgZXhpc3QpCiBUcmFuc2FjdGlvbiBjb21wbGV0ZQotRG9uZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRleC0xLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMS5odG1sCmluZGV4IDk4
YmZmZjEuLmYwMzA5ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9kZWxldGVpbmRleC0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEuaHRtbApAQCAtMSwxMTMgKzEsMTAgQEAKLVRoaXMg
dGVzdHMgZGVsZXRpbmcgYW4gaW5kZXggYW5kIHRoZW4gY29tbWl0dGluZyB0aGUgdHJhbnNhY3Rp
b24uPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRv
bmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19
Ci0KLXZhciBpbmRleDsKLXZhciBvYmplY3RTdG9yZTsKLXZhciBkYXRhYmFzZTsKLQotZnVuY3Rp
b24gY2hlY2tJbmRleFZhbHVlcygpCi17Ci0gICAgdmFyIGNvdW50UmVxdWVzdCA9IGluZGV4LmNv
dW50KCk7Ci0gICAgY291bnRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICBsb2coIkNvdW50IGlzOiAiICsgY291bnRSZXF1ZXN0LnJlc3VsdCk7Ci0gICAgfQotCi0gICAg
dmFyIGN1cnNvclJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7Ci0gICAgY3Vyc29yUmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGN1cnNvciA9IGN1cnNvclJl
cXVlc3QucmVzdWx0OwotICAgICAgICBpZiAoIWN1cnNvcikgewotICAgICAgICAgICAgb2JqZWN0
U3RvcmUuZGVsZXRlSW5kZXgoIlRlc3RJbmRleDEiKTsKLSAgICAgICAgICAgIGxvZygiRGVsZXRl
ZCB0aGUgaW5kZXgiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGxvZygiQ3Vyc29yIGF0IHJlY29yZDogIiArIGN1cnNvci5rZXkgKyAiIC8gIiArIGN1cnNvci5w
cmltYXJ5S2V5KTsKLSAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgfQotICAgIGN1cnNv
clJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgbG9nKCJVbmV4cGVjdGVk
IGVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOwotICAgICAgICBsb2dDdXJzb3Io
Y3Vyc29yUmVxdWVzdC5yZXN1bHQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfSAKLX0KLQotdmFy
IGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRlbGV0ZUluZGV4MURhdGFi
YXNlIiwgMSk7Ci1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBl
dmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsK
LQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9u
OwotICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBvYmplY3RTdG9yZSA9
IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICBvYmpl
Y3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAxKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJBIiB9LCAyKTsKLQotICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJ
bmRleDEiLCAiYmFyIik7Ci0gICAgCi0gICAgY2hlY2tJbmRleFZhbHVlcygpOwotICAgIAotICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
bG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgY29u
dGludWVUZXN0KCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25l
KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QoKSB7Ci0gICAgdmFyIHRyYW5z
YWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIpOwotICAgIG9i
amVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwot
Ci0gICAgdmFyIG5hbWVzID0gb2JqZWN0U3RvcmUuaW5kZXhOYW1lczsKLSAgICBsb2coIk9iamVj
dCBzdG9yZSBoYXMgaW5kZXhlczoiKQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVu
Z3RoOyArK2kpCi0gICAgICAgIGxvZyhuYW1lc1tpXSk7Ci0gICAgCi0gICAgdHJ5IHsKLSAgICAg
ICAgb2JqZWN0U3RvcmUuaW5kZXgoIlRlc3RJbmRleDEiKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAg
ICAgICAgbG9nKCJVbmFibGUgdG8gZ2V0IGluZGV4IGZyb20gb2JqZWN0IHN0b3JlIChpdCBzaG91
bGRuJ3QgZXhpc3QpIik7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiVHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiVHJhbnNhY3Rpb24gY29tcGxldGUiKTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBsb2coIlRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3Ii
ICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlaW5kZXgtMS5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMi1leHBlY3RlZC50
eHQKaW5kZXggNGM3ZTgzZC4uOTkxOWE4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRleC0yLWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdHMgZGVsZXRpbmcgYW4gaW5kZXggYW5kIHRoZW4g
YWJvcnRpbmcgdGhlIHRyYW5zYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0g
MQogQ291bnQgaXM6IDIKIEN1cnNvciBhdCByZWNvcmQ6IEEgLyAxCkBAIC0xMyw1ICsxNyw3IEBA
IENvdW50IGlzOiAyCiBDdXJzb3IgYXQgcmVjb3JkOiBBIC8gMQogQ3Vyc29yIGF0IHJlY29yZDog
QSAvIDIKIFRoaXJkIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQot
RG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVp
bmRleC0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRl
aW5kZXgtMi5odG1sCmluZGV4IGVkZGZhZmYuLmQ4YWViZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRleC0yLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTIuaHRtbApAQCAt
MSwxMzggKzEsMTAgQEAKLVRoaXMgdGVzdHMgZGVsZXRpbmcgYW4gaW5kZXggYW5kIHRoZW4gYWJv
cnRpbmcgdGhlIHRyYW5zYWN0aW9uLjxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2Ny
aXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9u
ZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
Ci17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBt
ZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgaW5kZXg7Ci12YXIgb2JqZWN0U3RvcmU7Ci12YXIg
ZGF0YWJhc2U7Ci0KLWZ1bmN0aW9uIGNoZWNrSW5kZXhWYWx1ZXMoKQotewotICAgIHZhciBjb3Vu
dFJlcXVlc3QgPSBpbmRleC5jb3VudCgpOwotICAgIGNvdW50UmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJDb3VudCBpczogIiArIGNvdW50UmVxdWVzdC5yZXN1
bHQpOwotICAgIH0KLQotICAgIHZhciBjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigp
OwotICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh
ciBjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKCFjdXJzb3IpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbG9nKCJDdXJzb3IgYXQgcmVjb3JkOiAiICsg
Y3Vyc29yLmtleSArICIgLyAiICsgY3Vyc29yLnByaW1hcnlLZXkpOwotICAgICAgICBjdXJzb3Iu
Y29udGludWUoKTsKLSAgICB9Ci0gICAgY3Vyc29yUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICBsb2coIlVuZXhwZWN0ZWQgZXJyb3Igb3BlbmluZyBvciBpdGVyYXRpbmcg
Y3Vyc29yIik7Ci0gICAgICAgIGxvZ0N1cnNvcihjdXJzb3JSZXF1ZXN0LnJlc3VsdCk7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9IAotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRl
eGVkREIub3BlbigiRGVsZXRlSW5kZXgyRGF0YWJhc2UiLCAxKTsKLWNyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJn
ZXQucmVzdWx0OwotICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUo
IlRlc3RPYmplY3RTdG9yZSIpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkEiIH0sIDEp
OwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkEiIH0sIDIpOwotCi0gICAgaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MSIsICJiYXIiKTsKLSAgICAKLSAgICBj
aGVja0luZGV4VmFsdWVzKCk7Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICBjb250
aW51ZVRlc3QxKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25l
KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkgewotICAgIHZhciBjcmVh
dGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJEZWxldGVJbmRleDJEYXRhYmFzZSIs
IDIpOwotICAgIGNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwotCi0gICAgICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgdmFy
IHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgICAg
IG9iamVjdFN0b3JlID0gdmVyc2lvblRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiKTsKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoIlRlc3RJbmRleDEiKTsK
LSAgICAgICAgbG9nKCJEZWxldGVkIHRoZSBpbmRleCIpOwotICAgICAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24uYWJvcnQoKTsKLSAgICAgICAgbG9nKCJBYm9ydGVkIHRoZSB0cmFuc2FjdGlvbiIpOwot
Ci0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgICAgIGxvZygiU2Vjb25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biBhYm9ydCIpOwotICAgICAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlVGVzdDIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGxvZygiU2Vjb25kIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7Ci0g
ICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBsb2coIlNlY29uZCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3IgIiArIGV2ZW50KTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MigpIHsKLSAgICB2YXIgY3Jl
YXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiRGVsZXRlSW5kZXgyRGF0YWJhc2Ui
LCAzKTsKLSAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygiVGhpcmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwotCi0gICAgICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5z
YWN0aW9uOwotICAgICAgICBvYmplY3RTdG9yZSA9IHZlcnNpb25UcmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuaW5k
ZXgoIlRlc3RJbmRleDEiKTsKLSAgICAKLSAgICAgICAgY2hlY2tJbmRleFZhbHVlcygpOyAgICAK
LSAgICAgICAgCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgICAgIGxvZygiVGhpcmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgICAgIGxvZygiVGhpcmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBsb2coIlRoaXJkIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2RlbGV0ZWluZGV4LTIuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Rl
bGV0ZW9iamVjdHN0b3JlLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZW9iamVjdHN0b3JlLTEtZXhwZWN0ZWQudHh0CmluZGV4IDNhNWUz
NDMuLmJhODAwMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9kZWxldGVvYmplY3RzdG9yZS0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlb2JqZWN0c3RvcmUtMS1leHBlY3RlZC50eHQK
QEAgLTEsMyArMSw4IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUgdGhlbiBw
b3B1bGF0ZXMgaXQsIHRoZW4gY29tbWl0cyB0aGF0IHRyYW5zYWN0aW9uLiBJdCB0aGVuIGRlbGV0
ZXMgaXQsIGJ1dCBhYm9ydHMgdGhhdCB0cmFuc2FjdGlvbi4gRmluYWxseSBpdCBjaGVja3MgdG8g
bWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgdGhlcmUgYXMgZXhwZWN0ZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5l
ZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6IEluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCiBBTEVSVDogU2Vjb25kIHVw
Z3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDEgTmV3IHZlcnNpb24gLSAyCkBAIC0xNiw4ICsy
MSw3IEBAIEFMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIEFIIEFIIEFIIEFIIEFICiBBTEVSVDogVmFs
dWUgZ290dGVuIHdhcyBBSCBBSCBBSCBBSCBBSAogQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgQUgg
QUggQUggQUggQUgKIEFMRVJUOiBGaW5hbCB0cmFuc2FjdGlvbiBjb21wbGV0ZQotQUxFUlQ6IERv
bmUKLVRoaXMgdGVzdCBjcmVhdGVzIGFuIG9iamVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdCwg
dGhlbiBjb21taXRzIHRoYXQgdHJhbnNhY3Rpb24uCi1JdCB0aGVuIGRlbGV0ZXMgaXQsIGJ1dCBh
Ym9ydHMgdGhhdCB0cmFuc2FjdGlvbi4KLUZpbmFsbHkgaXQgY2hlY2tzIHRvIG1ha2Ugc3VyZSBl
dmVyeXRoaW5nIGZyb20gc3RlcCAxIGlzIHRoZXJlIGFzIGV4cGVjdGVkLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVvYmplY3RzdG9yZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlb2JqZWN0c3RvcmUt
MS5odG1sCmluZGV4IDJkMzIzYjguLmNiOTNiNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVvYmplY3RzdG9yZS0xLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZW9iamVjdHN0b3JlLTEuaHRt
bApAQCAtMSwxMzkgKzEsOSBAQAotVGhpcyB0ZXN0IGNyZWF0ZXMgYW4gb2JqZWN0IHN0b3JlIHRo
ZW4gcG9wdWxhdGVzIGl0LCB0aGVuIGNvbW1pdHMgdGhhdCB0cmFuc2FjdGlvbi48YnI+Ci1JdCB0
aGVuIGRlbGV0ZXMgaXQsIGJ1dCBhYm9ydHMgdGhhdCB0cmFuc2FjdGlvbi48YnI+Ci1GaW5hbGx5
IGl0IGNoZWNrcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBmcm9tIHN0ZXAgMSBpcyB0aGVyZSBh
cyBleHBlY3RlZC48YnI+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUiKTsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQot
Ci12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiRGVsZXRlT2JqZWN0
U3RvcmUxRGF0YWJhc2UiLCAxKTsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAg
b2JqZWN0U3RvcmUucHV0KCJBSCBBSCBBSCBBSCBBSCIsIGkgKyAiIHB1dHMiKTsKLQotICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
YWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAg
ZGF0YWJhc2UuY2xvc2UoKTsKLSAgICAgICAgY29udGludWVUZXN0MSgpOwotICAgIH0KLQotICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBnZXRDaGVja2VyKGV2ZW50KSB7Ci0gICAgYWxlcnQoIlZhbHVlIGdvdHRlbiB3YXMgIiArIGV2
ZW50LnRhcmdldC5yZXN1bHQpOwotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKLXsKLSAg
ICB2YXIgb3BlblJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRlbGV0ZU9iamVjdFN0
b3JlMURhdGFiYXNlIiwgMik7Ci0KLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlJlcXVlc3QgZXJyb3IgLSAiICsgZXZlbnQpOwotICAg
IH0KLSAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAg
ICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgc3VjY2VzcyAtICIgKyBl
dmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICBvcGVuUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVy
c2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLSAgICAgICAgdmFyIHZlcnNpb25UcmFuc2Fj
dGlvbiA9IG9wZW5SZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgICAgICB2YXIgZGF0YWJhc2UgPSBl
dmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB2ZXJzaW9uVHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgICAgICAKLSAgICAg
ICAgYWxlcnQoIkRlbGV0aW5nIG9iamVjdCBzdG9yZSIpOyAgICAgICAgCi0gICAgICAgIGRhdGFi
YXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLQotICAgICAgICB2ZXJz
aW9uVHJhbnNhY3Rpb24uYWJvcnQoKTsKLQotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiU2Vjb25kIHZlcnNp
b24gY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0Iik7Ci0gICAgICAgICAgICBjb250aW51ZVRlc3Qy
KCk7Ci0gICAgICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAg
ICAgICAgYWxlcnQoIlNlY29uZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGNvbXBsZXRlIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAg
ICBhbGVydCgiU2Vjb25kIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGVycm9yIC0gIiArIGV2
ZW50KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MigpCi17
Ci0gICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJEZWxldGVPYmpl
Y3RTdG9yZTFEYXRhYmFzZSIsIDEpOwotCi0gICAgb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgZXJyb3IgLSAi
ICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIG9wZW5SZXF1ZXN0Lm9uYmxv
Y2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0
ZWQgYmxvY2tlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgb3Bl
blJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIlJlcXVlc3QgdW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIC0gIiArIGV2ZW50KTsKLSAgICAg
ICAgZG9uZSgpOwotICAgIH0KLQotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVj
dGlvbiAtIFN0YXJ0aW5nIGZpbmFsIHRyYW5zYWN0aW9uIik7Ci0gICAgICAgIHZhciBkYXRhYmFz
ZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFi
YXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7Ci0gICAgICAg
IHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKLSAgICAKLSAgICAgICAgdmFyIHJlcXVlc3Q7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTA7ICsraSkgewotICAgICAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChp
ICsgIiBwdXRzIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldENoZWNrZXI7
Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJGaW5hbCB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFi
b3J0Iik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJG
aW5hbCB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBhbGVydCgiRmluYWwgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIg
KyBldmVudCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci08L3Nj
cmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0
ZW9iamVjdHN0b3JlLTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJsZS1hYm9ydC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLWFi
b3J0LWV4cGVjdGVkLnR4dAppbmRleCBkZjVmMDEwLi5lZTk0MWRjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLWFib3J0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLWFib3J0
LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDEyIEBACitUaGlzIHRlc3QgYWJvcnRzIHRoZSBzYW1l
IHRyYW5zYWN0aW9uIHR3aWNlLCBtYWtpbmcgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbiBpcyB0
aHJvd24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBTEVSVDogSW5pdGlhbCB1
cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6IFNl
Y29uZCBhYm9ydCBmYWlsZWQ6IEVycm9yOiBGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJ
REJUcmFuc2FjdGlvbic6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4K
IEFMRVJUOiBJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVk
Ci1BTEVSVDogRG9uZQotVGhpcyB0ZXN0IGFib3J0cyB0aGUgc2FtZSB0cmFuc2FjdGlvbiB0d2lj
ZSwgbWFraW5nIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24gaXMgdGhyb3duLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kb3VibGUtYWJvcnQuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kb3VibGUtYWJvcnQuaHRtbAppbmRl
eCBhNTM4ODM1Li5mNjZhOGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vZG91YmxlLWFib3J0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RvdWJsZS1hYm9ydC5odG1sCkBAIC0xLDQ3ICsxLDkgQEAKLVRoaXMg
dGVzdCBhYm9ydHMgdGhlIHNhbWUgdHJhbnNhY3Rpb24gdHdpY2UsIG1ha2luZyB0aGUgYXBwcm9w
cmlhdGUgZXhjZXB0aW9uIGlzIHRocm93bi4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJE
b3VibGVBYm9ydFRlc3REYXRhYmFzZSIsIDEpOwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVk
ZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNy
ZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5hYm9ydCgpOwotICAgIHRyeSB7Ci0g
ICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5hYm9ydCgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgYWxlcnQoIlNlY29uZCBhYm9ydCBmYWlsZWQ6ICIgKyBlKTsKLSAgICB9Ci0KLSAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFs
ZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgp
OwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9kb3VibGUtYWJvcnQuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJs
ZS1vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9kb3VibGUtb3Blbi1leHBlY3RlZC50eHQKaW5kZXggMjFiOWI0MC4uOTkzMmU2NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJsZS1vcGVuLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91
YmxlLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMTAgQEAKIFRoaXMgdGVzdCBtYWtlcyBz
dXJlIHRoYXQgcXVpY2tseSBvcGVuaW5nIHRoZSBzYW1lIGRhdGFiYXNlIG11bHRpcGxlIHRpbWVz
IGlzIHN1Y2Nlc3NmdWwgd2l0aG91dCB0aGUgYmFja2VuZCBBU1NFUlRpbmcgb3IgY3Jhc2hpbmcu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBTZWNvbmQgcmVxdWVzdCBkb25lCi1k
b25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJsZS1v
cGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLW9w
ZW4uaHRtbAppbmRleCBjOGMxZjBmLi5kMjY4MzY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZG91YmxlLW9wZW4uaHRtbApAQCAtMSwzOCArMSwx
MCBAQAotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBxdWlja2x5IG9wZW5pbmcgdGhlIHNhbWUg
ZGF0YWJhc2UgbXVsdGlwbGUgdGltZXMgaXMgc3VjY2Vzc2Z1bCB3aXRob3V0IHRoZSBiYWNrZW5k
IEFTU0VSVGluZyBvciBjcmFzaGluZy48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNj
cmlwdD4KLQotZnVuY3Rpb24gbG9nKG1zZykKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKLX0KLQotZnVuY3Rpb24gZG9u
ZSgpCi17Ci0gICAgbG9nKCJkb25lIik7Ci0gICAgaWYgKHRlc3RSdW5uZXIpCi0gICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1pZiAodGVzdFJ1bm5lcikgewotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQot
Ci12YXIgcmVxMSA9IGluZGV4ZWREQi5vcGVuKCJ0ZXN0REIiKTsKLXJlcTEub25lcnJvciA9IGZ1
bmN0aW9uKCkgewotICAgIGxvZygiRmlyc3QgcmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIik7Ci0g
ICAgZG9uZSgpOwotfQotCi12YXIgcmVxMiA9IGluZGV4ZWREQi5vcGVuKCJ0ZXN0REIiKTsKLXJl
cTIub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgbG9nKCJTZWNvbmQgcmVxdWVzdCBkb25l
Iik7Ci0gICAgZG9uZSgpOwotfQotcmVxMi5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgbG9n
KCJTZWNvbmQgcmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIik7Ci0gICAgZG9uZSgpOwotfQotCi08
L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZG91YmxlLW9wZW4uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1pbmRleC1mYWlsdXJlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWlu
ZGV4LWZhaWx1cmVzLWV4cGVjdGVkLnR4dAppbmRleCAyYjZlZGM5Li5mMzVhMGJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWluZGV4LWZhaWx1
cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vZ2V0LWluZGV4LWZhaWx1cmVzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMg
dGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5n
IElEQk9iamVjdFN0b3JlLmluZGV4KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAx
CiBJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQogR290
IGFuIGluZGV4IGFzIGV4cGVjdGVkOiBbb2JqZWN0IElEQkluZGV4XQpAQCAtOCw1ICsxMiw3IEBA
IHJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlCiBTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9s
ZCB2ZXJzaW9uIC0gMSBOZXcgdmVyc2lvbiAtIDIKIEZhaWxlZCB0byBnZXQgYW4gaW5kZXggZnJv
bSBhIGRlbGV0ZWQgb2JqZWN0IHN0b3JlCiBTZWNvbmQgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biBjb21wbGV0ZQotRG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9nZXQtaW5kZXgtZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9nZXQtaW5kZXgtZmFpbHVyZXMuaHRtbAppbmRleCBkYTBjZDc1Li41OWUzNmY4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWlu
ZGV4LWZhaWx1cmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2dldC1pbmRleC1mYWlsdXJlcy5odG1sCkBAIC0xLDEyMCArMSwxMCBAQAotVGhpcyB0ZXN0
cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURC
T2JqZWN0U3RvcmUuaW5kZXgoKS48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlw
dD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUo
KQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQot
ewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERC
Lm9wZW4oIklEQk9iamVjdFN0b3JlR2V0SW5kZXhGYWlsdXJlc0RhdGFiYXNlIiwgMSk7Ci12YXIg
ZGF0YWJhc2U7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rp
b247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIHZhciBvYmplY3RT
dG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAg
ICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4IiwgImZvbyIpOwotICAgIAotICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
bG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFs
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBj
b250aW51ZVRlc3QxKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKLXsKLSAgICB2YXIg
dHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJl
YWRvbmx5Iik7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
IlRlc3RPYmplY3RTdG9yZSIpOwotCi0gICAgdmFyIGluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgo
IlRlc3RJbmRleCIpOwotICAgIGxvZygiR290IGFuIGluZGV4IGFzIGV4cGVjdGVkOiAiICsgaW5k
ZXgpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgb2JqZWN0U3RvcmUuaW5kZXgobnVsbCk7Ci0gICAg
fSBjYXRjaChlKSB7Ci0gICAgICAgIGxvZygiRmFpbGVkIHRvIGdldCBhbiBpbmRleCB3aXRoIGEg
bnVsbCBuYW1lIik7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgb2JqZWN0U3RvcmUuaW5k
ZXgoIkRvZXNOb3RFeGlzdGRleCIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZh
aWxlZCB0byBnZXQgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0Iik7Ci0gICAgfQotCi0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVh
ZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIgKyBldmVudCk7Ci0gICAgICAgIGRv
bmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAg
ICAgICBjb250aW51ZVRlc3QyKCk7Ci0gICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgfQot
Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxv
ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQotewotICAg
IHZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUdldEluZGV4RmFpbHVyZXNEYXRhYmFzZSIsIDIpOwotICAgIGNyZWF0ZVJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJTZWNvbmQgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgICAgIHZhciB2ZXJzaW9uVHJhbnNh
Y3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgICAgICB2YXIgZGF0YWJhc2Ug
PSBldmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB2ZXJzaW9u
VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgICAgICBkYXRh
YmFzZS5kZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIAotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUuaW5kZXgoIlRlc3RJbmRleCIpOwot
ICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGdldCBhbiBp
bmRleCBmcm9tIGEgZGVsZXRlZCBvYmplY3Qgc3RvcmUiKTsKLSAgICAgICAgfSAgICAgICAgCi0g
ICAgICAgICAgICAKLSAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICAgICAgbG9nKCJTZWNvbmQgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgICAgIGxvZygiU2Vjb25kIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
Y29tcGxldGUiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAg
IGxvZygiU2Vjb25kIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIg
KyBldmVudCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLTwv
c2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9n
ZXQtaW5kZXgtZmFpbHVyZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtl
eXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCA3YTQ3Zjc2Li43YzUzNTc4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJh
bmdlLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBleGVyY2lzZXMgSURC
T2JqZWN0U3RvcmUuZ2V0KCkgd2l0aCBhbiBJREJLZXlSYW5nZSBhcyB0aGUgcGFyYW1ldGVyLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IEluaXRpYWwgdXBncmFkZSBu
ZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIEFMRVJUOiBJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQogQUxFUlQ6IFN1Y2Nlc3Mg
Z2V0dGluZyBrZXlSYW5nZSBbLTEgKENsb3NlZCksIHVuZGVmaW5lZCAoT3BlbildCkBAIC0xMjMs
NSArMTI4LDcgQEAgQUxFUlQ6IFJlc3VsdCBpcyBGbHV4IGNhcGFjaXRvcgogQUxFUlQ6IFN1Y2Nl
c3MgZ2V0dGluZyBrZXlSYW5nZSBbRnJpIE5vdiAwNCAxOTU1IDE3OjAwOjAwIEdNVC0wNzAwIChQ
RFQpIChPcGVuKSwgV2VkIE9jdCAyMSAyMDE1IDA5OjAwOjAwIEdNVC0wNzAwIChQRFQpIChPcGVu
KV0KIEFMRVJUOiBSZXN1bHQgaXMgRmlzaCB1bmRlciB0aGUgc2VhCiBBTEVSVDogcmVhZG9ubHkg
dHJhbnNhY3Rpb24gY29tcGxldGUKLUFMRVJUOiBEb25lCi1UaGlzIHRlc3QgZXhlcmNpc2VzIElE
Qk9iamVjdFN0b3JlLmdldCgpIHdpdGggYW4gSURCS2V5UmFuZ2UgYXMgdGhlIHBhcmFtZXRlci4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdl
Lmh0bWwKaW5kZXggNDI2MGZhOS4uNDkzYzNhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9nZXQta2V5cmFuZ2UuaHRtbApAQCAtMSwxNzEgKzEs
OSBAQAotVGhpcyB0ZXN0IGV4ZXJjaXNlcyBJREJPYmplY3RTdG9yZS5nZXQoKSB3aXRoIGFuIElE
QktleVJhbmdlIGFzIHRoZSBwYXJhbWV0ZXIuCi08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUi
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Blbigi
R2V0S2V5UmFuZ2VEYXRhYmFzZSIsIDEpOwotdmFyIGRhdGFiYXNlOwotCi12YXIgZGF0ZTEgPSBu
ZXcgRGF0ZSgiMTk1NS0xMS0wNVQwMDowMDowMCIpOwotdmFyIGRhdGUyID0gbmV3IERhdGUoIjE5
NTUtMTEtMTJUMTg6MDA6MDAiKTsKLXZhciBkYXRlMyA9IG5ldyBEYXRlKCIyMDE1LTEwLTIxVDE2
OjAwOjAwIik7Ci0gICAgCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1Zl
cnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJh
bnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIHZhciBv
YmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUi
KTsKLQotICAgIG9iamVjdFN0b3JlLnB1dCgiRmx1eCBjYXBhY2l0b3IiLCBkYXRlMSk7Ci0gICAg
b2JqZWN0U3RvcmUucHV0KCJGaXNoIHVuZGVyIHRoZSBzZWEiLCBkYXRlMik7Ci0gICAgb2JqZWN0
U3RvcmUucHV0KCJIb3ZlcmJvYXJkcyIsIGRhdGUzKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpCi0gICAgICAgIG9iamVjdFN0b3JlLnB1dCgiXCIiICsgaSArICJcIiIsIGkp
OwotCi0gICAgb2JqZWN0U3RvcmUucHV0KCJQb3NJbmYiLCBJbmZpbml0eSk7Ci0gICAgb2JqZWN0
U3RvcmUucHV0KCJOZWdJbmYiLCAtSW5maW5pdHkpOwotCi0gICAgb2JqZWN0U3RvcmUucHV0KCJB
IiwgIkEiKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoIkFzIiwgIkFzIik7Ci0gICAgb2JqZWN0U3Rv
cmUucHV0KCJBUyIsICJBUyIpOwotICAgIG9iamVjdFN0b3JlLnB1dCgiYSIsICJhIik7Ci0KLSAg
ICBvYmplY3RTdG9yZS5wdXQoImFycmF5IDEiLCBbMSwgImhlbGxvIl0pOwotICAgIG9iamVjdFN0
b3JlLnB1dCgiYXJyYXkgMiIsIFsyLCAiZ29vZGJ5ZSJdKTsKLSAgICBvYmplY3RTdG9yZS5wdXQo
ImFycmF5IDMiLCBbXSk7Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAg
IH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKLSAgICB9Ci0KLSAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFs
ZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotdmFyIG9iamVj
dFN0b3JlOwotCi1mdW5jdGlvbiB0ZXN0R2V0KGtleVJhbmdlKSB7Ci0gICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5nZXQoa2V5UmFuZ2UpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgYWxlcnQoIlN1Y2Nlc3MgZ2V0dGluZyBrZXlSYW5nZSBb
IiArIGtleVJhbmdlLmxvd2VyICsgIiAoIiArIChrZXlSYW5nZS5sb3dlck9wZW4gPyAiT3BlbiIg
OiAiQ2xvc2VkIikgKyAiKSwgIiArIGtleVJhbmdlLnVwcGVyICsgIiAoIiArIChrZXlSYW5nZS51
cHBlck9wZW4gPyAiT3BlbiIgOiAiQ2xvc2VkIikgKyAiKV0iKTsKLSAgICAgICAgYWxlcnQoIlJl
c3VsdCBpcyAiICsgcmVxdWVzdC5yZXN1bHQpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBlcnJvciBnZXR0
aW5nIGtleVJhbmdlIFsiICsga2V5UmFuZ2UubG93ZXIgKyAiICgiICsga2V5UmFuZ2UubG93ZXJP
cGVuICsgIiksICIgKyBrZXlSYW5nZS51cHBlciArICIgKCIgKyBrZXlSYW5nZS51cHBlck9wZW4g
KyAiKV0iKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZh
ciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAi
cmVhZG9ubHkiKTsKLSAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKLQotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgt
MSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtMSwgdHJ1ZSkpOwotICAg
IHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSk7Ci0gICAgdGVzdEdldChJREJLZXlS
YW5nZS5sb3dlckJvdW5kKDAsIHRydWUpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoMC4xKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5sb3dlckJvdW5kKDAuMSwgdHJ1
ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCg5OSkpOwotICAgIHRlc3RH
ZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCg5OSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCg5OS4xKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5sb3dlckJv
dW5kKDk5LjEsIHRydWUpKTsKLSAgICAKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLnVwcGVyQm91
bmQoMTAwKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS51cHBlckJvdW5kKDEwMCwgdHJ1ZSkp
OwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OSkpOwotICAgIHRlc3RHZXQo
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFu
Z2UudXBwZXJCb3VuZCg5OC45OTk5OSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCg5OC45OTk5OSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCg5OCkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OCwgdHJ1ZSkpOwot
ICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgwKSk7Ci0gICAgdGVzdEdldChJREJL
ZXlSYW5nZS51cHBlckJvdW5kKDAsIHRydWUpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLnVw
cGVyQm91bmQoLTAuMSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgtMC4x
LCB0cnVlKSk7Ci0gICAgCi0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCgyLjUsIDMuNSkp
OwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoLTAuNSwgMC41KSk7Ci0gICAgdGVzdEdl
dChJREJLZXlSYW5nZS5ib3VuZCg5OC41LCA5OS41KSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5n
ZS5ib3VuZCgtMSwgMCkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoLTEsIDAsIHRy
dWUpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKC0xLCAwLCBmYWxzZSwgdHJ1ZSkp
OwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoLTEsIDAsIHRydWUsIHRydWUpKTsKLSAg
ICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKDMsIDQpKTsKLSAgICB0ZXN0R2V0KElEQktleVJh
bmdlLmJvdW5kKDMsIDQsIHRydWUpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKDMs
IDQsIGZhbHNlLCB0cnVlKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCgzLCA0LCB0
cnVlLCB0cnVlKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCg5OSwgMTAwKSk7Ci0g
ICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCg5OSwgMTAwLCB0cnVlKSk7Ci0gICAgdGVzdEdl
dChJREJLZXlSYW5nZS5ib3VuZCg5OSwgMTAwLCBmYWxzZSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQo
SURCS2V5UmFuZ2UuYm91bmQoOTksIDEwMCwgdHJ1ZSwgdHJ1ZSkpOwotCi0gICAgdGVzdEdldChJ
REJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgImEiKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5n
ZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVlKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5i
b3VuZChJbmZpbml0eSwgImEiLCBmYWxzZSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFu
Z2UuYm91bmQoSW5maW5pdHksICJhIiwgdHJ1ZSwgdHJ1ZSkpOwotCi0gICAgdGVzdEdldChJREJL
ZXlSYW5nZS5ib3VuZCgiQVMiLCAiYSIpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5k
KCJBUyIsICJhIiwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoIkFTIiwg
ImEiLCBmYWxzZSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoIkFTIiwg
ImEiLCB0cnVlLCB0cnVlKSk7Ci0gICAgCi0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJ
bmZpbml0eSwgW10pKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCBb
XSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksIFtdLCBm
YWxzZSwgdHJ1ZSkpOwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksIFtd
LCB0cnVlLCB0cnVlKSk7Ci0KLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5
LCAiYSIpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRy
dWUpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIGZhbHNl
LCB0cnVlKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCB0
cnVlLCB0cnVlKSk7Ci0KLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAi
YSIpKTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUp
KTsKLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIGZhbHNlLCB0
cnVlKSk7Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVl
LCB0cnVlKSk7Ci0KLSAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKGRhdGUxLCBkYXRlMykp
OwotICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoZGF0ZTEsIGRhdGUzLCB0cnVlKSk7Ci0g
ICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChkYXRlMSwgZGF0ZTMsIGZhbHNlLCB0cnVlKSk7
Ci0gICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChkYXRlMSwgZGF0ZTMsIHRydWUsIHRydWUp
KTsKLSAgICAKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgYWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZl
bnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlv
biBjb21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24u
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAg
IH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9nZXQta2V5cmFuZ2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNl
LWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWls
dXJlcy1leHBlY3RlZC50eHQKaW5kZXggMmQyNGFmNC4uOTUwZDQwZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVj
dHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsOCBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVy
ZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCRGF0YWJhc2UuZGVsZXRlT2JqZWN0
U3RvcmUoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IEluaXRpYWwg
dXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIEFMRVJUOiBJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQogQUxFUlQ6
IHJlYWR3cml0ZSBwdXQgc3VjY2VzcyAtIGFib3V0IHRvIHRyeSB0byBkZWxldGUgYW4gb2JqZWN0
c3RvcmUKQEAgLTcsNSArMTIsNyBAQCBBTEVSVDogU2Vjb25kIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtIDEgTmV3IHZlcnNpb24gLSAyCiBBTEVSVDogRmFpbGVkIHRvIGRlbGV0ZU9iamVj
dFN0b3JlIHdpdGggYSBub24tZXhpc3RlbnQgb2JqZWN0c3RvcmUgLSBFcnJvcjogRmFpbGVkIHRv
IGV4ZWN1dGUgJ2RlbGV0ZU9iamVjdFN0b3JlJyBvbiAnSURCRGF0YWJhc2UnOiBUaGUgc3BlY2lm
aWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLgogQUxFUlQ6IEZhaWxlZCB0byBkZWxldGVP
YmplY3RTdG9yZSB3aXRoIGFuIGluLXByb2dyZXNzIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
dGhhdCBpcyBpbmFjdGl2ZSAtIEVycm9yOiBBIHJlcXVlc3Qgd2FzIHBsYWNlZCBhZ2FpbnN0IGEg
dHJhbnNhY3Rpb24gd2hpY2ggaXMgZWl0aGVyIGN1cnJlbnRseSBub3QgYWN0aXZlLCBvciB3aGlj
aCBpcyBmaW5pc2hlZC4KIEFMRVJUOiBTZWNvbmQgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24g
Y29tcGxldGUKLUFMRVJUOiBEb25lCi1UaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0
aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJEYXRhYmFzZS5kZWxldGVPYmplY3RTdG9y
ZSgpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFi
YXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMu
aHRtbAppbmRleCBkODc4ZDNkLi5lYzcxM2Q4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVy
ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0
YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbApAQCAtMSwxNDQgKzEsOSBAQAot
VGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNh
bGxpbmcgSURCRGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoKQotPHNjcmlwdD4KLQotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGFs
ZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhl
ZERCLm9wZW4oIklEQkRhdGFiYXNlRGVsZXRlT2JqZWN0U3RvcmVGYWlsdXJlc0RhdGFiYXNlIiwg
MSk7Ci12YXIgZGF0YWJhc2U7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZl
cnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQu
bmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVz
dC50cmFuc2FjdGlvbjsKLSAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAg
dmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7
Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7
Ci0gICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50
KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MSgp
Ci17Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmpl
Y3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoImJheiIsICJmb28iKTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgcHV0IHN1Y2Nlc3MgLSBhYm91dCB0
byB0cnkgdG8gZGVsZXRlIGFuIG9iamVjdHN0b3JlIik7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBkYXRhYmFzZS5kZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAg
ICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBkZWxldGVPYmpl
Y3RTdG9yZSB3aXRob3V0IGEgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiAtICIgKyBlKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICAKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAg
IGNvbnRpbnVlVGVzdDIoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gY29udGludWVUZXN0MigpCi17Ci0gICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKCJJREJEYXRhYmFzZURlbGV0ZU9iamVjdFN0b3JlRmFpbHVyZXNEYXRhYmFz
ZSIsIDIpOwotCi0gICAgb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotICAgIG9wZW5SZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgYmxvY2tlZCAtICIg
KyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgb3BlblJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3Rl
ZCBzdWNjZXNzIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIG9w
ZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFs
ZXJ0KCJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZl
cnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotICAgIAotICAg
ICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gb3BlblJlcXVlc3QudHJhbnNhY3Rpb247Ci0g
ICAgICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLQotICAgICAgICB0cnkgewot
ICAgICAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoIk5vbmV4aXN0ZW50T2JqZWN0
U3RvcmUiKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVk
IHRvIGRlbGV0ZU9iamVjdFN0b3JlIHdpdGggYSBub24tZXhpc3RlbnQgb2JqZWN0c3RvcmUgLSAi
ICsgZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRo
IGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGlt
ZW91dCB0byBmaXJlLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB2ZXJzaW9uVHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgICAgICB2YXIgY2FuRmluaXNo
ID0gZmFsc2U7Ci0gICAgICAgIHZhciBzcGluR2V0ID0gZnVuY3Rpb24oKSB7IAotICAgICAgICAg
ICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNhbkZpbmlzaCkKLSAgICAgICAgICAgICAgICAgICAgc3BpbkdldCgp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHNwaW5HZXQoKTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIEFmdGVyIHRoZSB2ZXJzaW9uQ2hhbmdlIHRyYW5zYWN0aW9uIGJlY29tZXMg
aW5hY3RpdmUsIGJ1dCB3aGlsZSBpdCdzIHN0aWxsIGluLXByb2dyZXNzLCB0cnkgdG8gZGVsZXRl
IHRoZSBvYmplY3RzdG9yZQotICAgICAgICB2YXIgdHJ5SW5hY3RpdmVEZWxldGUgPSBmdW5jdGlv
bigpIAotICAgICAgICB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGRhdGFi
YXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICAgICAgICAgIH0g
Y2F0Y2goZSkgewotICAgICAgICAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gZGVsZXRlT2JqZWN0
U3RvcmUgd2l0aCBhbiBpbi1wcm9ncmVzcyB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHRoYXQg
aXMgaW5hY3RpdmUgLSAiICsgZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYW5GaW5p
c2ggPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzZXRUaW1lb3V0KHRyeUlu
YWN0aXZlRGVsZXRlLCAwKTsKLQotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiU2Vjb25kIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKLSAgICAgICAgICAgIGRvbmUoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJTZWNvbmQgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgICAgIGFsZXJ0KCJTZWNvbmQgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5l
eHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS10cmFuc2FjdGlvbi1mYWlsdXJlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJh
c2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMtZXhwZWN0ZWQudHh0CmluZGV4IDUxYjExZjguLmY4Mjcw
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJk
YXRhYmFzZS10cmFuc2FjdGlvbi1mYWlsdXJlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLXRyYW5zYWN0aW9uLWZhaWx1
cmVzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdHMgc29tZSBvYnZpb3Vz
IGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQkRhdGFiYXNlLnRyYW5z
YWN0aW9uKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFMRVJUOiBVcGdyYWRl
IG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6IEZhaWxlZCB0
byBzdGFydCBhIHRyYW5zYWN0aW9uIHdoaWxlIGEgdmVyc2lvbkNoYW5nZSB0cmFuc2FjdGlvbiB3
YXMgaW4gcHJvZ3Jlc3MgLSBFcnJvcjogRmFpbGVkIHRvIGV4ZWN1dGUgJ3RyYW5zYWN0aW9uJyBv
biAnSURCRGF0YWJhc2UnOiBBIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcu
CiBBTEVSVDogdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKQEAgLTYsNSArMTEs
NyBAQCBBTEVSVDogRmFpbGVkIHRvIHN0YXJ0IGEgdHJhbnNhY3Rpb24gdG8gYSBub25leGlzdGVu
dCBvYmplY3Qgc3RvcmUgLSBFcnJvcjogRmFpbAogQUxFUlQ6IEZhaWxlZCB0byBzdGFydCBhIHRy
YW5zYWN0aW9uIHdpdGggYW4gaW52YWxpZCBtb2RlIC0gVHlwZUVycm9yOiBGYWlsZWQgdG8gZXhl
Y3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJEYXRhYmFzZSc6IFRoZSBtb2RlIHByb3ZpZGVkICgn
YmxhaGJsYWgnKSBpcyBub3Qgb25lIG9mICdyZWFkb25seScgb3IgJ3JlYWR3cml0ZScuCiBBTEVS
VDogRmFpbGVkIHRvIGV4cGxpY2l0bHkgc3RhcnQgYSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IC0gVHlwZUVycm9yOiBGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJEYXRh
YmFzZSc6IFRoZSBtb2RlIHByb3ZpZGVkICgndmVyc2lvbmNoYW5nZScpIGlzIG5vdCBvbmUgb2Yg
J3JlYWRvbmx5JyBvciAncmVhZHdyaXRlJy4KIEFMRVJUOiBGYWlsZWQgdG8gZXhwbGljaXRseSBz
dGFydCBhIHRyYW5zYWN0aW9uIHdpdGggdGhlIGNsb3NlIHBlbmRpbmcgZmxhZyBzZXQgLSBFcnJv
cjogRmFpbGVkIHRvIGV4ZWN1dGUgJ3RyYW5zYWN0aW9uJyBvbiAnSURCRGF0YWJhc2UnOiBUaGUg
ZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdHMg
c29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQkRh
dGFiYXNlLnRyYW5zYWN0aW9uKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRiZGF0YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS10cmFuc2FjdGlvbi1mYWls
dXJlcy5odG1sCmluZGV4IDY4Yjc3ODQuLjk1ODdjZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS10cmFuc2FjdGlvbi1mYWlsdXJl
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRh
YmFzZS10cmFuc2FjdGlvbi1mYWlsdXJlcy5odG1sCkBAIC0xLDkwICsxLDkgQEAKLVRoaXMgdGVz
dHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElE
QkRhdGFiYXNlLnRyYW5zYWN0aW9uKCkKLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJE
YXRhYmFzZVRyYW5zYWN0aW9uRmFpbHVyZXNEYXRhYmFzZSIpOwotdmFyIGRhdGFiYXNlOwotCi1j
cmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgYWxl
cnQoIlVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsg
IiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9u
VHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIGRhdGFiYXNlID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoImZvbyIsICJiYXIiKTsKLQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJwdXQgRkFJTEVEIC0gIiArIGV2ZW50KTsKLSAg
ICAgICAgZG9uZSgpOwotICAgIH0KLSAgICAKLSAgICB0cnkgewotICAgICAgICBkYXRhYmFzZS50
cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7Ci0gICAgfSBjYXRjaChl
KSB7Ci0gICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gc3RhcnQgYSB0cmFuc2FjdGlvbiB3aGlsZSBh
IHZlcnNpb25DaGFuZ2UgdHJhbnNhY3Rpb24gd2FzIGluIHByb2dyZXNzIC0gIiArIGUpOwotICAg
IH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgYWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0KCk7Ci0gICAgfQotCi0gICAg
dmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBh
bGVydCgidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCi17Ci0g
ICAgdHJ5IHsKLSAgICAgICAgZGF0YWJhc2UudHJhbnNhY3Rpb24oW10sICJyZWFkb25seSIpOwot
ICAgIH0gY2F0Y2goZSkgewotICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHN0YXJ0IGEgdHJhbnNh
Y3Rpb24gd2l0aCBhbiBlbXB0eSBzZXQgb2Ygb2JqZWN0IHN0b3JlcyAtICIgKyBlKTsKLSAgICB9
Ci0KLSAgICB0cnkgewotICAgICAgICBkYXRhYmFzZS50cmFuc2FjdGlvbigiTm9uZXhpc3RlbnRP
YmplY3RTdG9yZSIsICJyZWFkb25seSIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBhbGVy
dCgiRmFpbGVkIHRvIHN0YXJ0IGEgdHJhbnNhY3Rpb24gdG8gYSBub25leGlzdGVudCBvYmplY3Qg
c3RvcmUgLSAiICsgZSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGF0YWJhc2UudHJh
bnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJibGFoYmxhaCIpOwotICAgIH0gY2F0Y2goZSkg
ewotICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHN0YXJ0IGEgdHJhbnNhY3Rpb24gd2l0aCBhbiBp
bnZhbGlkIG1vZGUgLSAiICsgZSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGF0YWJh
c2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJ2ZXJzaW9uY2hhbmdlIik7Ci0gICAg
fSBjYXRjaChlKSB7Ci0gICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gZXhwbGljaXRseSBzdGFydCBh
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gLSAiICsgZSk7Ci0gICAgfQotICAgIAotICAgIHRy
eSB7Ci0gICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgIGRhdGFiYXNlLnRyYW5zYWN0
aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAg
ICAgICAgYWxlcnQoIkZhaWxlZCB0byBleHBsaWNpdGx5IHN0YXJ0IGEgdHJhbnNhY3Rpb24gd2l0
aCB0aGUgY2xvc2UgcGVuZGluZyBmbGFnIHNldCAtICIgKyBlKTsKLSAgICB9Ci0gICAgCi0gICAg
ZG9uZSgpOwotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2lkYmRhdGFiYXNlLXRyYW5zYWN0aW9uLWZhaWx1cmVzLmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJpbmRleC1wcm9wZXJ0aWVzLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1wcm9wZXJ0aWVzLWJh
c2ljLWV4cGVjdGVkLnR4dAppbmRleCBkYjBjNjk1Li40NWQyNTVlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtcHJvcGVydGllcy1iYXNp
Yy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2lkYmluZGV4LXByb3BlcnRpZXMtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsOCBAQAor
VGhpcyB0ZXN0cyBnZXR0aW5nIGJhc2ljIHByb3BlcnRpZXMgb24gYW4gSURCSW5kZXguCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6IFRlc3RJbmRleDEKIEFM
RVJUOiBbb2JqZWN0IElEQk9iamVjdFN0b3JlXQpAQCAtODUsNiArOTAsNyBAQCBBTEVSVDogW29i
amVjdCBET01TdHJpbmdMaXN0XQogQUxFUlQ6IGZhbHNlCiBBTEVSVDogZmFsc2UKIEFMRVJUOiBy
ZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdHMgZ2V0
dGluZyBiYXNpYyBwcm9wZXJ0aWVzIG9uIGFuIElEQkluZGV4LgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1wcm9wZXJ0aWVzLWJhc2ljLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtcHJvcGVydGll
cy1iYXNpYy5odG1sCmluZGV4IDMyMDE2YmEuLjczYjFmMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1wcm9wZXJ0aWVzLWJhc2ljLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LXBy
b3BlcnRpZXMtYmFzaWMuaHRtbApAQCAtMSwxMDAgKzEsMTAgQEAKLVRoaXMgdGVzdHMgZ2V0dGlu
ZyBiYXNpYyBwcm9wZXJ0aWVzIG9uIGFuIElEQkluZGV4Ljxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+
PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQot
ZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlv
biBnb2wobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWZ1bmN0aW9uIGxvZ0luZGV4KGlu
ZGV4KQotewotICAgIGFsZXJ0KGluZGV4Lm5hbWUpOwotICAgIGFsZXJ0KGluZGV4Lm9iamVjdFN0
b3JlKTsKLSAgICBhbGVydChpbmRleC5vYmplY3RTdG9yZS5uYW1lKTsKLSAgICBhbGVydChpbmRl
eC5rZXlQYXRoKTsKLSAgICBhbGVydChpbmRleC5tdWx0aUVudHJ5KTsKLSAgICBhbGVydChpbmRl
eC51bmlxdWUpOwotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Bl
bigiSURCSW5kZXhQcm9wZXJ0aWVzQmFzaWNEYXRhYmFzZSIsIDEpOwotdmFyIGRhdGFiYXNlOwot
Ci12YXIgaW5kZXhlcyA9IG5ldyBBcnJheSgpOwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVk
ZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNy
ZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVz
dWx0OwotICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKLSAgICAKLSAgICBpbmRleGVzLnB1c2gob2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoIlRlc3RJbmRleDEiLCAiZm9vIikpOwotICAgIGluZGV4ZXMucHVzaChvYmplY3RT
dG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MiIsICJmb28iLCB7IHVuaXF1ZTogZmFsc2UsIG11
bHRpRW50cnk6IGZhbHNlIH0pKTsKLSAgICBpbmRleGVzLnB1c2gob2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoIlRlc3RJbmRleDMiLCAiZm9vIiwgeyB1bmlxdWU6IHRydWUsIG11bHRpRW50cnk6IGZh
bHNlIH0pKTsKLSAgICBpbmRleGVzLnB1c2gob2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJ
bmRleDQiLCAiZm9vIiwgeyB1bmlxdWU6IGZhbHNlLCBtdWx0aUVudHJ5OiB0cnVlIH0pKTsKLSAg
ICBpbmRleGVzLnB1c2gob2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJbmRleDUiLCAiZm9v
IiwgeyB1bmlxdWU6IHRydWUsIG11bHRpRW50cnk6IHRydWUgfSkpOwotICAgIGluZGV4ZXMucHVz
aChvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NiIsIFsgImZvbyIgXSkpOwotICAg
IGluZGV4ZXMucHVzaChvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NyIsIFsgImZv
byIsICJiYXIiIF0pKTsKLQotICAgIGZvciAoaW5kZXggaW4gaW5kZXhlcykKLSAgICAgICAgbG9n
SW5kZXgoaW5kZXhlc1tpbmRleF0pOwotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBjb250aW51ZVRlc3QxKCk7Ci0gICAgfQot
Ci0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5l
eHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNl
LnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKLSAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0K
LSAgICBsb2dJbmRleChvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4MSIpKTsKLSAgICBsb2dJ
bmRleChvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4MiIpKTsKLSAgICBsb2dJbmRleChvYmpl
Y3RTdG9yZS5pbmRleCgiVGVzdEluZGV4MyIpKTsKLSAgICBsb2dJbmRleChvYmplY3RTdG9yZS5p
bmRleCgiVGVzdEluZGV4NCIpKTsKLSAgICBsb2dJbmRleChvYmplY3RTdG9yZS5pbmRleCgiVGVz
dEluZGV4NSIpKTsKLSAgICBsb2dJbmRleChvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4NiIp
KTsKLSAgICBsb2dJbmRleChvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4NyIpKTsKLQotICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgi
cmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3Nj
cmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaWRi
aW5kZXgtcHJvcGVydGllcy1iYXNpYy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0
c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQKaW5kZXggNzQ0Y2E3
Yy4uNzcxZGZlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBjcmVhdGVzIGFuIG9iamVjdCBzdG9yZSB0
aGVuIHBvcHVsYXRlcyBpdC4gSXQgdGhlbiBjbGVhcnMgaXQgYW5kIG1ha2VzIHN1cmUgaXQgaGFz
IG5vdGhpbmcgbGVmdCBpbiBpdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFM
RVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24g
LSAxCiBBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29t
cGxldGUKIEFMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbiAtIFN0YXJ0
aW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbgpAQCAtMjEsNyArMjYsNyBAQCBBTEVSVDogVmFsdWUg
Z290dGVuIHdhcyB1bmRlZmluZWQKIEFMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAog
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCiBBTEVSVDogUmVhZHdyaXRlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCi1BTEVSVDogRG9uZQotVGhpcyB0ZXN0IGNyZWF0ZXMgYW4gb2JqZWN0
IHN0b3JlIHRoZW4gcG9wdWxhdGVzIGl0LgotSXQgdGhlbiBjbGVhcnMgaXQgYW5kIG1ha2VzIHN1
cmUgaXQgaGFzIG5vdGhpbmcgbGVmdCBpbiBpdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTEuaHRtbApp
bmRleCAwZTVlZmFmLi4zZDNmMmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLmh0bWwK
QEAgLTEsMTExICsxLDkgQEAKLVRoaXMgdGVzdCBjcmVhdGVzIGFuIG9iamVjdCBzdG9yZSB0aGVu
IHBvcHVsYXRlcyBpdC48YnI+Ci1JdCB0aGVuIGNsZWFycyBpdCBhbmQgbWFrZXMgc3VyZSBpdCBo
YXMgbm90aGluZyBsZWZ0IGluIGl0Ljxicj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIp
OwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJ
REJPYmplY3RTdG9yZUNsZWFyRGF0YWJhc2UiLCAxKTsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lv
biAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24g
PSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKLSAgICB2
YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMSIpOwotICAgIHZhciByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KCJiYXIyIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjMiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOwot
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI1Iik7Ci0gICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjYiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLnB1dCgiYmFyNyIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI4
Iik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjkiKTsKLQotICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
YWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAg
Y29udGludWVUZXN0MSgpOwotICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOwotICAgIH0KLQotICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBnZXRDaGVja2VyKGV2ZW50KSB7Ci0gICAgYWxlcnQoIlZhbHVlIGdvdHRlbiB3YXMgIiArIGV2
ZW50LnRhcmdldC5yZXN1bHQpOwotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKLXsKLSAg
ICB2YXIgb3BlblJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3Jl
Q2xlYXJEYXRhYmFzZSIsIDEpOwotCi0gICAgb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsg
ZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIG9wZW5SZXF1ZXN0Lm9uYmxvY2tl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQg
YmxvY2tlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgb3BlblJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQo
IlJlcXVlc3QgdW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIC0gIiArIGV2ZW50KTsKLSAgICAgICAg
ZG9uZSgpOwotICAgIH0KLQotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlv
biAtIFN0YXJ0aW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiIpOwotICAgICAgICB2YXIgZGF0YWJh
c2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRh
YmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOwotICAgICAg
ICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0
b3JlIik7Ci0gICAgCi0gICAgICAgIHZhciByZXF1ZXN0OwotICAgICAgICBmb3IgKHZhciBpID0g
MTsgaSA8PSA5OyArK2kpIHsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQo
aSk7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldENoZWNrZXI7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jbGVhcigpOwotICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYWxlcnQo
Ik9iamVjdCBzdG9yZSBjbGVhcmVkIik7Ci0gICAgICAgICAgICB2YXIgbmV3UmVxdWVzdHM7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBuZXdSZXF1ZXN0cyA9IG9iamVjdFN0b3JlLmdldChpKTsKLSAgICAgICAgICAgICAgICBuZXdS
ZXF1ZXN0cy5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOwotICAgICAgICAgICAgfSAgICAKLSAgICAg
ICAgfQotCi0gICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
Iik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJSZWFk
d3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9y
IC0gIiArIGV2ZW50KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotICAgIH0KLX0K
LTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
aWRib2JqZWN0c3RvcmUtY2xlYXItMS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0
c3RvcmUtY2xlYXItMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi1leHBlY3RlZC50eHQKaW5kZXggZDYwMGM1
My4uZDFkOWZjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBjcmVhdGVzIGFuIG9iamVjdCBzdG9yZSB0
aGVuIHBvcHVsYXRlcyBpdCwgdGhlbiBjb21taXRzIHRoYXQgdHJhbnNhY3Rpb24uIEl0IHRoZW4g
Y2xlYXJzIGl0LCBidXQgYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uIEZpbmFsbHkgaXQgY2hlY2tz
IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGZyb20gc3RlcCAxIGlzIHN0aWxsIGluIHRoZXJlLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IEluaXRpYWwgdXBncmFkZSBu
ZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIEFMRVJUOiBJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQogQUxFUlQ6IFN1Y2Nlc3Mg
b3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRpbmcgcmVhZHdyaXRlIHRyYW5zYWN0
aW9uCkBAIC0zMiw4ICszNyw3IEBAIEFMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjcKIEFMRVJU
OiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjgKIEFMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjkKIEFM
RVJUOiBSZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLUFMRVJUOiBEb25lCi1UaGlzIHRl
c3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUgdGhlbiBwb3B1bGF0ZXMgaXQsIHRoZW4gY29tbWl0
cyB0aGF0IHRyYW5zYWN0aW9uLgotSXQgdGhlbiBjbGVhcnMgaXQsIGJ1dCBhYm9ydHMgdGhhdCB0
cmFuc2FjdGlvbi4KLUZpbmFsbHkgaXQgY2hlY2tzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGZy
b20gc3RlcCAxIGlzIHN0aWxsIGluIHRoZXJlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5odG1sCmlu
ZGV4IGJiMjU1OTYuLjk2MDk1MjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTIuaHRtbApA
QCAtMSwxNjcgKzEsOSBAQAotVGhpcyB0ZXN0IGNyZWF0ZXMgYW4gb2JqZWN0IHN0b3JlIHRoZW4g
cG9wdWxhdGVzIGl0LCB0aGVuIGNvbW1pdHMgdGhhdCB0cmFuc2FjdGlvbi48YnI+Ci1JdCB0aGVu
IGNsZWFycyBpdCwgYnV0IGFib3J0cyB0aGF0IHRyYW5zYWN0aW9uLjxicj4KLUZpbmFsbHkgaXQg
Y2hlY2tzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGZyb20gc3RlcCAxIGlzIHN0aWxsIGluIHRo
ZXJlLjxicj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQot
Ci1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBj
cmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFy
MkRhdGFiYXNlIiwgMSk7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50
cmFuc2FjdGlvbjsKLSAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAg
IHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoImJhcjEiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgi
YmFyMiIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKLSAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyNSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXI2Iik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjciKTsK
LSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyOCIpOwotICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI5Iik7Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAg
ICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGNvbnRpbnVlVGVzdDEoKTsK
LSAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50
KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZ2V0Q2hlY2tlcihldmVu
dCkgewotICAgIGFsZXJ0KCJWYWx1ZSBnb3R0ZW4gd2FzICIgKyBldmVudC50YXJnZXQucmVzdWx0
KTsKLX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MSgpCi17Ci0gICAgdmFyIG9wZW5SZXF1ZXN0
ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFyMkRhdGFiYXNlIiwg
MSk7Ci0KLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0gICAgb3BlblJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3RlZCBibG9ja2VkIC0gIiArIGV2
ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVj
dGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
Ci0gICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRpbmcgcmVh
ZHdyaXRlIHRyYW5zYWN0aW9uIik7Ci0gICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Ci0gICAgICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9u
KCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7Ci0gICAgICAgIHZhciBvYmplY3RTdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICAKLSAg
ICAgICAgdmFyIHJlcXVlc3Q7Ci0gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDk7ICsraSkg
ewotICAgICAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpKTsKLSAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmNsZWFyKCk7Ci0gICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhbGVydCgiT2JqZWN0IHN0b3JlIGNs
ZWFyZWQsIG1ha2luZyBzdXJlIGl0cyBhbGwgZ29uZS4iKTsKLSAgICAgICAgICAgIHZhciBuZXdS
ZXF1ZXN0czsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDk7ICsraSkgewotICAg
ICAgICAgICAgICAgIG5ld1JlcXVlc3RzID0gb2JqZWN0U3RvcmUuZ2V0KGkpOwotICAgICAgICAg
ICAgICAgIG5ld1JlcXVlc3RzLm9uc3VjY2VzcyA9IGdldENoZWNrZXI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFdlJ2xsIGJlIG9uIHRoZSBsYXN0IHJlcXVl
c3QgaGVyZSwgY2FuIGp1c3Qgb3ZlcnJpZGUgaXQuCi0gICAgICAgICAgICBuZXdSZXF1ZXN0cy5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgICAgIGdldENoZWNrZXIo
ZXZlbnQpOwotICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEp1c3QgZm9yIGZ1biBjbGVhciBp
dCB0d2ljZSwgd29uJ3QgY2hhbmdlIGFueXRoaW5nCi0gICAgICAgIG9iamVjdFN0b3JlLmNsZWFy
KCk7Ci0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0Iik7Ci0gICAgICAg
ICAgICBjb250aW51ZVRlc3QyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOwotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QyKCkKLXsKLSAgICB2YXIgb3BlblJlcXVl
c3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ2xlYXIyRGF0YWJhc2Ui
LCAxKTsKLQotICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKLSAgICAg
ICAgZG9uZSgpOwotICAgIH0KLSAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsg
ZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhw
ZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9
Ci0KLSAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAg
ICBhbGVydCgiU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyBm
aW5hbCB0cmFuc2FjdGlvbiIpOwotICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQu
cmVzdWx0OwotICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigi
VGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOwotICAgICAgICB2YXIgb2JqZWN0U3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgCi0gICAg
ICAgIHZhciByZXF1ZXN0OwotICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsK
LSAgICAgICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoaSk7Ci0gICAgICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldENoZWNrZXI7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJS
ZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwotICAgICAgICAgICAgZG9u
ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJS
ZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAg
ICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci08L3NjcmlwdD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWNsZWFy
LTIuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0
b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0CmluZGV4IGY4MTMzN2YuLjRjYWQ2ZjYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1j
b3VudC0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw4IEBA
CitUaGlzIHRlc3QgZXhlcmNpc2VzIHZhcmlvdXMgdXNlcyBvZiBJREJPYmplY3RTdG9yZS5jb3Vu
dCgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBTEVSVDogSW5pdGlhbCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6IENvdW50
IGlzOiAxCiBBTEVSVDogQ291bnQgaXM6IDAKQEAgLTUwLDUgKzU1LDcgQEAgQUxFUlQ6IENvdW50
IGlzOiAzCiBBTEVSVDogQ291bnQgaXM6IDMKIEFMRVJUOiBDb3VudCBpczogMQogQUxFUlQ6IElu
aXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1BTEVSVDog
RG9uZQotVGhpcyB0ZXN0IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUu
Y291bnQoKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJv
YmplY3RzdG9yZS1jb3VudC0xLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS5odG1sCmluZGV4IGNkZjk0MmQuLjdkZTkzMjQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmpl
Y3RzdG9yZS1jb3VudC0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEuaHRtbApAQCAtMSw5MiArMSw5IEBACi1UaGlz
IHRlc3QgZXhlcmNpc2VzIHZhcmlvdXMgdXNlcyBvZiBJREJPYmplY3RTdG9yZS5jb3VudCgpCi08
c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rpb24g
ZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi12YXIgY3JlYXRlUmVxdWVz
dCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3RvcmVDb3VudDFEYXRhYmFzZSIs
IDEpOwotdmFyIGRhdGFiYXNlOwotdmFyIG9iamVjdFN0b3JlOwotCi1mdW5jdGlvbiBnZXRDb3Vu
dChhcmcpCi17Ci0gICAgdmFyIHJlcXVlc3Q7Ci0gICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0g
ICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jb3VudCgpOwotICAgIGVsc2UKLSAgICAgICAg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmNvdW50KGFyZyk7Ci0gICAgCi0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgYWxlcnQoIkNvdW50IGlzOiAiICsgcmVxdWVz
dC5yZXN1bHQpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlcnJvcikg
ewotICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBlcnJvciBnZXR0aW5nIGNvdW50OiAiICsgZXJy
b3IpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBnZXRDb3VudHMoKQot
ewotICAgIGdldENvdW50KCk7Ci0gICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNikp
OyAgICAKLSAgICBnZXRDb3VudChJREJLZXlSYW5nZS5ib3VuZCgzLCA2LCB0cnVlLCBmYWxzZSkp
OyAgICAKLSAgICBnZXRDb3VudChJREJLZXlSYW5nZS5ib3VuZCgzLCA2LCBmYWxzZSwgdHJ1ZSkp
OwotICAgIGdldENvdW50KDcpOyAgICAKLX0KLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVk
OiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIg
KyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVh
dGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKLSAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKLSAgICAKLSAgICBvYmplY3RTdG9yZS5wdXQoMSwgMSk7Ci0gICAgZ2V0Q291
bnRzKCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KDIsIDIpOwotICAgIGdldENvdW50cygpOwotICAg
IG9iamVjdFN0b3JlLnB1dCgzLCAzKTsKLSAgICBnZXRDb3VudHMoKTsKLSAgICBvYmplY3RTdG9y
ZS5wdXQoNCwgNCk7Ci0gICAgZ2V0Q291bnRzKCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KDUsIDUp
OwotICAgIGdldENvdW50cygpOwotICAgIG9iamVjdFN0b3JlLnB1dCg2LCA2KTsKLSAgICBnZXRD
b3VudHMoKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoNywgNyk7Ci0gICAgZ2V0Q291bnRzKCk7Ci0g
ICAgb2JqZWN0U3RvcmUucHV0KDgsIDgpOwotICAgIGdldENvdW50cygpOwotICAgIG9iamVjdFN0
b3JlLnB1dCg5LCA5KTsKLSAgICBnZXRDb3VudHMoKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoMTAs
IDEwKTsKLSAgICBnZXRDb3VudHMoKTsKLQotICAgIC8vIEZJWE1FOiBPbmNlIG9iamVjdFN0b3Jl
LmRlbGV0ZSgpIGlzIGltcGxlbWVudGVkLCBhbHNvIHRlc3QgY291bnRzIGFmdGVyIGRlbGV0aW5n
IHByZXZpb3VzIHJlY29yZHMuCi0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwotICAgICAgICBkb25lKCk7
Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQo
IkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJy
b3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lkYm9iamVjdHN0b3Jl
LWNvdW50LTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZh
aWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWlsdXJlcy1leHBlY3RlZC50eHQKaW5kZXggMDgzYTY4
MC4uNTkyODkyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFp
bHVyZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTUgQEAKK1RoaXMgdGVzdHMgc29tZSBvYnZp
b3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQk9iamVjdFN0b3Jl
LmNvdW50KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBBTEVSVDogSW5pdGlh
bCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogQUxFUlQ6
IEZhaWxlZCB0byBjb3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQg
a2V5CiBBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlIHRoYXQn
cyBiZWVuIGRlbGV0ZWQKIEFMRVJUOiBJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBjb21wbGV0ZQogQUxFUlQ6IEZhaWxlZCB0byBjb3VudCByZWNvcmRzIGluIG9iamVj
dCBzdG9yZSB3aGlsZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZQogQUxFUlQ6IHJlYWRvbmx5IHRy
YW5zYWN0aW9uIGNvbXBsZXRlCi1BTEVSVDogRG9uZQotVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMg
ZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUuY291
bnQoKS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWlsdXJlcy5odG1sCmluZGV4IDNhY2Nl
MTYuLmQyNGIzZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWlsdXJlcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWlsdXJlcy5o
dG1sCkBAIC0xLDEwNSArMSw5IEBACi1UaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0
aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJPYmplY3RTdG9yZS5jb3VudCgpLgotPHNj
cmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRv
bmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3Qg
PSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ291bnRGYWlsdXJlc0RhdGFi
YXNlIiwgMSk7Ci12YXIgZGF0YWJhc2U7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDog
T2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsg
ZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRl
UmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAi
Zm9vIik7Ci0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0
cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUuY291bnQoTmFOKTsKLSAgICAgICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2Jq
ZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBrZXkiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAg
ICAgICAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG9iamVjdFN0b3JlLmNvdW50KCk7Ci0g
ICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBjb3VudCBy
ZWNvcmRzIGluIG9iamVjdCBzdG9yZSB0aGF0J3MgYmVlbiBkZWxldGVkIik7Ci0gICAgICAgIH0g
Ci0KLSAgICAgICAgLy8gUmVjcmVhdGUgdGhlIG9iamVjdHN0b3JlIGJlY2F1c2Ugd2UnbGwgbmVl
ZCBpdCBpbiBwaGFzZSAyLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIG9iamVjdFN0b3JlLnB1
dCgiYmFyIiwgImZvbyIpOyAgICAKLSAgICB9Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdy
YWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBjb250aW51ZVRlc3QxKCk7
Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9
IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKLSAg
ICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0
b3JlIik7Ci0KLSAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0
byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgot
ICAgIHZhciBjYW5GaW5pc2ggPSBmYWxzZTsKLSAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkg
eyAKLSAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGlmICghY2FuRmluaXNoKQotICAgICAgICAgICAgICAgIHNwaW5HZXQo
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzcGluR2V0KCk7Ci0gICAgCi0gICAgdmFyIGdldFdo
aWxlSW5hY3RpdmUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG9i
amVjdFN0b3JlLmNvdW50KCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgYWxl
cnQoIkZhaWxlZCB0byBjb3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSB3aGlsZSB0cmFuc2Fj
dGlvbiBpcyBpbmFjdGl2ZSIpOwotICAgICAgICB9Ci0gICAgICAgIGNhbkZpbmlzaCA9IHRydWU7
Ci0gICAgfQotICAgIAotICAgIHNldFRpbWVvdXQoZ2V0V2hpbGVJbmFjdGl2ZSwgMCk7Ci0gICAg
Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFs
ZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKLSAg
ICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxl
dGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0K
LTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
aWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWRlbGV0ZS0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMS1leHBlY3RlZC50eHQKaW5k
ZXggZmMzNDMxYi4uMWMxOGYzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0xLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRl
LTEtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsOCBAQAogVGhpcyB0ZXN0IGV4ZXJjaXNlcyB2YXJp
b3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUuZGVsZXRlKCkKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKIEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcg
dmVyc2lvbiAtIDEKIENvdW50IGlzIDExMwogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gY29tcGxldGUKQEAgLTIxLDUgKzI1LDcgQEAgQ291bnQgaXMgNwogRGVsZXRl
ZCAiW29iamVjdCBJREJLZXlSYW5nZV0iLCBhbmQgdGhlcmUgc2hvdWxkIG5vdyBiZSAzIGxlc3Mg
dGhpbmdzIHRvdGFsLgogQ291bnQgaXMgNAogcmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Ci1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWRlbGV0ZS0xLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTEuaHRtbAppbmRleCAxYTEyNjE3Li4zMGNhOWM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtZGVsZXRlLTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTEuaHRtbApAQCAtMSwxNDAgKzEsMTAgQEAK
LVRoaXMgdGVzdCBleGVyY2lzZXMgdmFyaW91cyB1c2VzIG9mIElEQk9iamVjdFN0b3JlLmRlbGV0
ZSgpPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Ci19Ci0KLWZ1bmN0aW9uIGxvZ0NvdW50KCkKLXsKLSAgICB2YXIgcmVxID0gb2JqZWN0
U3RvcmUuY291bnQoKTsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IAotICAgICAg
ICBsb2coIkNvdW50IGlzICIgKyByZXEucmVzdWx0KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRv
bmUoKQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZURlbGV0ZTFEYXRhYmFzZSIsIDEp
OwotdmFyIGRhdGFiYXNlOwotdmFyIG9iamVjdFN0b3JlOwotCi12YXIgZGF0ZTEgPSBuZXcgRGF0
ZSgiMTk5OS0xMi0yOFQyMzowMDowMCIpOwotdmFyIGRhdGUyID0gbmV3IERhdGUoIjE5OTktMTIt
MjlUMjM6MDA6MDAiKTsKLXZhciBkYXRlMyA9IG5ldyBEYXRlKCIxOTk5LTEyLTMwVDIzOjAwOjAw
Iik7Ci12YXIgZGF0ZTQgPSBuZXcgRGF0ZSgiMTk5OS0xMi0zMVQyMzowMDowMCIpOwotdmFyIGRh
dGU1ID0gbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAiKTsKLXZhciBkYXRlNiA9IG5ldyBE
YXRlKCIyMDAwLTAxLTAyVDAwOjAwOjAwIik7Ci12YXIgZGF0ZTcgPSBuZXcgRGF0ZSgiMjAwMC0w
MS0wM1QwMDowMDowMCIpOwotdmFyIGRhdGU4ID0gbmV3IERhdGUoIjIwMDAtMDEtMDRUMDA6MDA6
MDAiKTsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkg
ewotICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZl
bnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0K
LSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsK
LSAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgb2JqZWN0U3RvcmUgPSBk
YXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgCi0gICAg
Ly8gSnVzdCBmb3IgdGhlIGhlY2sgb2YgaXQuCi0gICAgb2JqZWN0U3RvcmUuZGVsZXRlKCJmb28i
KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoImJvbyIsICJmb28iKTsKLSAgICBvYmplY3RTdG9yZS5k
ZWxldGUoImZvbyIpOwotCi0gICAgb2JqZWN0U3RvcmUucHV0KCJib28iLCAiZm9vIik7Ci0gICAg
b2JqZWN0U3RvcmUucHV0KCJib3AiLCAiZm9wIik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KCJib3Ei
LCAiZm9xIik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KCJib3IiLCAiZm9yIik7Ci0gICAgb2JqZWN0
U3RvcmUucHV0KCJib3MiLCAiZm9zIik7Ci0gICAgCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDA7ICsraSkKLSAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJudW1iZXIgIiArIGksIGkpOwotCi0g
ICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDEiLCBkYXRlMSk7Ci0gICAgb2JqZWN0U3RvcmUucHV0
KCJkYXRlIDIiLCBkYXRlMik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDMiLCBkYXRlMyk7
Ci0gICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDQiLCBkYXRlNCk7Ci0gICAgb2JqZWN0U3RvcmUu
cHV0KCJkYXRlIDUiLCBkYXRlNSk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDYiLCBkYXRl
Nik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDciLCBkYXRlNyk7Ci0gICAgb2JqZWN0U3Rv
cmUucHV0KCJkYXRlIDgiLCBkYXRlOCk7Ci0KLSAgICBsb2dDb3VudCgpOwotCi0gICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIklu
aXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQi
KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBjb250aW51ZVRl
c3QxKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKLXsgICAKLSAgICB2YXIgdHJhbnNh
Y3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0
ZSIpOwotICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmpl
Y3RTdG9yZSIpOwotCi0gICAgLy8gVGhlIHBhaXJzIG9mIHRoaW5ncyBpbiB0aGUgYXJyYXkgYXJl
IHRoZSB0aGluZ3MgdG8gZGVsZXRlIGZvbGxvd2VkIGJ5IHRoZSBleHBlY3RlZCBkZWNyZWFzZSBp
biB0aGUgdG90YWwgY291bnQgb2Ygb2JqZWN0cy4KLSAgICB2YXIgdGhpbmdzVG9EZWxldGUgPSBb
Ci0gICAgICAgIGRhdGU4LCAxLAotICAgICAgICBkYXRlOCwgMCwgCi0gICAgICAgICJiYWx5aG9v
IiwgMCwgCi0gICAgICAgIElEQktleVJhbmdlLmJvdW5kKGRhdGU2LCBkYXRlNywgdHJ1ZSwgdHJ1
ZSksIDAsCi0gICAgICAgIElEQktleVJhbmdlLmJvdW5kKGRhdGU2LCBkYXRlNywgdHJ1ZSksIDEs
Ci0gICAgICAgIElEQktleVJhbmdlLmJvdW5kKGRhdGU1LCBkYXRlNiwgZmFsc2UsIHRydWUpLCAx
LAotICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChkYXRlMSwgZGF0ZTYpLCA1LAotICAgICAgICBJ
REJLZXlSYW5nZS5ib3VuZCgxLCA5OCksIDk4LCAKLSAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQo
ImZvbyIsICJmb3MiLCB0cnVlLCB0cnVlKSwgMwotICAgIF07Ci0gICAgdmFyIGN1cnJlbnRUaGlu
ZyA9IDA7Ci0gICAgCi0gICAgdmFyIHJ1bkRlbGV0ZVRlc3RzID0gZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGluZ3NUb0RlbGV0ZVtjdXJyZW50VGhpbmddKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKHRoaW5nc1RvRGVs
ZXRlW2N1cnJlbnRUaGluZ10pLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
bG9nKCJEZWxldGVkIFwiIiArIHRoaW5nc1RvRGVsZXRlW2N1cnJlbnRUaGluZ10gKyAiXCIsIGFu
ZCB0aGVyZSBzaG91bGQgbm93IGJlICIgKyB0aGluZ3NUb0RlbGV0ZVtjdXJyZW50VGhpbmcgKyAx
XSArICIgbGVzcyB0aGluZ3MgdG90YWwuIik7Ci0gICAgICAgICAgICBsb2dDb3VudCgpOwotICAg
ICAgICAgICAgY3VycmVudFRoaW5nICs9IDI7Ci0gICAgICAgICAgICBydW5EZWxldGVUZXN0cygp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJ1bkRlbGV0ZVRlc3RzKCk7Ci0gICAgCi0gICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZHdy
aXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOwotICAgICAgICBkb25l
KCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBl
cnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0Pgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9pZGJvYmplY3Rz
dG9yZS1kZWxldGUtMS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVs
ZXRlLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0yLWV4cGVjdGVkLnR4dAppbmRleCAzZWVmZGVhLi42NzEx
MThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
b2JqZWN0c3RvcmUtZGVsZXRlLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMi1leHBlY3RlZC50eHQK
QEAgLTEsOSArMSwxNSBAQAogVGhpcyB0ZXN0IGV4ZXJjaXNlcyBJREJPYmplY3RTdG9yZS5kZWxl
dGUoKSBmb2xsb3dlZCBieSBhbiBhYm9ydCB0byBtYWtlIHN1cmUgdGhlIGRlbGV0ZSBpcyB1bi1k
b25lLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG5l
ZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKIEFmdGVyIGRlbGV0ZSwgcmVjb3JkIGZv
ciAiZm9vIiBoYXMgdmFsdWU6IHVuZGVmaW5lZAogcmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0
ZWQKIFJlY29yZCBmb3IgImZvbyIgaGFzIGZpbmFsIHZhbHVlOiBiYXIKIHJlYWRvbmx5IHRyYW5z
YWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTIuaHRtbAppbmRleCBm
MDQxYWYzLi5mOTdiZDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTIuaHRtbApAQCAt
MSwxMTQgKzEsMTAgQEAKLVRoaXMgdGVzdCBleGVyY2lzZXMgSURCT2JqZWN0U3RvcmUuZGVsZXRl
KCkgZm9sbG93ZWQgYnkgYW4gYWJvcnQgdG8gbWFrZSBzdXJlIHRoZSBkZWxldGUgaXMgdW4tZG9u
ZS48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKLX0KLQotZnVuY3Rpb24gbG9nQ291bnQoKQotewotICAgIHZhciByZXEgPSBvYmplY3RT
dG9yZS5jb3VudCgpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgCi0gICAgICAg
IGxvZygiQ291bnQgaXMgIiArIHJlcS5yZXN1bHQpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZG9u
ZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3
aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlRGVsZXRlMkRhdGFiYXNlIiwgMSk7
Ci12YXIgZGF0YWJhc2U7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1Zl
cnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJh
bnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIGRhdGFi
YXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKS5wdXQoImJhciIsICJmb28i
KTsKLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGFib3J0Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygi
SW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAg
ICAgICAgY29udGludWVUZXN0MSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAg
ICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MSgpCi17ICAg
Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RT
dG9yZSIsICJyZWFkd3JpdGUiKTsKLSAgICB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9i
amVjdFN0b3JlIikuZGVsZXRlKCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB2YXIgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiKS5nZXQoImZvbyIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkKLSAgICAgICAgewotICAgICAgICAgICAgbG9nKCJBZnRlciBkZWxldGUsIHJlY29yZCBmb3Ig
XCJmb29cIiBoYXMgdmFsdWU6ICIgKyByZXF1ZXN0LnJlc3VsdCk7Ci0gICAgICAgICAgICB0cmFu
c2FjdGlvbi5hYm9ydCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0
aW9uIGFib3J0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0MigpOwotICAgIH0KLQotICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJl
YWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QyKCkKLXsg
ICAKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVj
dFN0b3JlIiwgInJlYWRvbmx5Iik7Ci0KLSAgICB2YXIgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKS5nZXQoImZvbyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgbG9nKCJSZWNvcmQgZm9yIFwiZm9v
XCIgaGFzIGZpbmFsIHZhbHVlOiAiICsgcmVxdWVzdC5yZXN1bHQpOwotICAgIH0KLQotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGxvZygi
cmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwotICAgICAgICBkb25lKCk7
Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KQotICAgIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9pZGJvYmplY3RzdG9y
ZS1kZWxldGUtMi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRl
LWZhaWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CmluZGV4IGI5
ZGZhNTkuLjE2ZDZhNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxl
dGUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsOCBAQAogVGhpcyB0ZXN0cyBzb21l
IG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0
U3RvcmUuZGVsZXRlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFs
IHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBGYWlsZWQg
dG8gZGVsZXRlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQga2V5CiBG
YWlsZWQgdG8gZGVsZXRlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSB0aGF0IGhhcyBiZWVuIGRl
bGV0ZWQKQEAgLTYsNSArMTAsNyBAQCBJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBjb21wbGV0ZQogRmFpbGVkIHRvIGRlbGV0ZSBhIHJlY29yZCBpbiByZWFkLW9ubHkg
dHJhbnNhY3Rpb24KIEZhaWxlZCB0byBkZWxldGUgcmVjb3JkIHdpdGggaW5hY3RpdmUgdHJhbnNh
Y3Rpb24KIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotRG9uZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtZmFp
bHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmpl
Y3RzdG9yZS1kZWxldGUtZmFpbHVyZXMuaHRtbAppbmRleCAxZWIwZGVhLi5lYmU4Y2E0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3Rv
cmUtZGVsZXRlLWZhaWx1cmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS1mYWlsdXJlcy5odG1sCkBAIC0xLDEyMCAr
MSwxMCBAQAotVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVu
IHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUuZGVsZXRlKCkuPGJyPgotPGRpdiBpZD0ibG9n
Z2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwot
fQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWZ1bmN0aW9u
IGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0
ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZURlbGV0ZUZhaWx1cmVzRGF0
YWJhc2UiLCAxKTsKLXZhciBkYXRhYmFzZTsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDog
T2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsg
ZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRl
UmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAi
Zm9vIik7Ci0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0
cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKE5hTik7Ci0gICAgICAgIH0gY2F0
Y2goZSkgewotICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gZGVsZXRlIHJlY29yZCBmcm9tIG9i
amVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQga2V5Iik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAg
ICAgICAgCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoImZv
byIpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGRl
bGV0ZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgdGhhdCBoYXMgYmVlbiBkZWxldGVkIik7Ci0g
ICAgICAgIH0gCi0KLSAgICAgICAgLy8gUmVjcmVhdGUgdGhlIG9iamVjdHN0b3JlIGJlY2F1c2Ug
d2UnbGwgbmVlZCBpdCBpbiBwaGFzZSAyLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRh
YmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIG9iamVj
dFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOyAgICAKLSAgICB9Ci0gICAgCi0gICAgdmVyc2lvblRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGNvbnRpbnVlVGVz
dDEoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZhciB0cmFuc2FjdGlv
biA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsK
LSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlIik7Ci0gICAgCi0gICAgdHJ5IHsKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKCJm
b28iKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJGYWlsZWQgdG8gZGVsZXRlIGEg
cmVjb3JkIGluIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwotICAgIH0KLSAgICAKLSAgICB2YXIg
dHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJl
YWR3cml0ZSIpOwotICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiKTsKLQotICAgIC8vIFNwaW4gdGhlIHRyYW5zYWN0aW9uIHdpdGgg
Z2V0IHJlcXVlc3RzIHRvIGtlZXAgaXQgYWxpdmUgbG9uZyBlbm91Z2ggZm9yIHRoZSBzZXRUaW1l
b3V0IHRvIGZpcmUuCi0gICAgdmFyIGNhbkZpbmlzaCA9IGZhbHNlOwotICAgIHZhciBzcGluR2V0
ID0gZnVuY3Rpb24oKSB7IAotICAgICAgICBvYmplY3RTdG9yZS5nZXQoImZvbyIpLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKCFjYW5GaW5pc2gpCi0gICAgICAgICAg
ICAgICAgc3BpbkdldCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNwaW5HZXQoKTsKLQotICAg
IHZhciB0ZXN0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0cnkgewotICAg
ICAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKCJmb28iKTsKLSAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICBsb2coIkZhaWxlZCB0byBkZWxldGUgcmVjb3JkIHdpdGggaW5hY3RpdmUg
dHJhbnNhY3Rpb24iKTsKLSAgICAgICAgfQotICAgICAgICBjYW5GaW5pc2ggPSB0cnVlOwotICAg
IH0KLSAgICAKLSAgICBzZXRUaW1lb3V0KHRlc3RXaGlsZUluYWN0aXZlLCAwKTsKLSAgICAKLSAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJy
ZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotPC9zY3Jp
cHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lkYm9i
amVjdHN0b3JlLWRlbGV0ZS1mYWlsdXJlcy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtZ2V0LWZhaWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1nZXQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0
CmluZGV4IDlmMjRmY2UuLjMwOTE1ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1nZXQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9y
ZS1nZXQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTUgQEAKK1RoaXMgdGVzdHMg
c29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQk9i
amVjdFN0b3JlLmdldCgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6
IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEK
IEFMRVJUOiBGYWlsZWQgdG8gZ2V0IHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSB3aXRoIGFuIGlu
dmFsaWQga2V5CiBBTEVSVDogRmFpbGVkIHRvIGdldCByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUg
dGhhdCBoYXMgYmVlbiBkZWxldGVkCiBBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gY29tcGxldGUKIEFMRVJUOiBGYWlsZWQgdG8gZ2V0IHJlY29yZCBmcm9t
IG9iamVjdCBzdG9yZSB3aGlsZSB0aGUgdHJhbnNhY3Rpb24gaXMgaW5hY3RpdmUKIEFMRVJUOiBy
ZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdHMgc29t
ZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQk9iamVj
dFN0b3JlLmdldCgpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1nZXQtZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1nZXQtZmFpbHVyZXMuaHRtbAppbmRleCBl
MzcyMTAzLi40ZjIwNTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZ2V0LWZhaWx1cmVzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWdldC1mYWlsdXJlcy5o
dG1sCkBAIC0xLDEwNSArMSw5IEBACi1UaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0
aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJPYmplY3RTdG9yZS5nZXQoKS4KLTxzY3Jp
cHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25l
KCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUdldEZhaWx1cmVzRGF0YWJhc2Ui
LCAxKTsKLXZhciBkYXRhYmFzZTsKLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgewotICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOwotICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAg
ICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28i
KTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBvYmplY3RTdG9yZS5nZXQoTmFOKTsKLSAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGdldCByZWNvcmQgZnJvbSBvYmplY3Qgc3Rv
cmUgd2l0aCBhbiBpbnZhbGlkIGtleSIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBk
YXRhYmFzZS5kZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIAot
ICAgICAgICB0cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKTsKLSAgICAg
ICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGdldCByZWNvcmQg
ZnJvbSBvYmplY3Qgc3RvcmUgdGhhdCBoYXMgYmVlbiBkZWxldGVkIik7Ci0gICAgICAgIH0gCi0K
LSAgICAgICAgLy8gUmVjcmVhdGUgdGhlIG9iamVjdHN0b3JlIGJlY2F1c2Ugd2UnbGwgbmVlZCBp
dCBpbiBwaGFzZSAyLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVP
YmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIG9iamVjdFN0b3JlLnB1dCgi
YmFyIiwgImZvbyIpOyAgICAKLSAgICB9Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9u
YWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNo
YW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBjb250aW51ZVRlc3QxKCk7Ci0g
ICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9IGRh
dGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKLSAgICB2
YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3Jl
Iik7Ci0KLSAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0byBr
ZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgotICAg
IHZhciBjYW5GaW5pc2ggPSBmYWxzZTsKLSAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAK
LSAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGlmICghY2FuRmluaXNoKQotICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBzcGluR2V0KCk7Ci0KLSAgICB2YXIgZ2V0V2hpbGVJbmFj
dGl2ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgb2JqZWN0U3Rv
cmUuZ2V0KCJmb28iKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhbGVydCgi
RmFpbGVkIHRvIGdldCByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgd2hpbGUgdGhlIHRyYW5zYWN0
aW9uIGlzIGluYWN0aXZlIik7Ci0gICAgICAgIH0KLSAgICAgICAgY2FuRmluaXNoID0gdHJ1ZTsK
LSAgICB9Ci0gICAgCi0gICAgc2V0VGltZW91dChnZXRXaGlsZUluYWN0aXZlLCAwKTsKLSAgICAK
LSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0
ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQot
PC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9p
ZGJvYmplY3RzdG9yZS1nZXQtZmFpbHVyZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXIt
ZmFpbHVyZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdmNjhmZGQuLjUzODcwMWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQt
YW5kLWNsZWFyLWZhaWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy1l
eHBlY3RlZC50eHQKQEAgLTEsMyArMSw4IEBACitUaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWls
dXJlcyB0aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJPYmplY3RTdG9yZS5wdXQoKSBh
bmQgSURCT2JqZWN0U3RvcmUuY2xlYXIoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKIEFMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZl
cnNpb24gLSAxCiBBTEVSVDogRmFpbGVkIHRvIHB1dCByZWNvcmQgaW50byBvYmplY3Qgc3RvcmUg
d2l0aCBhbiBpbnZhbGlkIGtleQogQUxFUlQ6IEZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2Jq
ZWN0IHN0b3JlIHRoYXQgaGFzIGJlZW4gZGVsZXRlZApAQCAtNyw1ICsxMiw3IEBAIEFMRVJUOiBG
YWlsZWQgdG8gY2xlYXIgb2JqZWN0IHN0b3JlIGluIHJlYWQtb25seSB0cmFuc2FjdGlvbgogQUxF
UlQ6IEZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggaW5hY3RpdmUg
dHJhbnNhY3Rpb24KIEFMRVJUOiBGYWlsZWQgdG8gY2xlYXIgb2JqZWN0IHN0b3JlIHdpdGggaW5h
Y3RpdmUgdHJhbnNhY3Rpb24KIEFMRVJUOiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUK
LUFMRVJUOiBEb25lCi1UaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0IGNhbiBo
YXBwZW4gd2hpbGUgY2FsbGluZyBJREJPYmplY3RTdG9yZS5wdXQoKSBhbmQgSURCT2JqZWN0U3Rv
cmUuY2xlYXIoKS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFp
bHVyZXMuaHRtbAppbmRleCAyN2M0ZGExLi44YTU5ZmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1m
YWlsdXJlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9p
ZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLmh0bWwKQEAgLTEsMTI3ICsxLDkg
QEAKLVRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGls
ZSBjYWxsaW5nIElEQk9iamVjdFN0b3JlLnB1dCgpIGFuZCBJREJPYmplY3RTdG9yZS5jbGVhcigp
LgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0
aW9uIGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlUHV0QW5kQ2xlYXJG
YWlsdXJlc0RhdGFiYXNlIiwgMSk7Ci12YXIgZGF0YWJhc2U7Ci0KLWNyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhbGVydCgiSW5pdGlhbCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXIiLCAiZm9vIik7Ci0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICB0cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCBOYU4p
OwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gcHV0
IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQga2V5Iik7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKLSAgICAgICAgCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBvYmplY3RT
dG9yZS5wdXQoImJhciIsICJmb28iKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAg
ICBhbGVydCgiRmFpbGVkIHRvIHB1dCByZWNvcmQgaW50byBvYmplY3Qgc3RvcmUgdGhhdCBoYXMg
YmVlbiBkZWxldGVkIik7Ci0gICAgICAgIH0gCi0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IG9iamVjdFN0b3JlLmNsZWFyKCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAg
YWxlcnQoIkZhaWxlZCB0byBjbGVhciBvYmplY3Qgc3RvcmUgdGhhdCBoYXMgYmVlbiBkZWxldGVk
Iik7Ci0gICAgICAgIH0gCi0KLSAgICAgICAgLy8gUmVjcmVhdGUgdGhlIG9iamVjdHN0b3JlIGJl
Y2F1c2Ugd2UnbGwgbmVlZCBpdCBpbiBwaGFzZSAyLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUg
PSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAg
IG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOyAgICAKLSAgICB9Ci0gICAgCi0gICAgdmVy
c2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVy
dCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBh
Ym9ydGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFs
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBj
b250aW51ZVRlc3QxKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQotewotICAgIHZh
ciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAi
cmVhZG9ubHkiKTsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgCi0gICAgdHJ5IHsKLSAgICAgICAgb2JqZWN0U3Rv
cmUuY2xlYXIoKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBj
bGVhciBvYmplY3Qgc3RvcmUgaW4gcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7Ci0gICAgfQotICAg
IAotICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0
U3RvcmUiLCAicmVhZHdyaXRlIik7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotCi0gICAgLy8gU3BpbiB0aGUgdHJhbnNh
Y3Rpb24gd2l0aCBnZXQgcmVxdWVzdHMgdG8ga2VlcCBpdCBhbGl2ZSBsb25nIGVub3VnaCBmb3Ig
dGhlIHNldFRpbWVvdXQgdG8gZmlyZS4KLSAgICB2YXIgY2FuRmluaXNoID0gZmFsc2U7Ci0gICAg
dmFyIHNwaW5HZXQgPSBmdW5jdGlvbigpIHsgCi0gICAgICAgIG9iamVjdFN0b3JlLmdldCgiZm9v
Iikub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoIWNhbkZpbmlzaCkK
LSAgICAgICAgICAgICAgICBzcGluR2V0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc3Bpbkdl
dCgpOwotCi0gICAgdmFyIHRlc3RXaGlsZUluYWN0aXZlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsKLSAgICAg
ICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHB1dCByZWNvcmQg
aW50byBvYmplY3Qgc3RvcmUgd2l0aCBpbmFjdGl2ZSB0cmFuc2FjdGlvbiIpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICB0cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUuY2xlYXIo
KTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNs
ZWFyIG9iamVjdCBzdG9yZSB3aXRoIGluYWN0aXZlIHRyYW5zYWN0aW9uIik7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGNhbkZpbmlzaCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIHNl
dFRpbWVvdXQodGVzdFdoaWxlSW5hY3RpdmUsIDApOwotICAgIAotICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAg
fQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3Ii
ICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLXB1
dC1hbmQtY2xlYXItZmFpbHVyZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0
aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy1l
eHBlY3RlZC50eHQKaW5kZXggN2MzZTAzZC4uMjliNjlhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZh
aWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CkBA
IC0xLDMgKzEsOCBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4g
aGFwcGVuIHdoaWxlIGNhbGxpbmcgdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoKQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IFVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCiBBTEVSVDogW29iamVjdCBJREJUcmFuc2FjdGlvbl0gLSB2
ZXJzaW9uY2hhbmdlCiBBTEVSVDogW29iamVjdCBJREJEYXRhYmFzZV0KQEAgLTcsNiArMTIsNyBA
QCBBTEVSVDogQ2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIG5vbi1leGlzdGFudCBvYmplY3Qgc3Rv
cmUgb24gdGhlIHRyYW5zYWN0aW9uCiBBTEVSVDogQ2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIHZh
bGlkIG9iamVjdCBzdG9yZSBvbiBhIHRyYW5zYWN0aW9uIHRoYXQgaXMgYWxyZWFkeSBmaW5pc2hp
bmcKIEFMRVJUOiBwdXQgZmFpbGVkIChiZWNhdXNlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkKQog
QUxFUlQ6IEZpcnN0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3Ig
LSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZh
aWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJh
bnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1s
CmluZGV4IGMyMmNkZTMuLmNmNmE3NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlv
bi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sCkBAIC0xLDc4ICsxLDkgQEAKLVRoaXMgdGVzdHMg
c29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCk8YnI+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLX0KLQotdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRy
YW5zYWN0aW9uT2JqZWN0U3RvcmVGYWlsdXJlc1Rlc3REYXRhYmFzZSIpOwotCi1mdW5jdGlvbiBk
b25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgYWxlcnQoIlVwZ3JhZGUgbmVlZGVkOiBP
bGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBl
dmVudC5uZXdWZXJzaW9uKTsKLSAgICAKLSAgICB2YXIgdHggPSByZXF1ZXN0LnRyYW5zYWN0aW9u
OwotICAgIHZhciBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBhbGVydCh0eCArICIg
LSAiICsgdHgubW9kZSk7Ci0gICAgYWxlcnQoZGIpOwotCi0gICAgdmFyIG9zMSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUxIik7Ci0gICAgdmFyIG9zMiA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUyIik7Ci0KLSAgICB2YXIgcHV0UmVxdWVzdCA9
IG9zMS5wdXQoImJhciIsICJmb28iKTsKLSAgICAKLSAgICBwdXRSZXF1ZXN0Lm9uZXJyb3IgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgYWxlcnQoInB1dCBmYWlsZWQgKGJlY2F1c2UgdHJhbnNhY3Rp
b24gd2FzIGFib3J0ZWQpIik7Ci0gICAgfQotICAgIAotICAgIHRyeSB7Ci0gICAgICAgIHR4Lm9i
amVjdFN0b3JlKCIiKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgYWxlcnQoIkNhdWdodCBh
dHRlbXB0IHRvIGFjY2VzcyBlbXB0eS1uYW1lZCBvYmplY3Qgc3RvcmUgb24gdGhlIHRyYW5zYWN0
aW9uIik7Ci0gICAgfQotICAgIAotICAgIHRyeSB7Ci0gICAgICAgIHR4Lm9iamVjdFN0b3JlKCk7
Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGFsZXJ0KCJDYXVnaHQgYXR0ZW1wdCB0byBhY2Nl
c3MgbnVsbC1uYW1lZCBvYmplY3Qgc3RvcmUgb24gdGhlIHRyYW5zYWN0aW9uIik7Ci0gICAgfQot
ICAgICAKLSAgICB0cnkgewotICAgICAgICB0eC5vYmplY3RTdG9yZSgiVGhpc09iamVjdFN0b3Jl
RG9lc05vdEV4aXN0Iik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGFsZXJ0KCJDYXVnaHQg
YXR0ZW1wdCB0byBhY2Nlc3Mgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSBvbiB0aGUgdHJhbnNh
Y3Rpb24iKTsKLSAgICB9Ci0gICAgCi0gICAgdHguYWJvcnQoKTsKLSAgICAKLSAgICB0cnkgewot
ICAgICAgICB0eC5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMSIpOwotICAgIH0gY2F0Y2go
ZSkgewotICAgICAgICBhbGVydCgiQ2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIHZhbGlkIG9iamVj
dCBzdG9yZSBvbiBhIHRyYW5zYWN0aW9uIHRoYXQgaXMgYWxyZWFkeSBmaW5pc2hpbmciKTsKLSAg
ICB9Ci0gICAgICAKLSAgICB0eC5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoIkZpcnN0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0Iik7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0eC5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgYWxlcnQoIkZpcnN0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHR4Lm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiRmlyc3QgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci19Ci08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVzLmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pbmRleC0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0xLWV4cGVjdGVkLnR4dAppbmRleCBhYzI2MGIxLi42
ZDZmM2JjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LTEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC0xLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdHMg
dGhlIGV4cGVjdGVkIHZhbHVlcyBmcm9tIHNvbWUgbW9yZSBjb21wbGV4IGluZGV4IHNpdHVhdGlv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVl
ZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBnZXQgImdvb2QiIHJlc3VsdCBp
czogW29iamVjdCBPYmplY3RdCiBiYXIgaXMgZ29vZApAQCAtMTMyLDUgKzEzNiw3IEBAIGdldEtl
eSAiVGhpcyBpcyB0byB0ZXN0LG11bHRpRW50cnkgaW5kZXhlcyIgcmVzdWx0IGlzOiB1bmRlZmlu
ZWQKIGNvdW50IHJlc3VsdCBpczogMTEKIAogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gY29tcGxldGUKLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2luZGV4LTEuaHRtbAppbmRleCAyNjEyYWY3Li42MzcyYzlhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0xLmh0bWwKQEAgLTEs
MTA2ICsxLDEwIEBACi1UaGlzIHRlc3RzIHRoZSBleHBlY3RlZCB2YWx1ZXMgZnJvbSBzb21lIG1v
cmUgY29tcGxleCBpbmRleCBzaXR1YXRpb25zLjxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+
Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotZnVuY3Rp
b24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRN
TCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiSW5kZXgxRGF0YWJhc2UiLCAxKTsKLQotZnVuY3Rpb24gY2hlY2tLZXko
aW5kZXgsIGtleSkKLXsKLSAgICB2YXIgcmVxdWVzdDEgPSBpbmRleC5nZXQoa2V5KTsKLSAgICB2
YXIgcmVxdWVzdDIgPSBpbmRleC5nZXRLZXkoa2V5KTsKLQotICAgIHJlcXVlc3QxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coImdldCBcIiIgKyBrZXkgKyAiXCIgcmVzdWx0
IGlzOiAiICsgcmVxdWVzdDEucmVzdWx0KTsKLSAgICAgICAgZm9yIChuIGluIHJlcXVlc3QxLnJl
c3VsdCkKLSAgICAgICAgICAgIGxvZyhuICsgIiBpcyAiICsgcmVxdWVzdDEucmVzdWx0W25dKTsK
LSAgICB9Ci0gICAgcmVxdWVzdDIub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxv
ZygiZ2V0S2V5IFwiIiArIGtleSArICJcIiByZXN1bHQgaXM6ICIgKyByZXF1ZXN0Mi5yZXN1bHQp
OwotICAgICAgICBmb3IgKG4gaW4gcmVxdWVzdDIucmVzdWx0KQotICAgICAgICAgICAgbG9nKG4g
KyAiIGlzICIgKyByZXF1ZXN0Mi5yZXN1bHRbbl0pOwotICAgIH0gCi19Ci0KLWZ1bmN0aW9uIGNo
ZWNrSW5kZXgoaW5kZXgpCi17Ci0gICAgY2hlY2tLZXkoaW5kZXgsICJnb29kIik7Ci0gICAgY2hl
Y2tLZXkoaW5kZXgsICJiYWQiKTsKLSAgICBjaGVja0tleShpbmRleCwgIm9rIik7Ci0gICAgY2hl
Y2tLZXkoaW5kZXgsICJtZWgiKTsKLSAgICBjaGVja0tleShpbmRleCwgInN1cGVyIik7Ci0gICAg
Y2hlY2tLZXkoaW5kZXgsICJ0aGFua3NGb3JBc2tpbmciKTsKLSAgICBjaGVja0tleShpbmRleCwg
WyAiZ29vZCIsICJiYWQiIF0pOwotICAgIGNoZWNrS2V5KGluZGV4LCBbICJvayIsICJtZWgiIF0p
OwotICAgIGNoZWNrS2V5KGluZGV4LCBbICJzdXBlciIsICJ0aGFua3NGb3JBc2tpbmciIF0pOwot
ICAgIGNoZWNrS2V5KGluZGV4LCAiVGhpcyBpcyB0byB0ZXN0Iik7Ci0gICAgY2hlY2tLZXkoaW5k
ZXgsICJtdWx0aUVudHJ5IGluZGV4ZXMiKTsKLSAgICBjaGVja0tleShpbmRleCwgWyJUaGlzIGlz
IHRvIHRlc3QiLCAibXVsdGlFbnRyeSBpbmRleGVzIiBdKTsKLSAgICAKLSAgICB2YXIgcmVxdWVz
dCA9IGluZGV4LmNvdW50KCk7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgbG9nKCJjb3VudCByZXN1bHQgaXM6ICIgKyByZXF1ZXN0LnJlc3VsdCk7Ci0gICAg
ICAgIGxvZygiICIpOwotICAgIH0KLX0KLQotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgewotICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xk
IHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZl
bnQubmV3VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVx
dWVzdC50cmFuc2FjdGlvbjsKLSAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0
OwotICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKLSAgICB2YXIgaW5kZXgxID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgo
IlRlc3RJbmRleDEiLCAiYmFyIik7Ci0gICAgdmFyIGluZGV4MiA9IG9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCJUZXN0SW5kZXgyIiwgImJheiIpOwotICAgIHZhciBpbmRleDMgPSBvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MyIsIFsgImJhciIsICJiYXoiIF0pOwotICAgIHZhciBp
bmRleDQgPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NCIsICJiYXIiLCB7IG11
bHRpRW50cnk6IHRydWUgfSk7Ci0KLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJnb29kIiwg
YmF6OiAiYmFkIiB9LCAxKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJnb29kIiwgYmF6
OiAiYmFkIiB9LCAyKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJnb29kIiwgYmF6OiAi
YmFkIiB9LCAzKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJvayIsIGJhejogIm1laCIg
fSwgNCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAib2siLCBiYXo6ICJtZWgiIH0sIDUp
OwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIm9rIiwgYmF6OiAibWVoIiB9LCA2KTsKLSAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJzdXBlciIsIGJhejogInRoYW5rc0ZvckFza2luZyIg
fSwgNyk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAic3VwZXIiLCBiYXo6ICJ0aGFua3NG
b3JBc2tpbmciIH0sIDgpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogInN1cGVyIiwgYmF6
OiAidGhhbmtzRm9yQXNraW5nIiB9LCA5KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6IFsg
IlRoaXMgaXMgdG8gdGVzdCIsICJtdWx0aUVudHJ5IGluZGV4ZXMiIF19LCAxMCk7Ci0gICAgCi0g
ICAgY2hlY2tJbmRleChpbmRleDEpOwotICAgIGNoZWNrSW5kZXgoaW5kZXgyKTsKLSAgICBjaGVj
a0luZGV4KGluZGV4Myk7Ci0gICAgY2hlY2tJbmRleChpbmRleDQpOwotICAKLSAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5p
dGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVk
Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0K
LQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2luZGV4LTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTItZXhwZWN0ZWQu
dHh0CmluZGV4IDM0ZDIwM2YuLjU5ODMwZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMi1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw4IEBACiBUaGlzIHRlc3RzIGluZGV4ZXMgYXJlIGxlZnQgaW4gYXBwcm9wcmlhdGUgc3RhdGVz
IGFmdGVyIGFib3J0ZWQgdHJhbnNhY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9u
IC0gMQogZ2V0ICJnb29kIiByZXN1bHQgaXM6IFtvYmplY3QgT2JqZWN0XQogYmFyIGlzIGdvb2QK
QEAgLTE0Niw1ICsxNTAsNyBAQCBnZXRLZXkgInRlc3QiIHJlc3VsdCBpczogMgogY291bnQgcmVz
dWx0IGlzOiAzCiAKIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotRG9uZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0yLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMi5odG1sCmluZGV4IDBjOGVl
ZTkuLmUwYWJlMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pbmRleC0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2luZGV4LTIuaHRtbApAQCAtMSwxNjUgKzEsMTAgQEAKLVRoaXMgdGVzdHMgaW5kZXhlcyBh
cmUgbGVmdCBpbiBhcHByb3ByaWF0ZSBzdGF0ZXMgYWZ0ZXIgYWJvcnRlZCB0cmFuc2FjdGlvbnMu
PGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRvbmUi
KTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0K
LXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleDJEYXRhYmFz
ZSIsIDEpOwotCi1mdW5jdGlvbiBjaGVja0tleShpbmRleCwga2V5KQotewotICAgIHZhciByZXF1
ZXN0MSA9IGluZGV4LmdldChrZXkpOwotICAgIHZhciByZXF1ZXN0MiA9IGluZGV4LmdldEtleShr
ZXkpOwotCi0gICAgcmVxdWVzdDEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxv
ZygiZ2V0IFwiIiArIGtleSArICJcIiByZXN1bHQgaXM6ICIgKyByZXF1ZXN0MS5yZXN1bHQpOwot
ICAgICAgICBmb3IgKG4gaW4gcmVxdWVzdDEucmVzdWx0KQotICAgICAgICAgICAgbG9nKG4gKyAi
IGlzICIgKyByZXF1ZXN0MS5yZXN1bHRbbl0pOwotICAgIH0KLSAgICByZXF1ZXN0Mi5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJnZXRLZXkgXCIiICsga2V5ICsgIlwiIHJl
c3VsdCBpczogIiArIHJlcXVlc3QyLnJlc3VsdCk7Ci0gICAgICAgIGZvciAobiBpbiByZXF1ZXN0
Mi5yZXN1bHQpCi0gICAgICAgICAgICBsb2cobiArICIgaXMgIiArIHJlcXVlc3QyLnJlc3VsdFtu
XSk7Ci0gICAgfSAKLX0KLQotZnVuY3Rpb24gY2hlY2tJbmRleChpbmRleCkKLXsKLSAgICBjaGVj
a0tleShpbmRleCwgImdvb2QiKTsKLSAgICBjaGVja0tleShpbmRleCwgImJhZCIpOwotICAgIGNo
ZWNrS2V5KGluZGV4LCAibXVsdGlFbnRyeSIpOwotICAgIGNoZWNrS2V5KGluZGV4LCAidGVzdCIp
OwotICAgIAotICAgIHZhciByZXF1ZXN0ID0gaW5kZXguY291bnQoKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coImNvdW50IHJlc3VsdCBpczogIiAr
IHJlcXVlc3QucmVzdWx0KTsKLSAgICAgICAgbG9nKCIgIik7Ci0gICAgfQotfQotCi12YXIgZGF0
YWJhc2U7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2
ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwot
Ci0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247
Ci0gICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIHZhciBvYmplY3RTdG9y
ZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB2
YXIgaW5kZXgxID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJbmRleDEiLCAiYmFyIik7
Ci0gICAgdmFyIGluZGV4MiA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgyIiwg
ImJheiIpOwotICAgIHZhciBpbmRleDMgPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdElu
ZGV4MyIsICJiYXIiLCB7IG11bHRpRW50cnk6IHRydWUgfSk7Ci0KLSAgICBvYmplY3RTdG9yZS5w
dXQoeyBiYXI6ICJnb29kIiwgYmF6OiAiYmFkIiB9LCAxKTsKLSAgICBvYmplY3RTdG9yZS5wdXQo
eyBiYXI6IFsgIm11bHRpRW50cnkiLCAidGVzdCIgXX0sIDIpOwotICAgIAotICAgIGNoZWNrSW5k
ZXgoaW5kZXgxKTsKLSAgICBjaGVja0luZGV4KGluZGV4Mik7Ci0gICAgY2hlY2tJbmRleChpbmRl
eDMpOwotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWQgYWJvcnQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9n
KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwot
ICAgICAgICBjb250aW51ZVRlc3QxKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKLXsg
ICAKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVj
dFN0b3JlIiwgInJlYWR3cml0ZSIpOwotICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB2YXIgaW5kZXgxID0gb2JqZWN0
U3RvcmUuaW5kZXgoIlRlc3RJbmRleDEiKTsKLSAgICB2YXIgaW5kZXgyID0gb2JqZWN0U3RvcmUu
aW5kZXgoIlRlc3RJbmRleDIiKTsKLSAgICB2YXIgaW5kZXgzID0gb2JqZWN0U3RvcmUuaW5kZXgo
IlRlc3RJbmRleDMiKTsKLSAgICAKLSAgICBvYmplY3RTdG9yZS5kZWxldGUoMSkub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgbG9nKCJEZWxldGVkIGtleSAxIGZyb20gb2JqZWN0c3Rv
cmUiKTsKLSAgICAgICBsb2coIiIpOwotICAgIH0KLQotICAgIGNoZWNrSW5kZXgoaW5kZXgxKTsK
LSAgICBjaGVja0luZGV4KGluZGV4Mik7Ci0gICAgY2hlY2tJbmRleChpbmRleDMpOwotCi0gICAg
b2JqZWN0U3RvcmUuY2xlYXIoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICBsb2co
IkNsZWFyZWQgb2JqZWN0c3RvcmUiKTsKLSAgICAgICBsb2coIiIpOwotICAgIH0KLSAgICAKLSAg
ICBjaGVja0luZGV4KGluZGV4MSk7Ci0gICAgY2hlY2tJbmRleChpbmRleDIpOwotICAgIGNoZWNr
SW5kZXgoaW5kZXgzKTsKLSAgICAKLSAgICBvYmplY3RTdG9yZS5nZXQoMCkub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiQWxsIGRvbmUuIE1vdmluZyBvbiB0byBmaW5hbCBw
YXJ0Iik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Ci0gICAgfQotICAgIAotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWR3
cml0ZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKLSAg
ICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGlu
dWVUZXN0MigpCi17ICAgCi0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rp
b24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIpOwotICAgIHZhciBvYmplY3RTdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB2YXIgaW5k
ZXgxID0gb2JqZWN0U3RvcmUuaW5kZXgoIlRlc3RJbmRleDEiKTsKLSAgICB2YXIgaW5kZXgyID0g
b2JqZWN0U3RvcmUuaW5kZXgoIlRlc3RJbmRleDIiKTsKLSAgICB2YXIgaW5kZXgzID0gb2JqZWN0
U3RvcmUuaW5kZXgoIlRlc3RJbmRleDMiKTsKLSAgICAKLSAgICBjaGVja0luZGV4KGluZGV4MSk7
Ci0gICAgY2hlY2tJbmRleChpbmRleDIpOwotICAgIGNoZWNrSW5kZXgoaW5kZXgzKTsKLSAgICAK
LSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9n
KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwotICAgICAgICBkb25l
KCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBl
cnJvciIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtMi5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMy1leHBlY3RlZC50eHQKaW5kZXggYWQ2MmQ2Yy4uM2Uz
Nzc3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lu
ZGV4LTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pbmRleC0zLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdCBleGVy
Y2lzZXMgdGhlICJ1bmlxdWUiIGNvbnN0cmFpbnQgb2YgaW5kZXhlcy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKIEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0g
MCBOZXcgdmVyc2lvbiAtIDEKIEZpcnN0IHB1dCBzdWNjZXNzCiBWYWx1ZSBvZiAxIGlzOiBbb2Jq
ZWN0IE9iamVjdF0KQEAgLTE5LDUgKzIzLDcgQEAgVmFsdWUgb2YgMyBpczogdW5kZWZpbmVkCiBD
b3VudCBpbiBpbmRleCAxIGlzOiAxCiBDb3VudCBpbiBpbmRleCAyIGlzOiAxCiBJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotRG9uZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0zLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMy5odG1sCmluZGV4IDRmOWUwOGUu
LmFkMzRlMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pbmRleC0zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LTMuaHRtbApAQCAtMSwxMTcgKzEsMTAgQEAKLVRoaXMgdGVzdCBleGVyY2lzZXMgdGhl
ICJ1bmlxdWUiIGNvbnN0cmFpbnQgb2YgaW5kZXhlcy48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwv
ZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1
bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5l
ckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5k
b3cuaW5kZXhlZERCLm9wZW4oIkluZGV4M0RhdGFiYXNlIiwgMSk7Ci12YXIgb2JqZWN0U3RvcmU7
Ci0KLWZ1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQotewotICAgIHZhciByZXExID0gb2JqZWN0
U3RvcmUuZ2V0KDEpOwotICAgIHJlcTEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGxvZygiVmFsdWUgb2YgMSBpczogIiArIHJlcTEucmVzdWx0KTsKLSAgICB9Ci0gICAgdmFyIHJl
cTIgPSBvYmplY3RTdG9yZS5nZXQoMik7Ci0gICAgcmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgbG9nKCJWYWx1ZSBvZiAyIGlzOiAiICsgcmVxMi5yZXN1bHQpOwotICAgIH0K
LSAgICB2YXIgcmVxMyA9IG9iamVjdFN0b3JlLmdldCgzKTsKLSAgICByZXEzLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coIlZhbHVlIG9mIDMgaXM6ICIgKyByZXEzLnJlc3Vs
dCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjaGVja0luZGV4KGluZGV4LCBuYW1lKQotewotICAg
IHZhciByZXEgPSBpbmRleC5jb3VudCgpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgbG9nKCJDb3VudCBpbiBpbmRleCAiICsgbmFtZSArICIgaXM6ICIgKyByZXEu
cmVzdWx0KTsKLSAgICB9Ci19Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5l
d1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3Qu
dHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAg
ICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKLSAgICB2YXIgaTEgPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MSIs
ICJiYXIiLCB7IHVuaXF1ZTogdHJ1ZSB9KTsKLSAgICB2YXIgaTIgPSBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgiVGVzdEluZGV4MiIsICJiYXIiLCB7IG11bHRpRW50cnk6IHRydWUsIHVuaXF1ZTog
dHJ1ZSB9KTsKLQotICAgIHZhciByZXF1ZXN0MSA9IG9iamVjdFN0b3JlLnB1dCh7IGJhcjogImdv
b2QiLCBiYXo6ICJiYWQiIH0sIDEpOwotICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBsb2coIkZpcnN0IHB1dCBzdWNjZXNzIik7Ci0gICAgfQotICAgIHJlcXVl
c3QxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJGaXJzdCBwdXQgdW5leHBl
Y3RlZCBmYWlsdXJlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgCi0gICAgY2hlY2tP
YmplY3RTdG9yZSgpOwotICAgIGNoZWNrSW5kZXgoaTEsIDEpOwotICAgIGNoZWNrSW5kZXgoaTIs
IDIpOwotICAgIAotICAgIHZhciByZXF1ZXN0MiA9IG9iamVjdFN0b3JlLnB1dCh7IGJhcjogImdv
b2QiLCBiYXo6ICJiYWQiIH0sIDIpOwotICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBsb2coIlNlY29uZCBwdXQgdW5leHBlY3RlZCBzdWNjZXNzIik7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgbG9nKCJTZWNvbmQgcHV0IGZhaWx1cmUiKTsKLSAgICAgICAgZS5zdG9wUHJvcGFn
YXRpb24oKTsKLSAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0KLSAgICAKLSAgICBj
aGVja09iamVjdFN0b3JlKCk7Ci0gICAgY2hlY2tJbmRleChpMSwgMSk7Ci0gICAgY2hlY2tJbmRl
eChpMiwgMik7Ci0gICAgCi0gICAgdmFyIHJlcXVlc3QzID0gb2JqZWN0U3RvcmUucHV0KHsgYmFy
OiBbICJnbmFybHkiLCAiZ3JlYXQiLCAiZ29vZCIgXX0sIDMpOwotICAgIHJlcXVlc3QzLm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coIlRoaXJkIHB1dCB1bmV4cGVjdGVkIHN1
Y2Nlc3MiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1ZXN0My5vbmVycm9yID0g
ZnVuY3Rpb24oZSkgewotICAgICAgICBsb2coIlRoaXJkIHB1dCBmYWlsdXJlIik7Ci0gICAgICAg
IGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICB9
Ci0gICAgCi0gICAgY2hlY2tPYmplY3RTdG9yZSgpOwotICAgIGNoZWNrSW5kZXgoaTEsIDEpOwot
ICAgIGNoZWNrSW5kZXgoaTIsIDIpOwotICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVy
c2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2co
IkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJy
b3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtMy5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNC1leHBlY3RlZC50eHQKaW5kZXggZDAxYjYx
ZC4uYTE2MGRiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2luZGV4LTQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pbmRleC00LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVz
dHMgdGhhdCBpbmRleGVzIGFkZGVkIHRvIGFuIG9iamVjdCBzdG9yZSB3aXRoIGV4aXN0aW5nIHJl
Y29yZHMgYXJlIHBvcHVsYXRlZCB1cG9uIHRoZWlyIGNyZWF0aW9uLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAw
IE5ldyB2ZXJzaW9uIC0gMQogQ291bnQgaXM6IDE4CiBDdXJzb3IgYXQgcmVjb3JkOiBBIC8gMQpA
QCAtMTksNSArMjMsNyBAQCBDdXJzb3IgYXQgcmVjb3JkOiBIIC8gMTUKIEN1cnNvciBhdCByZWNv
cmQ6IEggLyAxNgogQ3Vyc29yIGF0IHJlY29yZDogSSAvIDE3CiBDdXJzb3IgYXQgcmVjb3JkOiBJ
IC8gMTgKLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aW5kZXgtNC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LTQuaHRtbAppbmRleCBkNDFjZTBiLi45NmYyNmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC00Lmh0bWwKQEAgLTEsOTcgKzEsMTAgQEAKLVRo
aXMgdGVzdHMgdGhhdCBpbmRleGVzIGFkZGVkIHRvIGFuIG9iamVjdCBzdG9yZSB3aXRoIGV4aXN0
aW5nIHJlY29yZHMgYXJlIHBvcHVsYXRlZCB1cG9uIHRoZWlyIGNyZWF0aW9uLjxicj4KLTxkaXYg
aWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0K
LQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgaW5kZXg7
Ci12YXIgb2JqZWN0U3RvcmU7Ci0KLWZ1bmN0aW9uIGNoZWNrSW5kZXhWYWx1ZXMoKQotewotICAg
IHZhciBjb3VudFJlcXVlc3QgPSBpbmRleC5jb3VudCgpOwotICAgIGNvdW50UmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJDb3VudCBpczogIiArIGNvdW50UmVx
dWVzdC5yZXN1bHQpOwotICAgIH0KLQotICAgIHZhciBjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcigpOwotICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHZhciBjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKCFj
dXJzb3IpIHsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBsb2coIkN1cnNvciBhdCByZWNvcmQ6ICIgKyBjdXJzb3Iua2V5ICsgIiAv
ICIgKyBjdXJzb3IucHJpbWFyeUtleSk7Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotCi0g
ICAgfQotICAgIGN1cnNvclJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
bG9nKCJVbmV4cGVjdGVkIGVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOwotICAg
ICAgICBsb2dDdXJzb3IoY3Vyc29yUmVxdWVzdC5yZXN1bHQpOwotICAgICAgICBkb25lKCk7Ci0g
ICAgfSAKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklu
ZGV4NERhdGFiYXNlIiwgMSk7Ci1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdW
ZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRy
YW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAg
b2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3Jl
Iik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQSIgfSwgMSk7Ci0gICAgb2JqZWN0U3Rv
cmUucHV0KHsgYmFyOiAiQSIgfSwgMik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQiIg
fSwgMyk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQiIgfSwgNCk7Ci0gICAgb2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAiQyIgfSwgNSk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAi
QyIgfSwgNik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRCIgfSwgNyk7Ci0gICAgb2Jq
ZWN0U3RvcmUucHV0KHsgYmFyOiAiRCIgfSwgOCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFy
OiAiRSIgfSwgOSk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRSIgfSwgMTApOwotICAg
IG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkYiIH0sIDExKTsKLSAgICBvYmplY3RTdG9yZS5wdXQo
eyBiYXI6ICJGIiB9LCAxMik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRyIgfSwgMTMp
OwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkciIH0sIDE0KTsgICAgCi0gICAgb2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAiSCIgfSwgMTUpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjog
IkgiIH0sIDE2KTsgIAotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkkiIH0sIDE3KTsKLSAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJJIiB9LCAxOCk7ICAKLQotICAgIC8vIFRoaXMgaW5k
ZXggc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBhYm92ZSB2YWx1ZXMgdXBvbiBpdHMgY3Jl
YXRpb24uCi0gICAgaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MSIs
ICJiYXIiKTsKLSAgICAKLSAgICBjaGVja0luZGV4VmFsdWVzKCk7Ci0gICAgCi0gICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIklu
aXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRl
ZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGRvbmUoKTsK
LSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19
Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291
cmNlcy9pbmRleC00LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01LWV4cGVjdGVk
LnR4dAppbmRleCAzYjNhMDhkLi45NzA3ZTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUtZXhwZWN0ZWQudHh0CkBAIC0xLDgg
KzEsMTMgQEAKLVRoaXMgdGVzdHMgY3JlYXRpbmcgYW4gaW5kZXggb24gYW4gb2JqZWN0IHN0b3Jl
IHRoYXQgYWxyZWFkeSBoYXMgcmVjb3JkcywgYW5kIHRob3NlIHJlY29yZHMgd291bGQgdmlvbGF0
ZSB0aGUgdW5pcXVlIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgotKFRoZSBpbmRleCBjcmVhdGlv
biBzaG91bGQgZmFpbCkuCitUaGlzIHRlc3RzIGNyZWF0aW5nIGFuIGluZGV4IG9uIGFuIG9iamVj
dCBzdG9yZSB0aGF0IGFscmVhZHkgaGFzIHJlY29yZHMsIGFuZCB0aG9zZSByZWNvcmRzIHdvdWxk
IHZpb2xhdGUgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9mIHRoZSBpbmRleC4gKFRoZSBpbmRleCBj
cmVhdGlvbiBzaG91bGQgZmFpbCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJ
bml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBF
cnJvciBnZXR0aW5nIGN1cnNvciBjb3VudAogRXJyb3Igb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vy
c29yCiBJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIChl
eHBlY3RlZCBiZWNhdXNlIGluZGV4IGNyZWF0aW9uIGZhaWxlZCwgYW5kIHRoYXQgc2hvdWxkJ3Zl
IGNhdXNlZCB0cmFuc2FjdGlvbiBhYm9ydCkKLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2luZGV4LTUuaHRtbAppbmRleCBmZDY4M2ZiLi5lOGI2YzY2NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5odG1s
CkBAIC0xLDg1ICsxLDEwIEBACi1UaGlzIHRlc3RzIGNyZWF0aW5nIGFuIGluZGV4IG9uIGFuIG9i
amVjdCBzdG9yZSB0aGF0IGFscmVhZHkgaGFzIHJlY29yZHMsIGFuZCB0aG9zZSByZWNvcmRzIHdv
dWxkIHZpb2xhdGUgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9mIHRoZSBpbmRleC48YnI+Ci0oVGhl
IGluZGV4IGNyZWF0aW9uIHNob3VsZCBmYWlsKS48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2
PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0
aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFyIGluZGV4OwotdmFyIG9iamVjdFN0b3Jl
OwotCi1mdW5jdGlvbiBjaGVja0luZGV4VmFsdWVzKCkKLXsKLSAgICB2YXIgY291bnRSZXF1ZXN0
ID0gaW5kZXguY291bnQoKTsKLSAgICBjb3VudFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGxvZygiQ291bnQgaXM6ICIgKyBjb3VudFJlcXVlc3QucmVzdWx0KTsKLSAg
ICB9Ci0gICAgY291bnRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGxv
ZygiRXJyb3IgZ2V0dGluZyBjdXJzb3IgY291bnQiKTsKLSAgICAgICAgZS5zdG9wUHJvcGFnYXRp
b24oKTsKLSAgICB9Ci0KLSAgICB2YXIgY3Vyc29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3Io
KTsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgIGxvZygiQ3Vyc29yIGF0
IHJlY29yZDogIiArIGN1cnNvci5rZXkgKyAiIC8gIiArIGN1cnNvci5wcmltYXJ5S2V5KTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChjdXJzb3Iua2V5ICE9IHVuZGVmaW5lZCkKLSAgICAgICAgICAg
IGN1cnNvci5jb250aW51ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb25lKCk7Ci0g
ICAgfQotICAgIGN1cnNvclJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
bG9nKCJFcnJvciBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IiKTsKLSAgICAgICAgZS5zdG9w
UHJvcGFnYXRpb24oKTsKLSAgICB9IAotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiSW5kZXg1RGF0YWJhc2UiLCAxKTsKLWNyZWF0ZVJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBu
ZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9u
IC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9
IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKLSAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAx
KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAyKTsKLQotICAgIC8vIFRoaXMg
aW5kZXggc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBhYm92ZSB2YWx1ZXMgdXBvbiBpdHMg
Y3JlYXRpb24sIGJ1dCB0aGF0IHNob3VsZCBmYWlsIGJlY2F1c2UKLSAgICAvLyBvZiBjb25zdHJh
aW50IHZpb2xhdGlvbnMuCi0gICAgaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVz
dEluZGV4MSIsICJiYXIiLCB7IHVuaXF1ZTogdHJ1ZSB9KTsKLSAgICAKLSAgICBjaGVja0luZGV4
VmFsdWVzKCk7Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGFib3J0ZWQgKGV4cGVjdGVkIGJlY2F1c2UgaW5kZXggY3JlYXRpb24gZmFpbGVk
LCBhbmQgdGhhdCBzaG91bGQndmUgY2F1c2VkIHRyYW5zYWN0aW9uIGFib3J0KSIpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0K
LQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2luZGV4LTUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJz
b3ItMS1leHBlY3RlZC50eHQKaW5kZXggZjc3YjkzNC4uOGUxYjgyNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vy
c29yLTEtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsOCBAQAogVGhpcyB0ZXN0cyBjdXJzb3JzIHRo
YXQgaXRlcmF0ZSBvdmVyIGVudGlyZSBpbmRleGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJz
aW9uIC0gMQogCiBTdGFydGluZyBhIG5ldyBjdXJzb3I6IHRlc3RDdXJzb3JEaXJlY3Rpb24oaW5k
ZXgxLCAnbmV4dCcpCkBAIC00MDIsNSArNDA2LDcgQEAgQ3Vyc29yIHNvdXJjZSBpczogVGVzdElu
ZGV4MgogQ3Vyc29yIGtleSBpczogYQogQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxCiBDdXJzb3Ig
dmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQotRG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLmh0bWwKaW5kZXggMDVmZTIzZTcu
LmQ5ZTVjNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pbmRleC1jdXJzb3ItMS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC1jdXJzb3ItMS5odG1sCkBAIC0xLDEzNCArMSwxMCBAQAotVGhpcyB0ZXN0
cyBjdXJzb3JzIHRoYXQgaXRlcmF0ZSBvdmVyIGVudGlyZSBpbmRleGVzLjxicj4KLTxkaXYgaWQ9
ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQot
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxv
Z2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1mdW5jdGlvbiBsb2dD
dXJzb3IoY3Vyc29yKQotewotICAgIGxvZygiQ3Vyc29yIGRpcmVjdGlvbiBpczogIiArIGN1cnNv
ci5kaXJlY3Rpb24pOwotICAgIGxvZygiQ3Vyc29yIHNvdXJjZSBpczogIiArIGN1cnNvci5zb3Vy
Y2UubmFtZSk7ICAgIAotICAgIGxvZygiQ3Vyc29yIGtleSBpczogIiArIGN1cnNvci5rZXkpOyAg
ICAKLSAgICBsb2coIkN1cnNvciBwcmltYXJ5IGtleSBpczogIiArIGN1cnNvci5wcmltYXJ5S2V5
KTsKLSAgICBsb2coIkN1cnNvciB2YWx1ZSBpczogIiArIGN1cnNvci52YWx1ZSk7ICAKLX0KLQot
ZnVuY3Rpb24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QpCi17Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCFyZXF1ZXN0LnJlc3VsdCkgewotICAgICAgICAg
ICAgc3RhcnROZXh0Q3Vyc29yKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbG9nKCJTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOwotICAgICAg
ICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOyAgCi0gICAgICAgIHJlcXVlc3QucmVzdWx0LmNv
bnRpbnVlKCk7Ci0gICAgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgbG9nKCJVbmV4cGVjdGVkIGVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIp
OwotICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOwotICAgICAgICBkb25lKCk7Ci0g
ICAgfSAKLX0KLQotZnVuY3Rpb24gdGVzdEN1cnNvckRpcmVjdGlvbihpbmRleCwgZGlyZWN0aW9u
KQotewotICAgIHZhciByYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoLUluZmluaXR5KTsK
LSAgICB2YXIgcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7Ci0g
ICAgc2V0dXBSZXF1ZXN0KHJlcXVlc3QpOwotfQotCi12YXIgaW5kZXgxOwotdmFyIGluZGV4MjsK
LQotdmFyIGN1cnNvckNvbW1hbmRzID0gWwotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKGluZGV4
MiwgJ3ByZXZ1bmlxdWUnKSIsCi0gICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgxLCAncHJl
dnVuaXF1ZScpIiwKLSAgICAidGVzdEN1cnNvckRpcmVjdGlvbihpbmRleDIsICdwcmV2JykiLAot
ICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKGluZGV4MSwgJ3ByZXYnKSIsCi0gICAgInRlc3RDdXJz
b3JEaXJlY3Rpb24oaW5kZXgyLCAnbmV4dHVuaXF1ZScpIiwKLSAgICAidGVzdEN1cnNvckRpcmVj
dGlvbihpbmRleDEsICduZXh0dW5pcXVlJykiLAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKGlu
ZGV4MiwgJ25leHQnKSIsCi0gICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgxLCAnbmV4dCcp
IiwKLV07Ci0KLWZ1bmN0aW9uIHN0YXJ0TmV4dEN1cnNvcigpCi17Ci0gICAgaWYgKCFjdXJzb3JD
b21tYW5kcy5sZW5ndGgpIHsKLSAgICAgICAgZG9uZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIHZhciBjb21tYW5kID0gY3Vyc29yQ29tbWFuZHMucG9wKCk7Ci0gICAgbG9n
ICgiIik7Ci0gICAgbG9nKCJTdGFydGluZyBhIG5ldyBjdXJzb3I6ICIgKyBjb21tYW5kKTsKLSAg
ICBldmFsKGNvbW1hbmQpOwotfQotICAgIAotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIkluZGV4Q3Vyc29yMURhdGFiYXNlIiwgMSk7Ci1jcmVhdGVSZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVy
c2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rp
b24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2Jq
ZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgIGluZGV4MSA9IG9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCJUZXN0SW5kZXgxIiwgImJhciIpOwotICAgIGluZGV4MiA9IG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgyIiwgImJheiIpOwotCi0gICAgb2JqZWN0U3RvcmUucHV0
KHsgYmFyOiAiQSIsIGJhejogImEiIH0sIDEpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjog
IkEiLCBiYXo6ICJhIiB9LCAzKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiwgYmF6
OiAiYSIgfSwgMik7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQiIsIGJhejogImIiIH0s
IDUpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkIiLCBiYXo6ICJiIiB9LCA2KTsKLSAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJCIiwgYmF6OiAiYiIgfSwgNCk7Ci0gICAgb2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAiQyIsIGJhejogImMiIH0sIDcpOwotICAgIG9iamVjdFN0b3JlLnB1
dCh7IGJhcjogIkMiLCBiYXo6ICJjIiB9LCA5KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJDIiwgYmF6OiAiYyIgfSwgOCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRCIsIGJh
ejogImQiIH0sIDExKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJEIiwgYmF6OiAiZCIg
fSwgMTIpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkQiLCBiYXo6ICJkIiB9LCAxMCk7
Ci0KLSAgICB2YXIgcmVxMSA9IGluZGV4MS5jb3VudCgpOwotICAgIHJlcTEub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiVGVzdEluZGV4MSBjb3VudCBpczogIiArIHJlcTEu
cmVzdWx0KTsKLSAgICB9Ci0KLSAgICB2YXIgcmVxMiA9IGluZGV4Mi5jb3VudCgpOwotICAgIHJl
cTIub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiVGVzdEluZGV4MiBjb3Vu
dCBpczogIiArIHJlcTIucmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgc3RhcnROZXh0Q3Vyc29y
KCk7Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAg
dmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAg
ICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25l
cnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleC1jdXJzb3ItMS5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0yLWV4cGVjdGVkLnR4dAppbmRleCA5MDVl
NzM1Li4wMjQwY2IwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaW5kZXgtY3Vyc29yLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw4IEBACiBUaGlzIHRlc3RzIGN1cnNvcnMgdGhhdCBpdGVyYXRlIG92ZXIgcGFydHMgb2YgaW5k
ZXhlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEluaXRpYWwgdXBncmFkZSBu
ZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIAogU3RhcnRpbmcgYSBuZXcg
Y3Vyc29yOiB0ZXN0Q3Vyc29yRGlyZWN0aW9uKCduZXh0JywgSURCS2V5UmFuZ2UuYm91bmQoJ0In
LCAnRCcsIHRydWUsIHRydWUpKQpAQCAtNDI1LDUgKzQyOSw3IEBAIEN1cnNvciBzb3VyY2UgaXM6
IFRlc3RJbmRleDEKIEN1cnNvciBrZXkgaXM6IEIKIEN1cnNvciBwcmltYXJ5IGtleSBpczogNAog
Q3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTIuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi5odG1sCmluZGV4IGE4
OTM4ZDYuLjEwNmE0YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC1jdXJzb3ItMi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi5odG1sCkBAIC0xLDEzOCArMSwxMCBAQAotVGhp
cyB0ZXN0cyBjdXJzb3JzIHRoYXQgaXRlcmF0ZSBvdmVyIHBhcnRzIG9mIGluZGV4ZXMuPGJyPgot
PGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRvbmUiKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWZ1bmN0
aW9uIGxvZ0N1cnNvcihjdXJzb3IpCi17Ci0gICAgbG9nKCJDdXJzb3IgZGlyZWN0aW9uIGlzOiAi
ICsgY3Vyc29yLmRpcmVjdGlvbik7Ci0gICAgbG9nKCJDdXJzb3Igc291cmNlIGlzOiAiICsgY3Vy
c29yLnNvdXJjZS5uYW1lKTsgICAgCi0gICAgbG9nKCJDdXJzb3Iga2V5IGlzOiAiICsgY3Vyc29y
LmtleSk7ICAgIAotICAgIGxvZygiQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAiICsgY3Vyc29yLnBy
aW1hcnlLZXkpOwotICAgIGxvZygiQ3Vyc29yIHZhbHVlIGlzOiAiICsgY3Vyc29yLnZhbHVlKTsg
IAotfQotCi1mdW5jdGlvbiBzZXR1cFJlcXVlc3QocmVxdWVzdCkKLXsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoIXJlcXVlc3QucmVzdWx0KSB7Ci0g
ICAgICAgICAgICBzdGFydE5leHRDdXJzb3IoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBsb2coIlN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yIik7
Ci0gICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7ICAKLSAgICAgICAgcmVxdWVzdC5y
ZXN1bHQuY29udGludWUoKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICBsb2coIlVuZXhwZWN0ZWQgZXJyb3Igb3BlbmluZyBvciBpdGVyYXRpbmcg
Y3Vyc29yIik7Ci0gICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7Ci0gICAgICAgIGRv
bmUoKTsKLSAgICB9IAotfQotCi12YXIgaW5kZXg7Ci0KLWZ1bmN0aW9uIHRlc3RDdXJzb3JEaXJl
Y3Rpb24oZGlyZWN0aW9uLCByYW5nZSkKLXsKLSAgICB2YXIgcmVxdWVzdCA9IGluZGV4Lm9wZW5D
dXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7Ci0gICAgc2V0dXBSZXF1ZXN0KHJlcXVlc3QpOwotfQot
Ci12YXIgY3Vyc29yQ29tbWFuZHMgPSBbCi0gICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ3ByZXZ1
bmlxdWUnLCBJREJLZXlSYW5nZS5vbmx5KCdCJykpIiwKLSAgICAidGVzdEN1cnNvckRpcmVjdGlv
bigncHJldicsIElEQktleVJhbmdlLm9ubHkoJ0InKSkiLAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0
aW9uKCduZXh0dW5pcXVlJywgSURCS2V5UmFuZ2Uub25seSgnQicpKSIsCi0gICAgInRlc3RDdXJz
b3JEaXJlY3Rpb24oJ25leHQnLCBJREJLZXlSYW5nZS5vbmx5KCdCJykpIiwKLSAgICAidGVzdEN1
cnNvckRpcmVjdGlvbigncHJldnVuaXF1ZScsIElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0MnKSki
LAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKCdwcmV2JywgSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgnQycpKSIsCi0gICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ25leHR1bmlxdWUnLCBJREJLZXlS
YW5nZS5sb3dlckJvdW5kKCdDJykpIiwKLSAgICAidGVzdEN1cnNvckRpcmVjdGlvbignbmV4dCcs
IElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0MnKSkiLAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9u
KCdwcmV2dW5pcXVlJywgSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgnQicpKSIsCi0gICAgInRlc3RD
dXJzb3JEaXJlY3Rpb24oJ3ByZXYnLCBJREJLZXlSYW5nZS51cHBlckJvdW5kKCdCJykpIiwKLSAg
ICAidGVzdEN1cnNvckRpcmVjdGlvbignbmV4dHVuaXF1ZScsIElEQktleVJhbmdlLnVwcGVyQm91
bmQoJ0InKSkiLAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKCduZXh0JywgSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCgnQicpKSIsCi0gICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ3ByZXZ1bmlxdWUn
LCBJREJLZXlSYW5nZS5ib3VuZCgnQicsICdDJykpIiwKLSAgICAidGVzdEN1cnNvckRpcmVjdGlv
bigncHJldicsIElEQktleVJhbmdlLmJvdW5kKCdCJywgJ0MnKSkiLAotICAgICJ0ZXN0Q3Vyc29y
RGlyZWN0aW9uKCduZXh0dW5pcXVlJywgSURCS2V5UmFuZ2UuYm91bmQoJ0InLCAnQycpKSIsCi0g
ICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ25leHQnLCBJREJLZXlSYW5nZS5ib3VuZCgnQicsICdD
JykpIiwKLSAgICAidGVzdEN1cnNvckRpcmVjdGlvbigncHJldnVuaXF1ZScsIElEQktleVJhbmdl
LmJvdW5kKCdCJywgJ0QnLCB0cnVlLCB0cnVlKSkiLAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9u
KCdwcmV2JywgSURCS2V5UmFuZ2UuYm91bmQoJ0InLCAnRCcsIHRydWUsIHRydWUpKSIsCi0gICAg
InRlc3RDdXJzb3JEaXJlY3Rpb24oJ25leHR1bmlxdWUnLCBJREJLZXlSYW5nZS5ib3VuZCgnQics
ICdEJywgdHJ1ZSwgdHJ1ZSkpIiwKLSAgICAidGVzdEN1cnNvckRpcmVjdGlvbignbmV4dCcsIElE
QktleVJhbmdlLmJvdW5kKCdCJywgJ0QnLCB0cnVlLCB0cnVlKSkiLAotXTsKLQotZnVuY3Rpb24g
c3RhcnROZXh0Q3Vyc29yKCkKLXsKLSAgICBpZiAoIWN1cnNvckNvbW1hbmRzLmxlbmd0aCkgewot
ICAgICAgICBkb25lKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgY29tbWFu
ZCA9IGN1cnNvckNvbW1hbmRzLnBvcCgpOwotICAgIGxvZyAoIiIpOwotICAgIGxvZygiU3RhcnRp
bmcgYSBuZXcgY3Vyc29yOiAiICsgY29tbWFuZCk7Ci0gICAgZXZhbChjb21tYW5kKTsKLX0KLSAg
ICAKLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleEN1cnNv
cjJEYXRhYmFzZSIsIDEpOwotY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgewotICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24g
LSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVy
c2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFu
c2FjdGlvbjsKLSAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIHZh
ciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKLSAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgxIiwg
ImJhciIpOwotCi0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQSIsIGJhejogImEiIH0sIDEp
OwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkEiLCBiYXo6ICJhIiB9LCAzKTsKLSAgICBv
YmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiwgYmF6OiAiYSIgfSwgMik7Ci0gICAgb2JqZWN0U3Rv
cmUucHV0KHsgYmFyOiAiQiIsIGJhejogImIiIH0sIDUpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7
IGJhcjogIkIiLCBiYXo6ICJiIiB9LCA2KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJC
IiwgYmF6OiAiYiIgfSwgNCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQyIsIGJhejog
ImMiIH0sIDcpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkMiLCBiYXo6ICJjIiB9LCA5
KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJDIiwgYmF6OiAiYyIgfSwgOCk7Ci0gICAg
b2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRCIsIGJhejogImQiIH0sIDExKTsKLSAgICBvYmplY3RT
dG9yZS5wdXQoeyBiYXI6ICJEIiwgYmF6OiAiZCIgfSwgMTIpOwotICAgIG9iamVjdFN0b3JlLnB1
dCh7IGJhcjogIkQiLCBiYXo6ICJkIiB9LCAxMCk7Ci0KLSAgICB2YXIgcmVxID0gaW5kZXguY291
bnQoKTsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiVGVz
dEluZGV4MSBjb3VudCBpczogIiArIHJlcS5yZXN1bHQpOwotICAgIH0KLQotICAgIHN0YXJ0TmV4
dEN1cnNvcigpOwotICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0K
LQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtY3Vyc29yLTIuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMy1leHBlY3RlZC50eHQKaW5k
ZXggMTRhNGFjYy4uNmU3NTJiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMtZXhwZWN0ZWQudHh0CkBA
IC0xLDEwICsxLDExIEBACiBUaGlzIHRlc3RzIHRoYXQgaW5kZXggY3Vyc29ycyBwcm9wZXJseSBo
YW5kbGUgY2hhbmdpbmcgaW5kZXhlcy4KLUluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJz
aW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIAotU3RhcnRpbmcgYSBuZXcgY3Vyc29yOiB0ZXN0Q3Vy
c29yRGlyZWN0aW9uKGluZGV4LCAnbmV4dCcpCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
LVRlc3RJbmRleDEgY291bnQgaXM6IDE4CiAKK0luaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2
ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKK1N0YXJ0aW5nIGEgbmV3IGN1cnNvcjogdGVzdEN1
cnNvckRpcmVjdGlvbihpbmRleCwgJ25leHQnKQorVGVzdEluZGV4MSBjb3VudCBpczogMTgKIFN1
Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBu
ZXh0CiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCkBAIC04MywxMSArODQsOCBAQCBDdXJz
b3IgcHJpbWFyeSBrZXkgaXM6IDE4CiBDdXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQog
RGVsZXRlZCBrZXkgMTggZnJvbSBvYmplY3Qgc3RvcmUKIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVy
YXRpbmcgY3Vyc29yCi0KIFN0YXJ0aW5nIGEgbmV3IGN1cnNvcjogdGVzdEN1cnNvckRpcmVjdGlv
bihpbmRleCwgJ3ByZXYnKQotCiBUZXN0SW5kZXgxIGNvdW50IGlzOiAxOAotCiBTdWNjZXNzIG9w
ZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldgogQ3Vy
c29yIHNvdXJjZSBpczogVGVzdEluZGV4MQpAQCAtMTY2LDExICsxNjQsOCBAQCBDdXJzb3IgcHJp
bWFyeSBrZXkgaXM6IDEKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBEZWxldGVk
IGtleSAxIGZyb20gb2JqZWN0IHN0b3JlCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1
cnNvcgotCiBTdGFydGluZyBhIG5ldyBjdXJzb3I6IHRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgs
ICduZXh0dW5pcXVlJykKLQogVGVzdEluZGV4MSBjb3VudCBpczogMTgKLQogU3VjY2VzcyBvcGVu
aW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IG5leHR1bmlxdWUK
IEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDEKQEAgLTIzMSwxMSArMjI2LDggQEAgQ3Vyc29y
IHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIERlbGV0ZWQga2V5IDE4IGZyb20gb2JqZWN0IHN0
b3JlCiBEZWxldGVkIGtleSAxIGZyb20gb2JqZWN0IHN0b3JlCiBTdWNjZXNzIG9wZW5pbmcgb3Ig
aXRlcmF0aW5nIGN1cnNvcgotCiBTdGFydGluZyBhIG5ldyBjdXJzb3I6IHRlc3RDdXJzb3JEaXJl
Y3Rpb24oaW5kZXgsICdwcmV2dW5pcXVlJykKLQogVGVzdEluZGV4MSBjb3VudCBpczogMTgKLQog
U3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6
IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDEKQEAgLTI3OSw1ICsyNzEs
NyBAQCBEZWxldGVkIGtleSAzIGZyb20gb2JqZWN0IHN0b3JlCiBEZWxldGVkIGtleSAyIGZyb20g
b2JqZWN0IHN0b3JlCiBEZWxldGVkIGtleSAxIGZyb20gb2JqZWN0IHN0b3JlCiBTdWNjZXNzIG9w
ZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgotRG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMy5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLmh0bWwKaW5kZXggNjE5NzVmNS4u
NjVlMWJmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LWN1cnNvci0zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2luZGV4LWN1cnNvci0zLmh0bWwKQEAgLTEsMTc3ICsxLDEwIEBACi1UaGlzIHRlc3Rz
IHRoYXQgaW5kZXggY3Vyc29ycyBwcm9wZXJseSBoYW5kbGUgY2hhbmdpbmcgaW5kZXhlcy48YnI+
Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFy
IGluZGV4OwotdmFyIG9iamVjdFN0b3JlOwotCi1mdW5jdGlvbiBsb2dDdXJzb3IoY3Vyc29yKQot
ewotICAgIGxvZygiQ3Vyc29yIGRpcmVjdGlvbiBpczogIiArIGN1cnNvci5kaXJlY3Rpb24pOwot
ICAgIGxvZygiQ3Vyc29yIHNvdXJjZSBpczogIiArIGN1cnNvci5zb3VyY2UubmFtZSk7ICAgIAot
ICAgIGxvZygiQ3Vyc29yIGtleSBpczogIiArIGN1cnNvci5rZXkpOyAgICAKLSAgICBsb2coIkN1
cnNvciBwcmltYXJ5IGtleSBpczogIiArIGN1cnNvci5wcmltYXJ5S2V5KTsKLSAgICBsb2coIkN1
cnNvciB2YWx1ZSBpczogIiArIGN1cnNvci52YWx1ZSk7ICAKLX0KLQotZnVuY3Rpb24gc2V0dXBS
ZXF1ZXN0KHJlcXVlc3QpCi17Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgbG9nKCJTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOwotICAg
ICAgICBpZiAocmVxdWVzdC5yZXN1bHQpCi0gICAgICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5y
ZXN1bHQpOwotCi0gICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdCAmJiByZXF1ZXN0Lml0ZXJhdGVk
T25jZSkgewotICAgICAgICAgICAgdmFyIHByaW1hcnlLZXkgPSByZXF1ZXN0LnJlc3VsdC5wcmlt
YXJ5S2V5OwotICAgICAgICAgICAgaWYgKHByaW1hcnlLZXkpIHsKLSAgICAgICAgICAgICAgICBv
YmplY3RTdG9yZS5kZWxldGUocHJpbWFyeUtleSkub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxvZygiRGVsZXRlZCBrZXkgIiArIHByaW1hcnlLZXkgKyAiIGZy
b20gb2JqZWN0IHN0b3JlIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZh
ciBuZXh0UHJpbWFyeUtleSA9IHByaW1hcnlLZXk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVl
c3QucmVzdWx0LmRpcmVjdGlvbi5zdGFydHNXaXRoKCJuZXh0IikpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbmV4dFByaW1hcnlLZXkrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRQcmlt
YXJ5S2V5ID4gMTgpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0UHJpbWFyeUtleSA9IDA7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG5leHRQcmltYXJ5
S2V5LS07Ci0KLSAgICAgICAgICAgICAgICBpZiAobmV4dFByaW1hcnlLZXkgPiAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmRlbGV0ZShuZXh0UHJpbWFyeUtleSkub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2coIkRlbGV0ZWQg
a2V5ICIgKyBuZXh0UHJpbWFyeUtleSArICIgZnJvbSBvYmplY3Qgc3RvcmUiKTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBEZWxldGUgYW4gYWRkaXRpb25hbCBpdGVtIGZvciB1bmlxdWUgY3Vyc29y
cyB0byBtYWtlIHN1cmUgdGhleSBpdGVyYXRlIGRlZXBlciBpbnRvIHRoZSBzZXRzCi0gICAgICAg
ICAgICAgICAgLy8gb2YgcHJpbWFyeSBrZXlzIGFuZC9vciBza2lwIHNvbWUgaW5kZXgga2V5cyBh
bHRvZ2V0aGVyLgotICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdC5kaXJlY3Rpb24u
ZW5kc1dpdGgoInVuaXF1ZSIpKSB7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICB2YXIgbmV4dE5leHRQcmltYXJ5S2V5ID0gbmV4dFByaW1hcnlLZXk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdC5kaXJlY3Rpb24uc3RhcnRzV2l0aCgibmV4dCIpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0TmV4dFByaW1hcnlLZXkrKzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChuZXh0TmV4dFByaW1hcnlLZXkgPiAxOCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0TmV4dFByaW1hcnlLZXkgPSAwOwotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHROZXh0UHJpbWFyeUtleS0t
OwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TmV4dFByaW1hcnlLZXkgPiAwKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUobmV4dE5leHRQcmltYXJ5
S2V5KS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2coIkRlbGV0ZWQga2V5ICIgKyBuZXh0TmV4dFByaW1hcnlLZXkgKyAiIGZyb20gb2JqZWN0
IHN0b3JlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgCi0g
ICAgICAgIHJlcXVlc3QuaXRlcmF0ZWRPbmNlID0gdHJ1ZTsKLQotICAgICAgICBpZiAocmVxdWVz
dC5yZXN1bHQpCi0gICAgICAgICAgICByZXF1ZXN0LnJlc3VsdC5jb250aW51ZSgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzdGFydE5leHRDdXJzb3IoKTsKLSAgICB9Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICBsb2coIlVuZXhwZWN0ZWQgZXJyb3Ig
b3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yIik7Ci0gICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0
LnJlc3VsdCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9IAotfQotCi1mdW5jdGlvbiB0ZXN0Q3Vy
c29yRGlyZWN0aW9uKGluZGV4LCBkaXJlY3Rpb24pCi17Ci0gICAgdmFyIHJhbmdlID0gSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5pdHkpOwotICAgIHZhciByZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uKTsKLSAgICBzZXR1cFJlcXVlc3QocmVxdWVzdCk7Ci19
Ci0KLXZhciBjdXJzb3JDb21tYW5kcyA9IFsKLSAgICAidGVzdEN1cnNvckRpcmVjdGlvbihpbmRl
eCwgJ3ByZXZ1bmlxdWUnKSIsCi0gICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgsICduZXh0
dW5pcXVlJykiLAotICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKGluZGV4LCAncHJldicpIiwKLSAg
ICAidGVzdEN1cnNvckRpcmVjdGlvbihpbmRleCwgJ25leHQnKSIsCi1dOwotCi1mdW5jdGlvbiBz
dGFydE5leHRDdXJzb3IoKQotewotICAgIGlmICghY3Vyc29yQ29tbWFuZHMubGVuZ3RoKSB7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBwb3B1bGF0
ZU9iamVjdFN0b3JlKCk7Ci0KLSAgICB2YXIgY29tbWFuZCA9IGN1cnNvckNvbW1hbmRzLnBvcCgp
OwotICAgIGxvZygiPGJyPlN0YXJ0aW5nIGEgbmV3IGN1cnNvcjogIiArIGNvbW1hbmQpOwotICAg
IHZhciByZXEgPSBpbmRleC5jb3VudCgpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgbG9nKCI8YnI+VGVzdEluZGV4MSBjb3VudCBpczogIiArIHJlcS5yZXN1bHQg
KyAiPGJyPiIpOwotICAgIH0KLSAgICAKLSAgICBldmFsKGNvbW1hbmQpOwotfQotCi1mdW5jdGlv
biBwb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJB
IiB9LCAxKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAyKTsKLSAgICBvYmpl
Y3RTdG9yZS5wdXQoeyBiYXI6ICJCIiB9LCAzKTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJCIiB9LCA0KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJDIiB9LCA1KTsKLSAgICBv
YmplY3RTdG9yZS5wdXQoeyBiYXI6ICJDIiB9LCA2KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBi
YXI6ICJEIiB9LCA3KTsKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJEIiB9LCA4KTsKLSAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJFIiB9LCA5KTsKLSAgICBvYmplY3RTdG9yZS5wdXQo
eyBiYXI6ICJFIiB9LCAxMCk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRiIgfSwgMTEp
OwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkYiIH0sIDEyKTsKLSAgICBvYmplY3RTdG9y
ZS5wdXQoeyBiYXI6ICJHIiB9LCAxMyk7Ci0gICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRyIg
fSwgMTQpOyAgICAKLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJIIiB9LCAxNSk7Ci0gICAg
b2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiSCIgfSwgMTYpOyAgCi0gICAgb2JqZWN0U3RvcmUucHV0
KHsgYmFyOiAiSSIgfSwgMTcpOwotICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkkiIH0sIDE4
KTsgIAotfQotCi12YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSW5k
ZXhDdXJzb3IzRGF0YWJhc2UiLCAxKTsKLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2
ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVl
c3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiKTsKLSAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgx
IiwgImJhciIpOwotICAgIAotICAgIHN0YXJ0TmV4dEN1cnNvcigpOwotICAgIAotICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7
Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
fQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvaW5kZXgtY3Vyc29yLTMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1j
b3VudC1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWJhc2ljLWV4cGVjdGVkLnR4dAppbmRleCA4OWY5ZDEzLi4z
NDVmYWFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aW5kZXgtZ2V0LWNvdW50LWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWJhc2ljLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdHMgdGhlIG1vc3QgYmFzaWMgb3BlcmF0aW9uIG9mIHRo
ZSBJREJJbmRleCBtZXRob2RzIGdldCgpLCBnZXRLZXkoKSwgYW5kIGNvdW50KCkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVy
c2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBnZXQgcmVzdWx0IGlzOiBbb2JqZWN0IE9iamVjdF0K
IGJhciBpcyBnb29kCkBAIC02LDUgKzEwLDcgQEAgYmF6IGlzIGJhZAogZ2V0S2V5IHJlc3VsdCBp
czogZm9vCiBjb3VudCByZXN1bHQgaXM6IDEKIEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdl
IHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1iYXNpYy5odG1sCmluZGV4
IDMzN2MxMTIuLjA0NWE0ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pbmRleC1nZXQtY291bnQtYmFzaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWJhc2ljLmh0bWwKQEAgLTEs
NjcgKzEsMTAgQEAKLVRoaXMgdGVzdHMgdGhlIG1vc3QgYmFzaWMgb3BlcmF0aW9uIG9mIHRoZSBJ
REJJbmRleCBtZXRob2RzIGdldCgpLCBnZXRLZXkoKSwgYW5kIGNvdW50KCkuPGJyPgotPGRpdiBp
ZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRvbmUiKTsKLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQot
Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLXZhciBjcmVhdGVS
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleEdldENvdW50QmFzaWNEYXRhYmFz
ZSIsIDEpOwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBl
dmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsK
LQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9u
OwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgdmFyIG9iamVj
dFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwot
ICAgIHZhciBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgiLCAiYmFy
Iik7Ci0KLSAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJnb29kIiwgYmF6OiAiYmFkIiB9LCAi
Zm9vIik7Ci0gICAgCi0gICAgdmFyIHJlcXVlc3QxID0gaW5kZXguZ2V0KCJnb29kIik7Ci0gICAg
cmVxdWVzdDEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiZ2V0IHJlc3Vs
dCBpczogIiArIHJlcXVlc3QxLnJlc3VsdCk7Ci0gICAgICAgIGZvciAobiBpbiByZXF1ZXN0MS5y
ZXN1bHQpCi0gICAgICAgICAgICBsb2cobiArICIgaXMgIiArIHJlcXVlc3QxLnJlc3VsdFtuXSk7
Ci0gICAgfQotCi0gICAgcmVxdWVzdDIgPSBpbmRleC5nZXRLZXkoImdvb2QiKTsKLSAgICByZXF1
ZXN0Mi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCJnZXRLZXkgcmVzdWx0
IGlzOiAiICsgcmVxdWVzdDIucmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgdmFyIHJlcXVlc3Qz
ID0gaW5kZXguY291bnQoKTsKLSAgICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgbG9nKCJjb3VudCByZXN1bHQgaXM6ICIgKyByZXF1ZXN0My5yZXN1bHQpOwotICAg
IH0KLSAgICAgICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0g
ICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBs
ZXRlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleC1nZXQtY291bnQtYmFzaWMuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1mYWlsdXJlcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWZh
aWx1cmVzLWV4cGVjdGVkLnR4dAppbmRleCAwZTE3MDNkLi5mYTE5MWJiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWZhaWx1
cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaW5kZXgtZ2V0LWNvdW50LWZhaWx1cmVzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAK
IFRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBj
YWxsaW5nIHRoZSBJREJJbmRleCBtZXRob2RzIGdldCgpLCBnZXRLZXkoKSwgYW5kIGNvdW50KCku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVk
OiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBGYWlsZWQgdG8gZ2V0IHdpdGggYSBu
dWxsIGtleQogRmFpbGVkIHRvIGdldEtleSB3aXRoIGEgbnVsbCBrZXkKQEAgLTE0LDUgKzE4LDcg
QEAgRmFpbGVkIHRvIGdldCB3aGlsZSB0cmFuc2FjdGlvbiBpbmFjdGl2ZQogRmFpbGVkIHRvIGdl
dEtleSB3aGlsZSB0cmFuc2FjdGlvbiBpbmFjdGl2ZQogRmFpbGVkIHRvIGNvdW50IHdoaWxlIHRy
YW5zYWN0aW9uIGluYWN0aXZlCiByZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotRG9uZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1nZXQtY291
bnQtZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9p
bmRleC1nZXQtY291bnQtZmFpbHVyZXMuaHRtbAppbmRleCBmMmZhZjM4Li40YTUzNGI0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNv
dW50LWZhaWx1cmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2luZGV4LWdldC1jb3VudC1mYWlsdXJlcy5odG1sCkBAIC0xLDE3MSArMSwxMCBAQAotVGhp
cyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxp
bmcgdGhlIElEQkluZGV4IG1ldGhvZHMgZ2V0KCksIGdldEtleSgpLCBhbmQgY291bnQoKS48YnI+
Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygiRG9uZSIpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotdmFy
IGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkluZGV4R2V0Q291bnRGYWls
dXJlc0RhdGFiYXNlIiwgMSk7Ci12YXIgZGF0YWJhc2U7Ci12YXIgaW5kZXg7Ci0KLWNyZWF0ZVJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coIkluaXRp
YWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAi
IE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25U
cmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBl
dmVudC50YXJnZXQucmVzdWx0OwotICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICBpbmRleCA9IG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgiLCAiZm9vIik7Ci0gICAgCi0gICAgdHJ5IHsKLSAgICAg
ICAgaW5kZXguZ2V0KG51bGwpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZhaWxl
ZCB0byBnZXQgd2l0aCBhIG51bGwga2V5Iik7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAg
aW5kZXguZ2V0S2V5KG51bGwpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZhaWxl
ZCB0byBnZXRLZXkgd2l0aCBhIG51bGwga2V5Iik7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAg
ICAgaW5kZXguY291bnQobnVsbCk7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGxvZygiRmFp
bGVkIHRvIGNvdW50IHdpdGggYSBudWxsIHJhbmdlIik7Ci0gICAgfQotICAgIAotICAgIG9iamVj
dFN0b3JlLmRlbGV0ZUluZGV4KCJUZXN0SW5kZXgiKTsKLSAgICAKLSAgICB0cnkgewotICAgICAg
ICBpbmRleC5nZXQoInRlc3QiKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJGYWls
ZWQgdG8gZ2V0IHdpdGggZGVsZXRlZCBJREJJbmRleCIpOwotICAgIH0KLSAgICAKLSAgICB0cnkg
ewotICAgICAgICBpbmRleC5nZXRLZXkoInRlc3QiKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgbG9nKCJGYWlsZWQgdG8gZ2V0S2V5IHdpdGggZGVsZXRlZCBJREJJbmRleCIpOwotICAgIH0K
LSAgICAKLSAgICB0cnkgewotICAgICAgICBpbmRleC5jb3VudCgpOwotICAgIH0gY2F0Y2goZSkg
ewotICAgICAgICBsb2coIkZhaWxlZCB0byBjb3VudCB3aXRoIGRlbGV0ZWQgSURCSW5kZXgiKTsK
LSAgICB9Ci0gICAgCi0gICAgdHJ5IHsKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgo
IlRlc3RJbmRleCIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZhaWxlZCB0byBk
ZWxldGUgYSBub25leGlzdGVudCBJREJJbmRleCIpOwotICAgIH0KLQotICAgIGRhdGFiYXNlLmRl
bGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB0cnkgewotICAgICAgICBp
bmRleC5nZXQobnVsbCk7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICBsb2coIkZhaWxlZCB0
byBnZXQgd2l0aCBkZWxldGVkIElEQk9iamVjdFN0b3JlIik7Ci0gICAgfQotCi0gICAgdHJ5IHsK
LSAgICAgICAgaW5kZXguZ2V0S2V5KG51bGwpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
bG9nKCJGYWlsZWQgdG8gZ2V0S2V5IHdpdGggZGVsZXRlZCBJREJPYmplY3RTdG9yZSIpOwotICAg
IH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGluZGV4LmNvdW50KG51bGwpOwotICAgIH0gY2F0Y2go
ZSkgewotICAgICAgICAgbG9nKCJGYWlsZWQgdG8gY291bnQgd2l0aCBkZWxldGVkIElEQk9iamVj
dFN0b3JlIik7Ci0gICAgfQotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRl
T2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTIiKTsKLSAgICBvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleCgiVGVzdEluZGV4IiwgImZvbyIpOwotICAgICAgICAKLSAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdy
YWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgY29udGludWVUZXN0MSgpOwot
ICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gY29udGludWVUZXN0MSgpCi17Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0
YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZTIiLCAicmVhZG9ubHkiKTsKLSAgICB2
YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3Jl
MiIpOwotICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoIlRlc3RJbmRleCIpOwotCi0gICAg
Ly8gU3BpbiB0aGUgdHJhbnNhY3Rpb24gd2l0aCBnZXQgcmVxdWVzdHMgdG8ga2VlcCBpdCBhbGl2
ZSBsb25nIGVub3VnaCBmb3IgdGhlIHNldFRpbWVvdXQgdG8gZmlyZS4KLSAgICB2YXIgY2FuRmlu
aXNoID0gZmFsc2U7Ci0gICAgdmFyIHNwaW5HZXQgPSBmdW5jdGlvbigpIHsgCi0gICAgICAgIG9i
amVjdFN0b3JlLmdldCgiZm9vIikub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBpZiAoIWNhbkZpbmlzaCkKLSAgICAgICAgICAgICAgICBzcGluR2V0KCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgc3BpbkdldCgpOwotCi0gICAgdmFyIHRlc3RXaGlsZUluYWN0aXZlID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbmRleC5nZXQobnVsbCk7Ci0g
ICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGdldCB3aGls
ZSB0cmFuc2FjdGlvbiBpbmFjdGl2ZSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIGluZGV4LmdldEtleShudWxsKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAg
ICAgICAgICAgbG9nKCJGYWlsZWQgdG8gZ2V0S2V5IHdoaWxlIHRyYW5zYWN0aW9uIGluYWN0aXZl
Iik7Ci0gICAgICAgIH0KLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgaW5kZXguY291bnQo
bnVsbCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgIGxvZygiRmFpbGVkIHRv
IGNvdW50IHdoaWxlIHRyYW5zYWN0aW9uIGluYWN0aXZlIik7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FuRmluaXNoID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgc2V0VGltZW91dCh0ZXN0V2hpbGVJ
bmFjdGl2ZSwgMCk7Ci0gICAgCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9y
dCIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFu
c2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNh
Y3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygicmVhZG9ubHkg
dHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsK
LSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBz
cmM9InJlc291cmNlcy9pbmRleC1nZXQtY291bnQtZmFpbHVyZXMuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2tleXBhdGgtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2tleXBhdGgtYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IDBkNmMxY2Uu
LmY1ZmM0MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9rZXlwYXRoLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4va2V5cGF0aC1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsMTUg
QEAKK1RoaXMgdGVzdCBjcmVhdGVzIHNvbWUgb2JqZWN0IHN0b3JlcyB3aXRoIGtleXBhdGhzLiBJ
dCB0aGVuIHB1dHMgc29tZSB2YWx1ZXMgaW4gdGhlbS4gSXQgbWFrZXMgc3VyZSB0aGUga2V5cyB1
c2VkIGFyZSBhcyBleHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFM
RVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24g
LSAxCiBBTEVSVDogb2JqZWN0IHB1dCBTVUNDRVNTIC0gZm9vMQogQUxFUlQ6IGFycmF5IHB1dCBT
VUNDRVNTIC0gZm9vMgogQUxFUlQ6IFNlY29uZCBvYmplY3QgcHV0IFNVQ0NFU1MgLSBiYXoxCiBB
TEVSVDogU2Vjb25kIGFycmF5IHB1dCBTVUNDRVNTIC0gYmF6MgogQUxFUlQ6IEluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1BTEVSVDogRG9uZQotVGhp
cyB0ZXN0IGNyZWF0ZXMgc29tZSBvYmplY3Qgc3RvcmVzIHdpdGgga2V5cGF0aHMuCi1JdCB0aGVu
IHB1dHMgc29tZSB2YWx1ZXMgaW4gdGhlbS4KLUl0IG1ha2VzIHN1cmUgdGhlIGtleXMgdXNlZCBh
cmUgYXMgZXhwZWN0ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2tleXBhdGgtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9rZXlwYXRoLWJhc2ljLmh0bWwKaW5kZXggMzVkYWViMC4uZThlNjQyYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2tleXBhdGgtYmFzaWMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4va2V5cGF0aC1iYXNp
Yy5odG1sCkBAIC0xLDc0ICsxLDkgQEAKLVRoaXMgdGVzdCBjcmVhdGVzIHNvbWUgb2JqZWN0IHN0
b3JlcyB3aXRoIGtleXBhdGhzLjxicj4KLUl0IHRoZW4gcHV0cyBzb21lIHZhbHVlcyBpbiB0aGVt
Ljxicj4KLUl0IG1ha2VzIHN1cmUgdGhlIGtleXMgdXNlZCBhcmUgYXMgZXhwZWN0ZWQuPGJyPgot
PHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVl
c3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIktleXBhdGhCYXNpY1Rlc3REYXRhYmFzZSIsIDEp
OwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0g
ICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0g
ICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsgICAgCi0gICAgdmFyIG9iamVj
dFN0b3JlMSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJPUzEiLCB7IGtleVBhdGg6ICJm
b28iIH0pOwotICAgIHZhciBvYmplY3RTdG9yZTIgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9y
ZSgiT1MyIiwgeyBrZXlQYXRoOiAiZm9vLmJhciIgfSk7Ci0KLSAgICB2YXIgb2JqZWN0ID0gbmV3
IE9iamVjdDsKLSAgICBvYmplY3Quc3R1ZmYgPSAiYmFyMSI7Ci0gICAgb2JqZWN0LmZvbyA9ICJm
b28xIjsKLSAgICAgICAgCi0gICAgdmFyIHJlcXVlc3QxID0gb2JqZWN0U3RvcmUxLnB1dChvYmpl
Y3QpOwotICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAg
IGFsZXJ0KCJvYmplY3QgcHV0IFNVQ0NFU1MgLSAiICsgcmVxdWVzdDEucmVzdWx0KTsKLSAgICB9
Ci0KLSAgICB2YXIgYXJyYXkgPSB7IGZvbzogImZvbzIiLCBzdHVmZjogImJhcjIiIH07Ci0KLSAg
ICB2YXIgcmVxdWVzdDIgPSBvYmplY3RTdG9yZTEucHV0KGFycmF5KTsKLSAgICByZXF1ZXN0Mi5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiYXJyYXkgcHV0IFNV
Q0NFU1MgLSAiICsgcmVxdWVzdDIucmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgb2JqZWN0LmZv
byA9IG5ldyBPYmplY3Q7Ci0gICAgb2JqZWN0LmZvby5iYXIgPSAiYmF6MSI7Ci0gICAgdmFyIHJl
cXVlc3QzID0gb2JqZWN0U3RvcmUyLnB1dChvYmplY3QpOwotICAgIHJlcXVlc3QzLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJTZWNvbmQgb2JqZWN0IHB1dCBT
VUNDRVNTIC0gIiArIHJlcXVlc3QzLnJlc3VsdCk7Ci0gICAgfQotCi0gICAgYXJyYXkuZm9vID0g
eyBiYXI6ICJiYXoyIiB9OwotCi0gICAgdmFyIHJlcXVlc3Q0ID0gb2JqZWN0U3RvcmUyLnB1dChh
cnJheSk7Ci0gICAgcmVxdWVzdDQub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoIlNlY29uZCBhcnJheSBwdXQgU1VDQ0VTUyAtICIgKyByZXF1ZXN0NC5yZXN1bHQp
OwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0g
ICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29t
cGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9rZXlwYXRoLWJhc2ljLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9vYmplY3RzdG9yZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCA4NTllNDBiLi5jMGY4
MjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2Jq
ZWN0c3RvcmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsOCBAQAogVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0aGUgcmVhZG9ubHkgYXR0cmlidXRl
cyBvbiBhbiBJREJPYmplY3RTdG9yZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
IEZpcnN0IHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBb
b2JqZWN0IElEQlRyYW5zYWN0aW9uXSAtIHZlcnNpb25jaGFuZ2UKIFtvYmplY3QgSURCRGF0YWJh
c2VdCkBAIC0yNiw1ICszMCw3IEBAIEJhciBpbmRleAogQmF6IGluZGV4CiBGb28gaW5kZXgKIHJl
YWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdHRyaWJ1dGVzLmh0
bWwKaW5kZXggMGU3NGQzMS4uNzhiNDY0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF0dHJpYnV0ZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXR0cmlidXRlcy5o
dG1sCkBAIC0xLDEwNyArMSwxMCBAQAotVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0aGUgcmVhZG9ubHkg
YXR0cmlidXRlcyBvbiBhbiBJREJPYmplY3RTdG9yZS48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwv
ZGl2PgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLXZh
ciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJPYmplY3RTdG9yZUF0dHJpYnV0ZXNU
ZXN0RGF0YWJhc2UiKTsKLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwot
fQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi12YXIg
ZGF0YWJhc2U7Ci0KLXJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpCi17
Ci0gICAgbG9nKCJGaXJzdCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQu
b2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0gICAg
Ci0gICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKLSAgICBkYXRhYmFzZSA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBsb2codHggKyAiIC0gIiArIHR4Lm1vZGUpOwotICAgIGxv
ZyhkYXRhYmFzZSk7Ci0KLSAgICB2YXIgb3MxID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUo
J1Rlc3RPYmplY3RTdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgLCBrZXlQYXRoOiAiZm9v
IiB9KTsKLSAgICB2YXIgb3MyID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoJ1Rlc3RPYmpl
Y3RTdG9yZTInLCB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0pOwotCi0gICAgbG9nKG9zMS5uYW1l
KTsKLSAgICBsb2cob3MyLm5hbWUpOwotICAgIGxvZyhvczEuYXV0b0luY3JlbWVudCk7Ci0gICAg
bG9nKG9zMi5hdXRvSW5jcmVtZW50KTsKLSAgICBsb2cob3MxLmtleVBhdGgpOwotICAgIGxvZyhv
czIua2V5UGF0aCk7Ci0gICAgbG9nKG9zMS50cmFuc2FjdGlvbik7Ci0gICAgbG9nKG9zMi50cmFu
c2FjdGlvbik7Ci0gICAgbG9nKG9zMS50cmFuc2FjdGlvbiA9PSB0eCk7Ci0gICAgbG9nKG9zMi50
cmFuc2FjdGlvbiA9PSB0eCk7Ci0gICAgbG9nKG9zMS50cmFuc2FjdGlvbiA9PSBvczIudHJhbnNh
Y3Rpb24pOwotICAgIAotICAgIG9zMi5jcmVhdGVJbmRleCgiRm9vIGluZGV4IiwgImZvbyIpOwot
ICAgIG9zMi5jcmVhdGVJbmRleCgiQmFyIGluZGV4IiwgImJhciIpOwotICAgIAotICAgIHZhciBu
YW1lcyA9IG9zMi5pbmRleE5hbWVzOwotICAgIGxvZygiT2JqZWN0IHN0b3JlIGhhcyBpbmRleGVz
OiIpCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkKLSAgICAgICAg
bG9nKG5hbWVzW2ldKTsKLSAgICAKLSAgICBvczIuY3JlYXRlSW5kZXgoIkJheiBpbmRleCIsICJi
YXoiKTsKLSAgICBsb2coIkFmdGVyIGFkZGluZyBhbm90aGVyLCBvYmplY3Qgc3RvcmUgbm93IGhh
cyBpbmRleGVzOiIpOwotICAgIG5hbWVzID0gb3MyLmluZGV4TmFtZXM7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkKLSAgICAgICAgbG9nKG5hbWVzW2ldKTsKLSAg
ICAKLSAgICB0eC5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJGaXJz
dCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0eC5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgbG9nKCJGaXJzdCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQi
KTsKLSAgICAgICAgY29udGludWVUZXN0KCk7Ci0gICAgfQotCi0gICAgdHgub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiRmlyc3QgdmVyc2lvbiBjaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCi17Ci0gICAgdmFyIHRyYW5zYWN0aW9u
ID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZTIiLCAicmVhZG9ubHkiKTsK
LSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlMiIpOwotICAgIAotICAgIGxvZygiSW4gYSBuZXcgdHJhbnNhY3Rpb24sIG9iamVjdCBz
dG9yZSBoYXMgaW5kZXhlczoiKTsKLSAgICB2YXIgbmFtZXMgPSBvYmplY3RTdG9yZS5pbmRleE5h
bWVzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCi0gICAgICAg
IGxvZyhuYW1lc1tpXSk7Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
IiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWRvbmx5IHRyYW5z
YWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2Fj
dGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL29iamVjdHN0b3JlLWF0dHJpYnV0ZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29iamVjdHN0b3JlLWN1cnNvci1hZHZhbmNlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJzb3ItYWR2
YW5jZS1mYWlsdXJlcy1leHBlY3RlZC50eHQKaW5kZXggNjc1ZTFmYy4uODI0YjBhNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1
cnNvci1hZHZhbmNlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVyZXMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsOCBAQAogVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFp
bHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCQ3Vyc29yLmFkdmFuY2UoKSBv
biBvYmplY3Qgc3RvcmUgY3Vyc29ycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEK
IEZhaWxlZCB0byBhZHZhbmNlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCB1bmRlZmluZWQgY291
bnQgYXJndW1lbnQKIEZhaWxlZCB0byBhZHZhbmNlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCAn
MCcgY291bnQgYXJndW1lbnQKQEAgLTgsNSArMTIsNyBAQCBGYWlsZWQgdG8gYWR2YW5jZSBhbiBv
YmplY3Qgc3RvcmUgY3Vyc29yIHdoZW4gaXQgaXMgYWxyZWFkeSBmZXRjaGluZyB0aGUgbmV4dCBy
ZQogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKIEZh
aWxlZCB0byBhZHZhbmNlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2hpbGUgdHJhbnNhY3Rpb24gaW5h
Y3RpdmUKIHJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNvci1hZHZhbmNl
LWZhaWx1cmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2Jq
ZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVyZXMuaHRtbAppbmRleCA2OTNmOGIxLi4xNGFm
NWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2Jq
ZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVyZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVy
ZXMuaHRtbApAQCAtMSwxNDQgKzEsMTAgQEAKLVRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1
cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElEQkN1cnNvci5hZHZhbmNlKCkgb24g
b2JqZWN0IHN0b3JlIGN1cnNvcnMuPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3Jp
cHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25l
KCkKLXsKLSAgICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkK
LXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1l
c3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWRE
Qi5vcGVuKCJJREJBZHZhbmNlRmFpbHVyZXNEYXRhYmFzZSIsIDEpOwotdmFyIGRhdGFiYXNlOwot
Ci1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
bG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRW
ZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZh
ciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIGRh
dGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRh
YmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDsgKytpKQotICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsg
aSwgaSk7Ci0gICAgCi0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGN1cnNv
ciA9IHJlcXVlc3QucmVzdWx0OwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjdXJzb3Iu
YWR2YW5jZSgpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVk
IHRvIGFkdmFuY2Ugb2JqZWN0IHN0b3JlIGN1cnNvciB3aXRoIHVuZGVmaW5lZCBjb3VudCBhcmd1
bWVudCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGN1cnNvci5h
ZHZhbmNlKDApOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVk
IHRvIGFkdmFuY2Ugb2JqZWN0IHN0b3JlIGN1cnNvciB3aXRoICcwJyBjb3VudCBhcmd1bWVudCIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGN1cnNvci5hZHZhbmNl
KC0xKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBsb2coIkZhaWxlZCB0byBh
ZHZhbmNlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCBuZWdhdGl2ZSBjb3VudCBhcmd1bWVudCIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2Uo
MSk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gYWR2
YW5jZSBvYmplY3Qgc3RvcmUgY3Vyc29yIGFmdGVyIGRlbGV0aW5nIG9iamVjdCBzdG9yZSIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVjcmVhdGUgdGhlIG9iamVjdCBzdG9yZSBmb3IgdXNl
IGluIHRoZSBuZXh0IHN0YWdlIG9mIHRlc3RpbmcKLSAgICAgICAgb2JqZWN0U3RvcmUgPSBkYXRh
YmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiUmVj
b3JkICIgKyBpLCBpKTsKLSAgICB9Ci0gICAgCi0gICAgdmFyIG9zMiA9IGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUyIik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDsgKytpKQotICAgICAgICBvczIucHV0KCJSZWNvcmQgIiArIGksIGkpOwotICAgICAgICAK
LSAgICB2YXIgcmVxdWVzdDIgPSBvczIub3BlbkN1cnNvcigpOwotICAgIHJlcXVlc3QyLm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgY3Vyc29yID0gcmVxdWVzdDIucmVzdWx0
OwotICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IGN1cnNvci5hZHZhbmNlKDEpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxv
ZygiRmFpbGVkIHRvIGFkdmFuY2UgYW4gb2JqZWN0IHN0b3JlIGN1cnNvciB3aGVuIGl0IGlzIGFs
cmVhZHkgZmV0Y2hpbmcgdGhlIG5leHQgcmVjb3JkIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmVx
dWVzdDIub25zdWNjZXNzID0gdW5kZWZpbmVkOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAg
ICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBjb250aW51ZVRlc3QxKCk7
Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKLXsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBk
YXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7Ci0gICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOwotICAgIHZhciBjdXJzb3IgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Ci0KLSAgICAv
LyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZl
IGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgotICAgIHZhciBjYW5GaW5p
c2ggPSBmYWxzZTsKLSAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKLSAgICAgICAgb2Jq
ZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGlmICghY2FuRmluaXNoKQotICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBzcGluR2V0KCk7Ci0KLSAgICB2YXIgdGVzdFdoaWxlSW5hY3RpdmUgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwot
ICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGFkdmFuY2Ug
b2JqZWN0IHN0b3JlIGN1cnNvciB3aGlsZSB0cmFuc2FjdGlvbiBpbmFjdGl2ZSIpOwotICAgICAg
ICB9Ci0gICAgICAgIGNhbkZpbmlzaCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIHNldFRpbWVv
dXQodGVzdFdoaWxlSW5hY3RpdmUsIDApOwotICAgIAotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygi
cmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0K
LQotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBs
b2coInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFp
bHVyZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNvci1jb250aW51
ZS1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWNvbnRpbnVlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dApp
bmRleCA4MWE5MzBkLi5kMDYyNWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWNvbnRpbnVlLWZhaWx1cmVzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0
c3RvcmUtY3Vyc29yLWNvbnRpbnVlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDgg
QEAKIFRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGls
ZSBjYWxsaW5nIElEQkN1cnNvci5jb250aW51ZSgpIG9uIG9iamVjdCBzdG9yZSBjdXJzb3JzLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDog
T2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQogRmFpbGVkIHRvIGNvbnRpbnVlIGEgJ25l
eHQnIG9iamVjdCBzdG9yZSBjdXJzb3IgdG8gYSBrZXkgbGVzcyB0aGFuIHRoZSBjdXJyZW50IGtl
eQogRmFpbGVkIHRvIGNvbnRpbnVlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlkIGtl
eQpAQCAtOCw1ICsxMiw3IEBAIEZhaWxlZCB0byBjb250aW51ZSBhbiBvYmplY3Qgc3RvcmUgY3Vy
c29yIHdoZW4gaXQgaXMgYWxyZWFkeSBmZXRjaGluZyB0aGUgbmV4dCByCiBJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQogRmFpbGVkIHRvIGNvbnRpbnVl
IG9iamVjdCBzdG9yZSBjdXJzb3Igd2hpbGUgdHJhbnNhY3Rpb24gaW5hY3RpdmUKIHJlYWRvbmx5
IHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1Eb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNvci1jb250aW51ZS1mYWlsdXJlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNv
ci1jb250aW51ZS1mYWlsdXJlcy5odG1sCmluZGV4IGQ0YjgxYWQuLjYwNGJhNjcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJz
b3ItY29udGludWUtZmFpbHVyZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWNvbnRpbnVlLWZhaWx1cmVzLmh0bWwKQEAg
LTEsMTQ4ICsxLDEwIEBACi1UaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0IGNh
biBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJDdXJzb3IuY29udGludWUoKSBvbiBvYmplY3Qgc3Rv
cmUgY3Vyc29ycy48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPHNjcmlwdD4KLQotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAg
IGxvZygiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklE
QkNvbnRpbnVlRmFpbHVyZXNEYXRhYmFzZSIsIDEpOwotdmFyIGRhdGFiYXNlOwotCi1jcmVhdGVS
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9nKCJJbml0
aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsg
IiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9u
VHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIGRhdGFiYXNlID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDsgKytpKQotICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7Ci0g
ICAgCi0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGN1cnNvciA9IHJlcXVl
c3QucmVzdWx0OwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGludWUo
LTEpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGNv
bnRpbnVlIGEgJ25leHQnIG9iamVjdCBzdG9yZSBjdXJzb3IgdG8gYSBrZXkgbGVzcyB0aGFuIHRo
ZSBjdXJyZW50IGtleSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IGN1cnNvci5jb250aW51ZShOYU4pOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAg
IGxvZygiRmFpbGVkIHRvIGNvbnRpbnVlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlk
IGtleSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUo
IlRlc3RPYmplY3RTdG9yZSIpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY3Vyc29yLmNv
bnRpbnVlKCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgbG9nKCJGYWlsZWQg
dG8gY29udGludWUgb2JqZWN0IHN0b3JlIGN1cnNvciBhZnRlciBkZWxldGluZyBvYmplY3Qgc3Rv
cmUiKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlY3JlYXRlIHRoZSBvYmplY3Qgc3RvcmUg
Zm9yIHVzZSBpbiB0aGUgbmV4dCBzdGFnZSBvZiB0ZXN0aW5nCi0gICAgICAgIG9iamVjdFN0b3Jl
ID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCi0gICAgICAgICAgICBvYmplY3RTdG9yZS5w
dXQoIlJlY29yZCAiICsgaSwgaSk7Ci0gICAgfQotICAgIAotICAgIHZhciByZXF1ZXN0MiA9IG9i
amVjdFN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5pdHkpLCAi
cHJldiIpOwotICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgY3Vyc29yID0gcmVxdWVzdDIucmVzdWx0OwotICAgICAgICB0cnkgewotICAgICAgICAgICAg
Y3Vyc29yLmNvbnRpbnVlKDEwMCk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAg
bG9nKCJGYWlsZWQgdG8gY29udGludWUgYSAncHJldicgb2JqZWN0IHN0b3JlIGN1cnNvciB0byBh
IGtleSBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQga2V5Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB2YXIgb3MyID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZTIiKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCi0gICAgICAgIG9zMi5wdXQo
IlJlY29yZCAiICsgaSwgaSk7Ci0gICAgICAgIAotICAgIHZhciByZXF1ZXN0MyA9IG9zMi5vcGVu
Q3Vyc29yKCk7Ci0gICAgcmVxdWVzdDMub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHZhciBjdXJzb3IgPSByZXF1ZXN0My5yZXN1bHQ7Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgp
OwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAg
IH0gY2F0Y2goZSkgewotICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gY29udGludWUgYW4gb2Jq
ZWN0IHN0b3JlIGN1cnNvciB3aGVuIGl0IGlzIGFscmVhZHkgZmV0Y2hpbmcgdGhlIG5leHQgcmVj
b3JkIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmVxdWVzdDMub25zdWNjZXNzID0gdW5kZWZpbmVk
OwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZSIpOwotICAgICAgICBjb250aW51ZVRlc3QxKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZl
bnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3Qx
KCkKLXsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9i
amVjdFN0b3JlIiwgInJlYWRvbmx5Iik7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwotICAgIHZhciBjdXJzb3IgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Ci0KLSAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRo
IGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGlt
ZW91dCB0byBmaXJlLgotICAgIHZhciBjYW5GaW5pc2ggPSBmYWxzZTsKLSAgICB2YXIgc3Bpbkdl
dCA9IGZ1bmN0aW9uKCkgeyAKLSAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICghY2FuRmluaXNoKQotICAgICAgICAg
ICAgICAgIHNwaW5HZXQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzcGluR2V0KCk7Ci0KLSAg
ICB2YXIgdGVzdFdoaWxlSW5hY3RpdmUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgICAgIGxvZygiRmFpbGVkIHRvIGNvbnRpbnVlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2hpbGUg
dHJhbnNhY3Rpb24gaW5hY3RpdmUiKTsKLSAgICAgICAgfQotICAgICAgICBjYW5GaW5pc2ggPSB0
cnVlOwotICAgIH0KLSAgICAKLSAgICBzZXRUaW1lb3V0KHRlc3RXaGlsZUluYWN0aXZlLCAwKTsK
LSAgICAKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coInJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBs
ZXRlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQot
PC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L29iamVjdHN0b3JlLWN1cnNvci1jb250aW51ZS1mYWlsdXJlcy5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy1leHBlY3RlZC50eHQKaW5k
ZXggMWYyZmU2YS4uYjY4MWQwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVz
IHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBvcGVuaW5nIGN1cnNvcnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAg
TmV3IHZlcnNpb24gLSAxCiBGYWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUgY3Vyc29yIHdpdGgg
aW52YWxpZCBrZXlwYXRoCiBGYWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUgY3Vyc29yIHdpdGgg
aW52YWxpZCBkaXJlY3Rpb24KQEAgLTE3LDUgKzIxLDcgQEAgRmFpbGVkIHRvIG9wZW4gb2JqZWN0
IHN0b3JlIGN1cnNvciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0aW9uCiBGYWlsZWQgdG8gb3BlbiBp
bmRleCBjdXJzb3IgZnJvbSBpbmFjdGl2ZSB0cmFuc2FjdGlvbgogRmFpbGVkIHRvIG9wZW4gaW5k
ZXgga2V5IGN1cnNvciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0aW9uCiByZWFkb25seSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZQotRG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy5odG1sCmluZGV4IDQ2Y2JkMzkuLjQ3
ZTEyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
cGVuY3Vyc29yLWZhaWx1cmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMuaHRtbApAQCAtMSwxODggKzEsMTAgQEAKLVRo
aXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBvcGVu
aW5nIGN1cnNvcnMuPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAg
ICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJP
cGVuQ3Vyc29yRmFpbHVyZXNEYXRhYmFzZSIsIDEpOwotdmFyIGRhdGFiYXNlOwotdmFyIG9iamVj
dFN0b3JlOwotdmFyIGluZGV4OwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVy
c2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5u
ZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0
LnRyYW5zYWN0aW9uOwotICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBv
YmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUi
KTsKLSAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgiLCAiYmFy
Iik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJiYXIiIH0sICJm
b28iKTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKE5hTik7Ci0gICAgICAgIH0g
Y2F0Y2goZSkgewotICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUg
Y3Vyc29yIHdpdGggaW52YWxpZCBrZXlwYXRoIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCJmb28iLCAiaW52
YWxpZCBkaXJlY3Rpb24iKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBsb2co
IkZhaWxlZCB0byBvcGVuIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlkIGRpcmVjdGlv
biIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0cnkgewotICAgICAgICAgICAgaW5k
ZXgub3BlbkN1cnNvcihOYU4pOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxv
ZygiRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIHdpdGggaW52YWxpZCBrZXlwYXRoIik7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigi
Zm9vIiwgImludmFsaWQgZGlyZWN0aW9uIik7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3Igd2l0aCBpbnZhbGlkIGRpcmVj
dGlvbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGluZGV4Lm9w
ZW5LZXlDdXJzb3IoTmFOKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBsb2co
IkZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Igd2l0aCBpbnZhbGlkIGtleXBhdGgiKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbmRleC5vcGVuS2V5Q3Vy
c29yKCJmb28iLCAiaW52YWxpZCBkaXJlY3Rpb24iKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Igd2l0aCBpbnZh
bGlkIGRpcmVjdGlvbiIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBkYXRhYmFzZS5k
ZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgICAgIAotICAgICAgICB0
cnkgewotICAgICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOwotICAgICAgICB9IGNh
dGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gb2JqZWN0IHN0b3JlIGN1
cnNvciBvbiBkZWxldGVkIG9iamVjdCBzdG9yZSIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOwotICAgICAgICB9IGNh
dGNoKGUpIHsKLSAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIG9u
IGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7Ci0gICAgICAgIH0KLQotICAgICAgICB0cnkgewotICAg
ICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcigpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAg
ICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciBvbiBkZWxldGVk
IG9iamVjdCBzdG9yZSIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBSZWNyZWF0
ZSB0aGUgb2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBoYXNlIDIuCi0gICAg
ICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOwotICAgICAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5k
ZXgiLCAiYmFyIik7Ci0gICAgICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogImJhciIgfSwgImZv
byIpOwotICAgIH0KLSAgICAKLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9
Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
Y29tcGxldGUiKTsKLSAgICAgICAgY29udGludWVUZXN0MSgpOwotICAgIH0KLQotICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9y
IiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY29udGlu
dWVUZXN0MSgpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigp
OwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIG9iamVjdCBz
dG9yZSBjdXJzb3IgZnJvbSBjb21wbGV0ZWQgdHJhbnNhY3Rpb24iKTsKLSAgICB9Ci0gICAgCi0g
ICAgdHJ5IHsKLSAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOwotICAgIH0gY2F0Y2goZSkgewot
ICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciBmcm9tIGNvbXBsZXRlZCB0
cmFuc2FjdGlvbiIpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGluZGV4Lm9wZW5LZXlD
dXJzb3IoKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBp
bmRleCBrZXkgY3Vyc29yIGZyb20gY29tcGxldGVkIHRyYW5zYWN0aW9uIik7Ci0gICAgfQotICAg
ICAgICAKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9i
amVjdFN0b3JlIiwgInJlYWRvbmx5Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Ci0gICAgaW5kZXggPSBvYmplY3RTdG9yZS5p
bmRleCgiVGVzdEluZGV4Iik7Ci0KLSAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdl
dCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91
dCB0byBmaXJlLgotICAgIHZhciBjYW5GaW5pc2ggPSBmYWxzZTsKLSAgICB2YXIgc3BpbkdldCA9
IGZ1bmN0aW9uKCkgeyAKLSAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICghY2FuRmluaXNoKQotICAgICAgICAgICAg
ICAgIHNwaW5HZXQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzcGluR2V0KCk7Ci0KLSAgICB2
YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0cnkgewotICAgICAg
ICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAg
ICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gb2JqZWN0IHN0b3JlIGN1cnNvciBmcm9tIGlu
YWN0aXZlIHRyYW5zYWN0aW9uIik7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIGluZGV4Lm9wZW5DdXJzb3IoKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAg
ICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciBmcm9tIGluYWN0aXZlIHRy
YW5zYWN0aW9uIik7Ci0gICAgICAgIH0KLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgaW5k
ZXgub3BlbktleUN1cnNvcigpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGxv
ZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0
aW9uIik7Ci0gICAgICAgIH0KLSAgICAgICAgY2FuRmluaXNoID0gdHJ1ZTsKLSAgICB9Ci0gICAg
Ci0gICAgc2V0VGltZW91dChnZXRXaGlsZUluYWN0aXZlLCAwKTsKLSAgICAKLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICBsb2coInJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGRv
bmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiAr
IGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW5jdXJzb3ItZmFpbHVy
ZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0
YWJhc2UtcmVxdWVzdC1ldmVudC1leHBlY3RlZC50eHQKaW5kZXggMjFkZTIxZS4uN2I2MTEwYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRh
YmFzZS1yZXF1ZXN0LWV2ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0
CkBAIC0xLDYgKzEsMTMgQEAKK1RoaXMgdGVzdCBjYWxscyBvcGVuIG9uIHdpbmRvdy5pbmRleGVk
REIgaW4gdmFyaW91cyB3YXlzLCB2ZXJpZnlpbmcgdGhhdCBJREJPcGVuREJSZXF1ZXN0IG9iamVj
dHMgYXJlIHJldHVybmVkIHdoZW4gZXhwZWN0ZWQgYW5kIGV4Y2VwdGlvbnMgYXJlIHRocm93biB3
aGVuIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IENh
dWdodCBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCiBBTEVSVDogQ2F1Z2h0IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFZhbHVlIC0xIGlzIG91dHNpZGUgdGhlIHJhbmdlIFswLCA5MDA3MTk5
MjU0NzQwOTkxXQogQUxFUlQ6IFtvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0KIEFMRVJUOiB1cGdy
YWRlbmVlZGVkOiBvbGQgdmVyc2lvbiAtIDAgbmV3IHZlcnNpb24gLSAxCi1BTEVSVDogRG9uZQot
VGhpcyB0ZXN0IGNhbGxzIG9wZW4gb24gd2luZG93LmluZGV4ZWREQiBpbiB2YXJpb3VzIHdheXMs
IHZlcmlmeWluZyB0aGF0IElEQk9wZW5EQlJlcXVlc3Qgb2JqZWN0cyBhcmUgcmV0dXJuZWQgd2hl
biBleHBlY3RlZCBhbmQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHdoZW4gZXhwZWN0ZWQuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1
ZXN0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3Bl
bmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbAppbmRleCBjNDUyOTg5Li5kMDhhZTEzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNl
LXJlcXVlc3QtZXZlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbApAQCAtMSw0NyArMSw5IEBACi1U
aGlzIHRlc3QgY2FsbHMgb3BlbiBvbiB3aW5kb3cuaW5kZXhlZERCIGluIHZhcmlvdXMgd2F5cywg
dmVyaWZ5aW5nIHRoYXQgSURCT3BlbkRCUmVxdWVzdCBvYmplY3RzIGFyZSByZXR1cm5lZCB3aGVu
IGV4cGVjdGVkIGFuZCBleGNlcHRpb25zIGFyZSB0aHJvd24gd2hlbiBleHBlY3RlZC4KLTxzY3Jp
cHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25l
KCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXRyeSB7Ci0gICAgd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKCJUZXN0RGF0YWJhc2UiLCAwKTsKLX0gY2F0Y2ggKGUpIHsKLSAgICBhbGVy
dCgiQ2F1Z2h0IGV4Y2VwdGlvbiAiICsgZSk7Ci19Ci0KLXRyeSB7Ci0gICAgd2luZG93LmluZGV4
ZWREQi5vcGVuKCJUZXN0RGF0YWJhc2UiLCAtMSk7Ci19IGNhdGNoIChlKSB7Ci0gICAgYWxlcnQo
IkNhdWdodCBleGNlcHRpb24gIiArIGUpOwotfQotCi12YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRl
eGVkREIub3BlbigiVGVzdERhdGFiYXNlIik7Ci1hbGVydChyZXF1ZXN0KTsKLQotcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi17Ci0JYWxlcnQoInN1Y2Nlc3MiKTsKLQlkb25lKCk7Ci19
Ci1yZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQotewotCWFsZXJ0KCJlcnJvciAiICsgZSk7
Ci0JZG9uZSgpOwotfQotCi1yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi17
Ci0gICAgYWxlcnQoInVwZ3JhZGVuZWVkZWQ6IG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lv
biArICIgbmV3IHZlcnNpb24gLSAiICsgZS5uZXdWZXJzaW9uKTsKLQlkb25lKCk7Ci19Ci08L3Nj
cmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW5k
YXRhYmFzZS1yZXF1ZXN0LWV2ZW50LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJh
c2UtcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IDNmYWQyOTEuLmM4
NjExMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
cGVuZGF0YWJhc2UtcmVxdWVzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDEzIEBACitUaGlzIHRlc3QgY2FsbHMgb3BlbiBvbiB3aW5kb3cuaW5kZXhlZERCIGlu
IHZhcmlvdXMgd2F5cywgdmVyaWZ5aW5nIHRoYXQgSURCT3BlbkRCUmVxdWVzdCBvYmplY3RzIGFy
ZSByZXR1cm5lZCB3aGVuIGV4cGVjdGVkIGFuZCBleGNlcHRpb25zIGFyZSB0aHJvd24gd2hlbiBl
eHBlY3RlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFMRVJUOiBbb2JqZWN0
IElEQk9wZW5EQlJlcXVlc3RdCiBBTEVSVDogW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XQogQUxF
UlQ6IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMKIEFMRVJUOiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKLUFMRVJUOiBEb25lCi1UaGlzIHRlc3QgY2FsbHMgb3BlbiBvbiB3aW5kb3cuaW5k
ZXhlZERCIGluIHZhcmlvdXMgd2F5cywgdmVyaWZ5aW5nIHRoYXQgSURCT3BlbkRCUmVxdWVzdCBv
YmplY3RzIGFyZSByZXR1cm5lZCB3aGVuIGV4cGVjdGVkIGFuZCBleGNlcHRpb25zIGFyZSB0aHJv
d24gd2hlbiBleHBlY3RlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC5odG1sCmluZGV4IDBmN2U3ZDUuLjIz
OGEzZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
cGVuZGF0YWJhc2UtcmVxdWVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC5odG1sCkBAIC0xLDM1ICsxLDkgQEAKLVRo
aXMgdGVzdCBjYWxscyBvcGVuIG9uIHdpbmRvdy5pbmRleGVkREIgaW4gdmFyaW91cyB3YXlzLCB2
ZXJpZnlpbmcgdGhhdCBJREJPcGVuREJSZXF1ZXN0IG9iamVjdHMgYXJlIHJldHVybmVkIHdoZW4g
ZXhwZWN0ZWQgYW5kIGV4Y2VwdGlvbnMgYXJlIHRocm93biB3aGVuIGV4cGVjdGVkLgotPHNjcmlw
dD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUo
KQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIHJlcXVlc3QgPSB3aW5kb3cu
aW5kZXhlZERCLm9wZW4oIlRlc3REYXRhYmFzZSIpOwotYWxlcnQocmVxdWVzdCk7Ci0KLXJlcXVl
c3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIiIpOwotYWxlcnQocmVxdWVzdCk7Ci0KLXRyeSB7
Ci0JdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oKTsKLX0gY2F0Y2ggKGUpIHsK
LQlhbGVydChlKTsKLX0KLQotdHJ5IHsKLQl2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIu
b3BlbigibmFtZSIsIDApOwotfSBjYXRjaCAoZSkgewotCWFsZXJ0KGUpOwotfQotCi1kb25lKCk7
Ci08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L29wZW5kYXRhYmFzZS1yZXF1ZXN0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJh
c2Utc3VjY2Vzcy1hZnRlci12ZXJzaW9uY2hhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Utc3VjY2Vzcy1hZnRlci12ZXJz
aW9uY2hhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBiMWQ2ODRiLi4zYzU1NDZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXN1Y2Nl
c3MtYWZ0ZXItdmVyc2lvbmNoYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1zdWNjZXNzLWFmdGVyLXZlcnNpb25j
aGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDEzIEBACi1UaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdDoKLS0gT3BlbmluZyBhIG5ldyBkYXRhYmFzZSByZXN1bHRzIGluIHRoZSBvbnVwZ3JhZGVu
ZWVkZWQgaGFuZGxlciBiZWluZyBjYWxsZWQgb24gdGhlIElEQk9wZW5EQlJlcXVlc3QuCi0tIFRo
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHJlcHJlc2VudGluZyB0aGUgdXBncmFkZSBjb21t
aXRzIHN1Y2Nlc3NmdWxseS4KLS0gQWZ0ZXIgdGhhdCB0cmFuc2FjdGlvbiBjb21taXRzLCB0aGUg
b25zdWNjZXNzIGhhbmRsZXIgb24gdGhlIG9yaWdpbmFsIElEQk9wZW5EQlJlcXVlc3QgaXMgY2Fs
bGVkLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQ6IC0gT3BlbmluZyBhIG5ldyBkYXRhYmFzZSBy
ZXN1bHRzIGluIHRoZSBvbnVwZ3JhZGVuZWVkZWQgaGFuZGxlciBiZWluZyBjYWxsZWQgb24gdGhl
IElEQk9wZW5EQlJlcXVlc3QuIC0gVGhlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gcmVwcmVz
ZW50aW5nIHRoZSB1cGdyYWRlIGNvbW1pdHMgc3VjY2Vzc2Z1bGx5LiAtIEFmdGVyIHRoYXQgdHJh
bnNhY3Rpb24gY29tbWl0cywgdGhlIG9uc3VjY2VzcyBoYW5kbGVyIG9uIHRoZSBvcmlnaW5hbCBJ
REJPcGVuREJSZXF1ZXN0IGlzIGNhbGxlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKIHVwZ3JhZGVuZWVkZWQ6IG9sZCB2ZXJzaW9uIC0gMCBuZXcgdmVyc2lvbiAtIDEKIFtvYmpl
Y3QgSURCVHJhbnNhY3Rpb25dCiBWZXJzaW9uIGNoYW5nZSBjb21wbGV0ZQogR290IHRoZSBvbnN1
Y2Nlc3MgaGFuZGxlciBhcyBleHBlY3RlZC4KLURvbmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXN1Y2Nlc3MtYWZ0ZXItdmVyc2lvbmNo
YW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRh
YmFzZS1zdWNjZXNzLWFmdGVyLXZlcnNpb25jaGFuZ2UuaHRtbAppbmRleCBhMTNkZGY5Li5lODlk
YWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3Bl
bmRhdGFiYXNlLXN1Y2Nlc3MtYWZ0ZXItdmVyc2lvbmNoYW5nZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Utc3VjY2Vzcy1hZnRlci12
ZXJzaW9uY2hhbmdlLmh0bWwKQEAgLTEsNjEgKzEsMTAgQEAKLVRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0Ojxicj4KLSAgICAtIE9wZW5pbmcgYSBuZXcgZGF0YWJhc2UgcmVzdWx0cyBpbiB0aGUgb251
cGdyYWRlbmVlZGVkIGhhbmRsZXIgYmVpbmcgY2FsbGVkIG9uIHRoZSBJREJPcGVuREJSZXF1ZXN0
Ljxicj4KLSAgICAtIFRoZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHJlcHJlc2VudGluZyB0
aGUgdXBncmFkZSBjb21taXRzIHN1Y2Nlc3NmdWxseS48YnI+Ci0gICAgLSBBZnRlciB0aGF0IHRy
YW5zYWN0aW9uIGNvbW1pdHMsIHRoZSBvbnN1Y2Nlc3MgaGFuZGxlciBvbiB0aGUgb3JpZ2luYWwg
SURCT3BlbkRCUmVxdWVzdCBpcyBjYWxsZWQuPGJyPgotPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4K
LTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlv
biBkb25lKCkKLXsKLSAgICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVz
c2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1M
ICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLXZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWRE
Qi5vcGVuKCJPcGVuRGF0YWJhc2VTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdlRGF0YWJhc2UiKTsK
LQotcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi17Ci0gICAgbG9nKCJHb3QgdGhlIG9u
c3VjY2VzcyBoYW5kbGVyIGFzIGV4cGVjdGVkLiIpOwotCWRvbmUoKTsKLX0KLXJlcXVlc3Qub25l
cnJvciA9IGZ1bmN0aW9uKGUpCi17Ci0gICAgbG9nKCJVbmV4cGVjdGVkIG9uZXJyb3IgaGFuZGxl
ciBjYWxsZWQiKTsKLQlkb25lKCk7Ci19Ci0KLXJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24oZSkKLXsKLSAgICBsb2coInVwZ3JhZGVuZWVkZWQ6IG9sZCB2ZXJzaW9uIC0gIiArIGUu
b2xkVmVyc2lvbiArICIgbmV3IHZlcnNpb24gLSAiICsgZS5uZXdWZXJzaW9uKTsKLSAgICBsb2co
cmVxdWVzdC50cmFuc2FjdGlvbik7Ci0gICAgCi0gICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgbG9nKCJWZXJzaW9uIGNoYW5nZSBj
b21wbGV0ZSIpOwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBsb2coIlZlcnNpb24gY2hhbmdlIHVuZXhwZWN0
ZWQgYWJvcnQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0LnRy
YW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBsb2coIlZlcnNp
b24gY2hhbmdlIHVuZXhwZWN0ZWQgZXJyb3IiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0K
LQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL29wZW5kYXRhYmFzZS1zdWNjZXNzLWFmdGVyLXZlcnNpb25jaGFuZ2UuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS12ZXJzaW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXZlcnNpb25zLWV4cGVj
dGVkLnR4dAppbmRleCA5ZjBhZTIxLi5jOTA3ZjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXZlcnNpb25zLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNl
LXZlcnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdCBjcmVhdGVz
IGEgbmV3IGRhdGFiYXNlIHdpdGggdGhlIGRlZmF1bHQgdmVyc2lvbiwgY29tbWl0cyB0aGF0IHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24sIGFuZCB0aGVuIHJlb3BlbnMgaXQgYXQgZGlmZmVyZW50
IHZlcnNpb25zIHRvIG1ha2Ugc3VyZSB0aGUgSURCT3BlbkRCUmVxdWVzdHMgYmVoYXZlIGFwcHJv
cHJpYXRlbHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCiBbb2JqZWN0IElEQk9w
ZW5EQlJlcXVlc3RdIChmaXJzdFBoYXNlKQogdXBncmFkZW5lZWRlZCAoZmlyc3RQaGFzZSk6IG9s
ZCB2ZXJzaW9uIC0gMCBuZXcgdmVyc2lvbiAtIDEKIFtvYmplY3QgSURCVHJhbnNhY3Rpb25dCkBA
IC0xMyw2ICsxNyw3IEBAIFZlcnNpb24gY2hhbmdlIGNvbXBsZXRlICh0aGlyZFBoYXNlKS4gRGF0
YWJhc2UgdmVyc2lvbiBpcyBub3cgLSAyCiBbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIChmb3Vy
dGhQaGFzZSkKIE9wZW4gcmVxdWVzdCBlcnJvciAodGhpcmRQaGFzZSkgQWJvcnRFcnJvcgogRXhw
ZWN0ZWQgZXJyb3IgKGZvdXJ0aFBoYXNlKSAtIFZlcnNpb25FcnJvcgotRG9uZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtdmVyc2lvbnMu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
dmVyc2lvbnMuaHRtbAppbmRleCBkYmY5YzUxLi5mMGRiZDBkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXZlcnNpb25zLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS12
ZXJzaW9ucy5odG1sCkBAIC0xLDE0MCArMSwxMCBAQAotVGhpcyB0ZXN0IGNyZWF0ZXMgYSBuZXcg
ZGF0YWJhc2Ugd2l0aCB0aGUgZGVmYXVsdCB2ZXJzaW9uLCBjb21taXRzIHRoYXQgdmVyc2lvbmNo
YW5nZSB0cmFuc2FjdGlvbiwgYW5kIHRoZW4gcmVvcGVucyBpdCBhdCBkaWZmZXJlbnQgdmVyc2lv
bnMgdG8gbWFrZSBzdXJlIHRoZSBJREJPcGVuREJSZXF1ZXN0cyBiZWhhdmUgYXBwcm9wcmlhdGVs
eS48YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2Pjxicj4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IGxvZyhtc2cpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVy
SFRNTCArPSBtc2cgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRvbmUiKTsKLSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi12
YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVmVyc2lvblRlc3REYXRhYmFzZSIp
OwotbG9nKHJlcXVlc3QgKyAiIChmaXJzdFBoYXNlKSIpOwotCi1yZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkKLXsKLSAgICBsb2coIkZpcnN0IHZlcnNpb24gY2hhbmdlIHN1Y2Nlc3NmdWwi
KTsKLX0KLXJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCi17Ci0gICAgbG9nKCJPcGVuIHJl
cXVlc3QgZXJyb3IgKGZpcnN0UGhhc2UpICIgKyByZXF1ZXN0LmVycm9yLm5hbWUpOwotfQotCi1y
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi17Ci0gICAgdmFyIGRhdGFiYXNl
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLQotICAgIGxvZygidXBncmFkZW5lZWRlZCAoZmlyc3RQ
aGFzZSk6IG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIgbmV3IHZlcnNpb24gLSAi
ICsgZS5uZXdWZXJzaW9uKTsKLSAgICBsb2cocmVxdWVzdC50cmFuc2FjdGlvbik7Ci0gICAgcmVx
dWVzdC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
bG9nKCJWZXJzaW9uIGNoYW5nZSBjb21wbGV0ZSAoZmlyc3RQaGFzZSkuIERhdGFiYXNlIHZlcnNp
b24gaXMgbm93IC0gIiArIGRhdGFiYXNlLnZlcnNpb24pOwotICAgICAgICBkYXRhYmFzZS5jbG9z
ZSgpOwotICAgICAgICBzZWNvbmRQaGFzZSgpOwotICAgIH0KLSAgICByZXF1ZXN0LnRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBsb2coIlZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQhIChmaXJzdFBoYXNlKSIpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGxvZygiVmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5l
eHBlY3RlZCBlcnJvciEgKGZpcnN0UGhhc2UpIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHNlY29uZFBoYXNlKCkKLXsKLSAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiVmVyc2lvblRlc3REYXRhYmFzZSIsIDEpOwotICAgIGxvZyhyZXF1ZXN0
ICsgIiAoc2Vjb25kUGhhc2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBsb2coIlN1Y2Nlc3NmdWxseSBvcGVuZWQgZGF0YWJhc2UgYXQgdmVy
c2lvbiAxIChzZWNvbmRQaGFzZSkiKTsKLSAgICAgICAgcmVxdWVzdC5yZXN1bHQuY2xvc2UoKTsK
LSAgICAgICAgcmVxdWVzdC5yZXN1bHQuY2xvc2UoKTsgLy8gQ2xvc2UgaXQgdHdpY2UganVzdCBm
b3IgdGhlIGhlY2sgb2YgaXQKLSAgICAgICAgdGhpcmRQaGFzZSgpOwotICAgIH0KLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQotICAgIHsKLSAgICAgICAgbG9nKCJVbmV4cGVjdGVk
IGVycm9yIChzZWNvbmRQaGFzZSkiICsgZSk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAg
cmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQotICAgIHsKLSAgICAJbG9nKCJV
bmV4cGVjdGVkIHVwZ3JhZGUgbmVlZGVkIChzZWNvbmRQaGFzZSkiICsgZSk7Ci0gICAgCWRvbmUo
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRoaXJkUGhhc2UoKQotewotICAgIHZhciByZXF1ZXN0
ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9uVGVzdERhdGFiYXNlIiwgMik7Ci0gICAg
bG9nKHJlcXVlc3QgKyAiICh0aGlyZFBoYXNlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgbG9nKCJWZXJzaW9uIGNoYW5nZSB0byB2ZXJzaW9u
IDIgc3VjY2Vzc2Z1bCIpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihl
KQotICAgIHsKLSAgICAgICAgbG9nKCJPcGVuIHJlcXVlc3QgZXJyb3IgKHRoaXJkUGhhc2UpICIg
KyByZXF1ZXN0LmVycm9yLm5hbWUpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJn
ZXQucmVzdWx0OwotCi0gICAgICAgIGxvZygidXBncmFkZW5lZWRlZCAodGhpcmRQaGFzZSk6IG9s
ZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIgbmV3IHZlcnNpb24gLSAiICsgZS5uZXdW
ZXJzaW9uKTsKLSAgICAgICAgbG9nKHJlcXVlc3QudHJhbnNhY3Rpb24pOwotICAgICAgICByZXF1
ZXN0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGxvZygiVmVyc2lvbiBjaGFuZ2UgY29tcGxldGUgKHRoaXJkUGhhc2UpLiBEYXRhYmFz
ZSB2ZXJzaW9uIGlzIG5vdyAtICIgKyBkYXRhYmFzZS52ZXJzaW9uKTsKLSAgICAgICAgICAgIGRh
dGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgICAgICBmb3VydGhQaGFzZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgbG9nKCJWZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0ISAodGhpcmRQaGFzZSkiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQot
ICAgICAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGxvZygiVmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3Rl
ZCBlcnJvciEgKHRoaXJkUGhhc2UpIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0K
LSAgICB9IAotfQotCi1mdW5jdGlvbiBmb3VydGhQaGFzZSgpCi17Ci0gICAgLy8gV2UndmUgdXBn
cmFkZWQgdG8gdmVyc2lvbiAyLCBzbyB2ZXJzaW9uIDEgc2hvdWxkIG5vdCBiZSBvcGVuYWJsZS4K
LSAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVmVyc2lvblRlc3REYXRh
YmFzZSIsIDEpOwotICAgIGxvZyhyZXF1ZXN0ICsgIiAoZm91cnRoUGhhc2UpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBsb2coIlVuZXhwZWN0
ZWQgc3VjY2VzcyAoZm91cnRoUGhhc2UpIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKLSAgICB7Ci0gICAgICAgIGxvZygiRXhwZWN0
ZWQgZXJyb3IgKGZvdXJ0aFBoYXNlKSAtICIgKyByZXF1ZXN0LmVycm9yLm5hbWUpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24o
ZSkKLSAgICB7Ci0gICAgICAgIGxvZygiVW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIChmb3VydGhQ
aGFzZSkiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0gCi19Ci0KLTwvc2NyaXB0PgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuZGF0YWJhc2UtdmVy
c2lvbnMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3JlcXVlc3QtcmVhZHlzdGF0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1yZWFk
eXN0YXRlLWV4cGVjdGVkLnR4dAppbmRleCA4ZjRjMTFiLi44YTUzYjYzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1yZWFkeXN0YXRlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVx
dWVzdC1yZWFkeXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDggQEAKIFRoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgSURCUmVxdWVzdC5yZWFkeVN0YXRlIHJldHVybnMgZXhwZWN0ZWQgdmFs
dWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQWZ0ZXIgY2FsbGluZyBpbmRl
eGVkREIub3BlbigpLCBjcmVhdGUgcmVxdWVzdCByZWFkeVN0YXRlIGlzOiBwZW5kaW5nCiBJbml0
aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBDcmVh
dGUgcmVxdWVzdCByZWFkeVN0YXRlIGlzOiBkb25lCkBAIC03LDUgKzExLDcgQEAgQWZ0ZXIgc3Vj
Y2Vzc2Z1bCBvcGVuaW5nIG9mIHRoZSBjdXJzb3IsIHJlcXVlc3QgcmVhZHlTdGF0ZSBpczogZG9u
ZQogQWZ0ZXIgY2FsbGluZyBjb250aW51ZSgpLCByZXF1ZXN0IHJlYWR5U3RhdGUgaXM6IHBlbmRp
bmcKIEFmdGVyIGNvbnRpbnVlKCkgY29tcGxldGVkLCByZXF1ZXN0IHJlYWR5U3RhdGUgaXM6IGRv
bmUKIEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi1E
b25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3JlcXVlc3Qt
cmVhZHlzdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
cXVlc3QtcmVhZHlzdGF0ZS5odG1sCmluZGV4IDIwMTcwYTguLmUyYzUzNGYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXF1ZXN0LXJlYWR5c3RhdGUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1y
ZWFkeXN0YXRlLmh0bWwKQEAgLTEsNjUgKzEsMTAgQEAKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
YXQgSURCUmVxdWVzdC5yZWFkeVN0YXRlIHJldHVybnMgZXhwZWN0ZWQgdmFsdWVzLjxicj4KLTxk
aXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9nKCJEb25lIik7Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
LX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi12YXIgY3Jl
YXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiUmVxdWVzdFJlYWR5U3RhdGVEYXRh
YmFzZSIsIDEpOwotbG9nKCJBZnRlciBjYWxsaW5nIGluZGV4ZWREQi5vcGVuKCksIGNyZWF0ZSBy
ZXF1ZXN0IHJlYWR5U3RhdGUgaXM6ICIgKyBjcmVhdGVSZXF1ZXN0LnJlYWR5U3RhdGUpOwotCi1j
cmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9n
KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJz
aW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLSAgICBsb2coIkNy
ZWF0ZSByZXF1ZXN0IHJlYWR5U3RhdGUgaXM6ICIgKyBjcmVhdGVSZXF1ZXN0LnJlYWR5U3RhdGUp
OwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rp
b247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7
Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkKLSAgICAgICAgb2JqZWN0U3RvcmUu
cHV0KCJSZWNvcmQgIiArIGksIGkpOwotICAgIAotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcigpOwotICAgIGxvZygiQWZ0ZXIgY2FsbGluZyBvcGVuQ3Vyc29yLCByZXF1
ZXN0IHJlYWR5U3RhdGUgaXM6ICIgKyByZXF1ZXN0LnJlYWR5U3RhdGUpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvZygiQWZ0ZXIgc3VjY2Vzc2Z1bCBv
cGVuaW5nIG9mIHRoZSBjdXJzb3IsIHJlcXVlc3QgcmVhZHlTdGF0ZSBpczogIiArIHJlcXVlc3Qu
cmVhZHlTdGF0ZSk7Ci0KLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGxvZygiQWZ0ZXIgY29udGludWUoKSBjb21wbGV0ZWQsIHJlcXVlc3QgcmVh
ZHlTdGF0ZSBpczogIiArIHJlcXVlc3QucmVhZHlTdGF0ZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXF1ZXN0LnJlc3VsdC5jb250aW51ZSgpOwotICAgICAgICBsb2coIkFmdGVyIGNhbGxpbmcg
Y29udGludWUoKSwgcmVxdWVzdCByZWFkeVN0YXRlIGlzOiAiICsgcmVxdWVzdC5yZWFkeVN0YXRl
KTsKLSAgICB9Ci0gICAgICAgICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0g
ICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJh
bnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGxvZygiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBl
dmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXF1ZXN0LXJlYWR5c3RhdGUu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxs
ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Fi
b3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zZWE5NzVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQuanMKQEAgLTAs
MCArMSwxNTEgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHVuLWhh
bmRsZWQgcmVxdWVzdHMgaW4gYSB0cmFuc2FjdGlvbiByZWNlaXZlIG9uZXJyb3IgY2FsbGJhY2tz
IHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9
CisKK3ZhciBkYXRhYmFzZTsKK3ZhciBvYmplY3RTdG9yZTsKKworZnVuY3Rpb24gc2V0dXBSZXF1
ZXN0KGNvZGUpCit7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsKGNvZGUpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgbG9nICgiU3VjY2VzcyBoYW5k
bGluZzogXCIiICsgY29kZSArICJcIiIpOworICAgIH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBm
dW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgbG9nICgiRXJyb3IgaGFuZGxpbmc6IFwiIiArIGNv
ZGUgKyAiXCIgKCIgKyBlLnR5cGUgKyAiKSIpOworICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigp
OworICAgIH0gICAKK30KKworc3RhcnRUZXN0KCk7CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
KyAgICB2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQWJvcnRSZXF1
ZXN0c0NhbmNlbGxlZERhdGFiYXNlIiwgMSk7CisgICAgY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRl
IG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNp
b24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICAgICAgdmFyIHZlcnNpb25UcmFuc2Fj
dGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIHZhciBkYXRhYmFzZSA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3Jl
YXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICBzZXR1cFJlcXVlc3Qo
Im9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0EnIH0sIDEpOyIpOworICAgICAgICBzZXR1cFJlcXVl
c3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0InIH0sIDIpOyIpOworICAgICAgICBzZXR1cFJl
cXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0MnIH0sIDMpOyIpOworCisgICAgICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5hYm9ydCgpOworCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgICAgICBk
YXRhYmFzZS5jbG9zZSgpOworICAgICAgICAgICAgY29udGludWVUZXN0MSgpOworICAgICAgICB9
CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiBlcnJvciAiICsgZXZlbnQpOworICAgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiBjb250aW51ZVRlc3QxKCkgeworICAgIHZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJBYm9ydFJlcXVlc3RzQ2FuY2VsbGVkRGF0YWJhc2UiLCAxKTsKKyAg
ICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisg
ICAgICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9u
OworICAgICAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIG9iamVj
dFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwor
ICAgIAorICAgICAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0EnIH0s
IDEpOyIpOworICAgICAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0In
IH0sIDIpOyIpOworICAgICAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjog
J0MnIH0sIDMpOyIpOworICAgIAorICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiU2Vjb25kIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiU2Vjb25kIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlVGVzdDIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJTZWNvbmQgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOwor
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBjb250
aW51ZVRlc3QyKCkgeworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9u
KCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7CisgICAgb2JqZWN0U3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICBzZXR1cFJlcXVl
c3QoIm9iamVjdFN0b3JlLmdldCgxKTsiKTsKKyAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3Jl
LmdldCgyKTsiKTsKKyAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLmdldCgzKTsiKTsKKyAg
ICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0QnIH0sIDQpOyIpOworICAg
IHNldHVwUmVxdWVzdCgib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnRScgfSwgNSk7Iik7CisgICAg
c2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdGJyB9LCA2KTsiKTsKKworICAg
IHRyYW5zYWN0aW9uLmFib3J0KCk7CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBhYm9ydGVk
Iik7CisgICAgICAgIGNvbnRpbnVlVGVzdDMoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9
CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ZGVidWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MygpIHsK
KyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0
b3JlIiwgInJlYWRvbmx5Iik7CisgICAgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3Jl
LmdldCgxKTsiKTsKKyAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLmdldCgyKTsiKTsKKyAg
ICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLmdldCgzKTsiKTsKKworICAgIHRyYW5zYWN0aW9u
LmFib3J0KCk7CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGVidWcoInJlYWRvbmx5IHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
Y29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy9hYm9ydGVkLXB1dC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9yZXNvdXJjZXMvYWJvcnRlZC1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzJhZDM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYWJvcnRlZC1wdXQuanMKQEAgLTAsMCArMSwxOTgg
QEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY3JlYXRlcyBzb21lIG9iamVjdCBzdG9yZXMsIHB1
dHRpbmcgc29tZSB2YWx1ZXMgaW4gdGhlbSwgY29tbWl0dGluZyB0aGUgdHJhbnNhY3Rpb24uIFwK
K0luIGEgbmV3IHRyYW5zYWN0aW9uLCBpdCB0aGVuIG92ZXJ3cml0ZXMgdGhvc2UgdmFsdWVzLCBi
dXQgdGhlbiBhYm9ydHMgdGhlIHRyYW5zYWN0aW9uLiBcCitGaW5hbGx5IGl0IHZlcmlmaWVzIGV2
ZXJ5dGhpbmcgaXMgc2V0IHVwIGZyb20gdGhlIGZpcnN0IHRyYW5zYWN0aW9uLCBhbmQgbm90aGlu
ZyBmcm9tIHRoZSBhYm9ydGVkIG9uZSBjb21taXR0ZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Blbigi
QWJvcnRlZFB1dFRlc3REYXRhYmFzZSIpOworCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVu
dCkKK3sKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmlyc3QgdXBncmFkZSBuZWVkZWQ6IE9sZCB2
ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm5ld1ZlcnNpb24pOworICAgIAorICAgIHZhciB0eCA9IHJlcXVlc3QudHJhbnNhY3Rpb247Cisg
ICAgdmFyIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRlYnVnKCJBTEVSVDogIiAr
IHR4ICsgIiAtICIgKyB0eC5tb2RlKTsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyBkYik7CisKKyAg
ICB2YXIgb3MxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTEiKTsKKyAg
ICB2YXIgb3MyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTIiKTsKKwor
ICAgIHZhciBwdXRSZXF1ZXN0ID0gb3MxLnB1dCgiYmFyIiwgImZvbyIpOworICAgIAorICAgIHB1
dFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgInB1dCBzdWNjZWVkZWQgLSBrZXkgd2FzICciICsgcHV0UmVxdWVzdC5yZXN1bHQg
KyAiJyIpOworICAgICAgICAKKyAgICAgICAgdmFyIGdldFJlcXVlc3QxID0gb3MxLmdldCgiZm9v
Iik7CisgICAgICAgIGdldFJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiZ2V0ICdmb28nIHN1Y2NlZWRlZCAtIHZhbHVl
IHdhcyAnIiArIGdldFJlcXVlc3QxLnJlc3VsdCArICInIik7CisgICAgICAgIH0KKworICAgICAg
ICBnZXRSZXF1ZXN0MS5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJBTEVSVDogIiArICJnZXQgJ2ZvbycgdW5leHBlY3RlZGx5IGZhaWxlZCAtICIgKyBldmVu
dCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZh
ciBnZXRSZXF1ZXN0MiA9IG9zMi5nZXQoImZhciIpOworICAgICAgICBnZXRSZXF1ZXN0Mi5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsg
ImdldCAnZmFyJyBzdWNjZWVkZWQgLSB2YWx1ZSB3YXMgJyIgKyBnZXRSZXF1ZXN0Mi5yZXN1bHQg
KyAiJyIpOworICAgICAgICB9CisKKyAgICAgICAgZ2V0UmVxdWVzdDIub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiZ2V0ICdmYXInIHVu
ZXhwZWN0ZWRseSBmYWlsZWQgLSAiICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcHV0UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInB1dCB1bmV4cGVjdGVkbHkgZmFpbGVkIC0g
IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICAKKyAgICB0eC5vbmFib3J0
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZpcnN0IHZl
cnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHR4Lm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmlyc3QgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24g
Y29tcGxldGVkIik7CisgICAgICAgIGRiLmNsb3NlKCk7CisgICAgICAgIGNvbnRpbnVlVGVzdDEo
KTsKKyAgICB9CisKKyAgICB0eC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ZGVidWcoIkFMRVJUOiAiICsgIkZpcnN0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitm
dW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRl
eGVkREIub3BlbigiQWJvcnRlZFB1dFRlc3REYXRhYmFzZSIsIDIpOworCisgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAiU2Vjb25kIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRW
ZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKyAgICAKKyAg
ICAgICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICAgICAgdmFyIGRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyB0eCArICIgLSAi
ICsgdHgubW9kZSk7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArIGRiKTsKKworICAgICAgICB2
YXIgb3MxID0gdHgub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTEiKTsKKyAgICAgICAgdmFy
IG9zMiA9IHR4Lm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUyIik7CisgICAgICAgIHZhciBw
dXRSZXF1ZXN0MSA9IG9zMS5wdXQoImJheiIsICJmb28iKTsKKyAgICAgICAgdmFyIHB1dFJlcXVl
c3QyID0gb3MyLnB1dCgiYm9vIiwgImZhciIpOworICAgIAorICAgICAgICBwdXRSZXF1ZXN0MS5v
bmVycm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlVu
ZXhwZWN0ZWQgZXJyb3Igb3ZlcndyaXRpbmcgYmFyIHdpdGggYmF6IC0gIiArIGUpOworICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgcHV0UmVxdWVzdDIub25lcnJvciA9
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJXcml0aW5nIGlu
dG8gc2Vjb25kIG9iamVjdCBzdG9yZSB1bmV4cGVjdGVkbHkgZmFpbGVkIC0gIiArIGUpOworICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdXRSZXF1ZXN0
Mi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICB2YXIgZ2V0UmVxdWVzdDEg
PSBvczEuZ2V0KCJmb28iKTsKKyAgICAgICAgICAgIHZhciBnZXRSZXF1ZXN0MiA9IG9zMi5nZXQo
ImZhciIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBnZXRSZXF1ZXN0MS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJn
ZXQxICdmb28nIHN1Y2NlZWRlZCAtIHZhbHVlIHdhcyAnIiArIGdldFJlcXVlc3QxLnJlc3VsdCAr
ICInIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldFJlcXVlc3QxLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJn
ZXQxIHVuZXhwZWN0ZWRseSBmYWlsZWQgLSAiICsgZXZlbnQpOworICAgICAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0UmVxdWVzdDIub25zdWNjZXNz
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
Z2V0MiAnZmFyJyBzdWNjZWVkZWQgLSB2YWx1ZSB3YXMgJyIgKyBnZXRSZXF1ZXN0Mi5yZXN1bHQg
KyAiJyIpOworICAgICAgICAgICAgICAgIHR4LmFib3J0KCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGdldFJlcXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJnZXQyIHVuZXhwZWN0ZWRseSBmYWlsZWQgLSAi
ICsgZXZlbnQpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdHgub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHZlcnNpb24gY2hhbmdlIHRyYW5z
YWN0aW9uIGFib3J0Iik7CisgICAgICAgICAgICBkYi5jbG9zZSgpOworICAgICAgICAgICAgY29u
dGludWVUZXN0MigpOworICAgICAgICB9CisKKyAgICAgICAgdHgub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHZlcnNp
b24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKKyAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHR4Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlNlY29uZCB2ZXJzaW9uIGNoYW5n
ZSB0cmFuc2FjdGlvbiBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQoreworICAgIHZhciByZXF1ZXN0ID0gd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKCJBYm9ydGVkUHV0VGVzdERhdGFiYXNlIiwgMik7CisKKyAgICByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVS
VDogIiArICJUaGlyZCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xk
VmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisgICAgCisg
ICAgICAgIHZhciB0eCA9IHJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIHZhciBkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgdHggKyAiIC0g
IiArIHR4Lm1vZGUpOworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyBkYik7CisKKyAgICAgICAg
dmFyIG9zMSA9IHR4Lm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUxIik7CisgICAgICAgIHZh
ciBvczIgPSB0eC5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMiIpOworICAgICAgICB2YXIg
Z2V0UmVxdWVzdDEgPSBvczEuZ2V0KCJmb28iKTsKKyAgICAgICAgdmFyIGdldFJlcXVlc3QyID0g
b3MyLmdldCgiZmFyIik7CisgICAgCisgICAgICAgIGdldFJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiZ2V0MSAnZm9v
JyBzdWNjZWVkZWQgLSB2YWx1ZSB3YXMgJyIgKyBnZXRSZXF1ZXN0MS5yZXN1bHQgKyAiJyIpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2V0UmVxdWVzdDEub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiZ2V0MSAnZm9vJyB1bmV4cGVjdGVk
bHkgZmFpbGVkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGdldFJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiZ2V0MiAnZmFyJyBzdWNjZWVkZWQgLSB2YWx1ZSB3
YXMgJyIgKyBnZXRSZXF1ZXN0Mi5yZXN1bHQgKyAiJyIpOworICAgICAgICB9CisKKyAgICAgICAg
Z2V0UmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1
ZygiQUxFUlQ6ICIgKyAiZ2V0MiAnZmFyJyB1bmV4cGVjdGVkbHkgZmFpbGVkIC0gIiArIGV2ZW50
KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHgu
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIg
KyAiVGhpcmQgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOwor
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdHgub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVGhpcmQg
dmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHR4Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlRoaXJkIHZlcnNpb24gY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWFib3J0LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWFi
b3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMzU0ZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2F1dG9pbmNyZW1lbnQtYWJvcnQuanMKQEAgLTAsMCArMSwxNTggQEAKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aXRoIGFuIG9iamVjdHN0b3JlIHRo
YXQgYXV0b2luY3JlbWVudHMuIFwKK0l0IHRoZW4gcHV0cyBzb21lIHRoaW5ncyBpbiB0aGF0IG9i
amVjdCBzdG9yZSwgY2hlY2tpbmcgdGhlIGtleXMgdGhhdCB3ZXJlIHVzZWQuIFwKK0J1dCBpdCB0
aGVuIGFib3J0cyB0aGF0IHRyYW5zYWN0aW9uLiBcCitUaGVuIGl0IG9wZW5zIGEgbmV3IG9uZSBh
bmQgcHV0cyBzb21ldGhpbmcgaW4gaXQsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZSBrZXkgZ2Vu
ZXJhdG9yIHdhcyByZXZlcnRlZCB3aGVuIHRoZSBhYm92ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRl
ZC4iKTsKKworCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlv
biBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3Qg
PSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkF1dG9pbmNyZW1lbnRBYm9ydERhdGFiYXNlIiwgMSk7
Cit2YXIgZGF0YWJhc2U7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAi
ICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3Jl
YXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoJ1Rl
c3RPYmplY3RTdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICAKKyAgICB2ZXJz
aW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVn
KCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVn
KCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZSIpOworICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgfQorCisgICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1Zygi
QUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5l
eHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHB1dENoZWNrZXIoZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiS2V5IHVz
ZWQgZm9yIHB1dCB3YXMgIiArIGV2ZW50LnRhcmdldC5yZXN1bHQpOworfQorCitmdW5jdGlvbiBj
b250aW51ZVRlc3QxKCkKK3sKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiT3BlbmluZyByZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdG8gYnVtcCB0aGUga2V5IGdlbmVyYXRvciwgYnV0IGl0IHdpbGwgYmUg
YWJvcnRlZCIpOworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCdU
ZXN0T2JqZWN0U3RvcmUnLCAicmVhZHdyaXRlIik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOworICAgIAorICAgIHZhciBy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIxIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIyIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVj
a2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI0Iik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUucHV0KCJiYXI1Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAg
IHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBwdXRDaGVja2VyKGV2ZW50KTsKKyAg
ICAgICAgdHJhbnNhY3Rpb24uYWJvcnQoKTsKKyAgICB9CisgICAgCisgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJy
ZWFkd3JpdGUgdHJhbnNhY3Rpb24gYWJvcnQiKTsKKyAgICAgICAgY29udGludWVUZXN0MigpOwor
ICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
cmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MigpCit7CisgICAgZGVidWcoIkFM
RVJUOiAiICsgIk9wZW5pbmcgcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHRvIG1ha2Ugc3VyZSB0aGUg
a2V5IGdlbmVyYXRvciBoYWQgc3VjY2Vzc2Z1bGx5IHJldmVydGVkIik7CisgICAgCisgICAgdmFy
IHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oJ1Rlc3RPYmplY3RTdG9yZScsICJy
ZWFkd3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnVGVzdE9iamVjdFN0b3JlJyk7CisKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgiYmFyMSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hl
Y2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLnB1dCgiYmFyNiIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKwor
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1
ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDMoKTsKKyAgICB9CisK
KyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIik7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDMoKQor
eworICAgIGRlYnVnKCJBTEVSVDogIiArICJPcGVuaW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB0
byBtYWtlIHN1cmUgdGhlIGtleSBnZW5lcmF0b3IgcGlja3MgdXAgd2hlcmUgaXQgc2hvdWxkJ3Zl
IGxlZnQgb2ZmIik7CisgICAgCisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNh
Y3Rpb24oJ1Rlc3RPYmplY3RTdG9yZScsICJyZWFkd3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3JlJyk7CisKKyAgICB2
YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
MiIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVz
dCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0
Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCgiYmFyNSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNiIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1
ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAg
IGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGVycm9yIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9iYXNp
Yy1hZGQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2Jhc2ljLWFkZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzU4ZDc3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L3Jlc291cmNlcy9iYXNpYy1hZGQuanMKQEAgLTAsMCArMSw3NCBAQAorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBkb2VzIGJhc2ljIHRlc3Rpbmcgb2YgSURCT2JqZWN0U3RvcmUuYWRkKCksIG1ha2lu
ZyBzdXJlIHRoYXQgYW4gYXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYWxyZWFkeS1leGlzdGluZyBr
ZXkgZmFpbHMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZXJyb3IuIik7CisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Bl
bigiTmV3RGF0YWJhc2VBZGRUZXN0RGF0YWJhc2UiKTsKKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVXBncmFkZSBuZWVkZWQ6IE9sZCB2
ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm5ld1ZlcnNpb24pOworICAgIAorICAgIHZhciB0eCA9IHJlcXVlc3QudHJhbnNhY3Rpb247Cisg
ICAgdmFyIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRlYnVnKCJBTEVSVDogIiAr
IHR4ICsgIiAtICIgKyB0eC5tb2RlKTsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyBkYik7CisKKyAg
ICB2YXIgb3MgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAg
dmFyIHB1dFJlcXVlc3QxID0gb3MuYWRkKCJiYXIiLCAiZm9vIik7CisgICAgdmFyIHB1dFJlcXVl
c3QyID0gb3MuYWRkKCJiYXoiLCAiZm9vIik7CisKKyAgICBwdXRSZXF1ZXN0MS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicHV0IDEgc3Vj
Y2VlZGVkIC0ga2V5IHdhcyAnIiArIHB1dFJlcXVlc3QxLnJlc3VsdCArICInIik7CisgICAgfQor
CisgICAgcHV0UmVxdWVzdDEub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRl
YnVnKCJBTEVSVDogIiArICJwdXQgMSB1bmV4cGVjdGVkbHkgZmFpbGVkIC0gIiArIGV2ZW50KTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHB1dFJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJwdXQgMiB1bmV4cGVj
dGVkbHkgc3VjY2VlZGVkIC0ga2V5IHdhcyAnIiArIHB1dFJlcXVlc3QyLnJlc3VsdCArICInIik7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICBwdXRSZXF1ZXN0Mi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInB1dCAyIGZhaWxlZCAt
ICIgKyBldmVudC50eXBlKTsKKworICAgICAgICB2YXIgZ2V0UmVxdWVzdCA9IG9zLmdldCgiZm9v
Iik7CisgICAgICAgIAorICAgICAgICBnZXRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiZ2V0IHN1Y2NlZWRlZCAtIGtl
eSB3YXMgJyIgKyBnZXRSZXF1ZXN0LnJlc3VsdCArICInIik7CisgICAgICAgIH0KKworICAgICAg
ICBnZXRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgImdldCB1bmV4cGVjdGVkbHkgZmFpbGVkIC0gIiArIGV2ZW50LnR5cGUp
OworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAg
ICB9CisgICAgICAgIAorICAgIHR4Lm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBkZWJ1ZygiQUxFUlQ6ICIgKyAidmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3Rl
ZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHgub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uIGNo
YW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKwor
ICAgIHR4Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAidmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBl
dmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jhc2ljLXB1dC5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYmFzaWMtcHV0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNjM4ZDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Jhc2lj
LXB1dC5qcwpAQCAtMCwwICsxLDU5IEBACisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworfQorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiTmV3RGF0YWJhc2VQ
dXRUZXN0RGF0YWJhc2UiKTsKKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2
ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwor
ICAgIAorICAgIHZhciB0eCA9IHJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRlYnVnKCJBTEVSVDogIiArIHR4ICsgIiAtICIgKyB0
eC5tb2RlKTsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyBkYik7CisKKyAgICB2YXIgb3MgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHB1dFJlcXVlc3Qg
PSBvcy5wdXQoImJhciIsICJmb28iKTsKKyAgICAKKyAgICBwdXRSZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJwdXQgc3VjY2Vl
ZGVkIC0ga2V5IHdhcyAnIiArIHB1dFJlcXVlc3QucmVzdWx0ICsgIiciKTsKKyAgICAgICAgCisg
ICAgICAgIHZhciBnZXRSZXF1ZXN0ID0gb3MuZ2V0KCJmb28iKTsKKyAgICAgICAgZ2V0UmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJU
OiAiICsgImdldCBzdWNjZWVkZWQgLSB2YWx1ZSB3YXMgJyIgKyBnZXRSZXF1ZXN0LnJlc3VsdCAr
ICInIik7CisgICAgICAgIH0KKworICAgICAgICBnZXRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgImdldCB1bmV4cGVjdGVk
bHkgZmFpbGVkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHB1dFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJwdXQgdW5leHBlY3RlZGx5IGZhaWxlZCAtICIgKyBldmVu
dCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgCisgICAgdHgub25hYm9ydCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisK
KyAgICB0eC5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgInZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgdHgub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
Y3JlYXRlLWluZGV4LWZhaWx1cmVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtZmFpbHVyZXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTllZjQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LWZhaWx1
cmVzLmpzCkBAIC0wLDAgKzEsMTI0IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzb21lIG9i
dmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoKS4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlv
biBsb2cobWVzc2FnZSkKK3sKKyAgICBkZWJ1ZyhtZXNzYWdlKTsKK30KKwordmFyIGNyZWF0ZVJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ3JlYXRlSW5kZXhG
YWlsdXJlc0RhdGFiYXNlIiwgMSk7Cit2YXIgZGF0YWJhc2U7CisKK2NyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiSW5pdGlhbCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgdHJ5IHsKKyAgICAgICAgb2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgobnVsbCwgImZvbyIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBk
ZWJ1ZygiRmFpbGVkIHRvIGNyZWF0ZSBpbmRleCB3aXRoIG51bGwgbmFtZSIpOworICAgIH0KKyAg
ICAKKyAgICB0cnkgeworICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4
MSIsIG51bGwpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGNy
ZWF0ZSBpbmRleCB3aXRoIGludmFsaWQga2V5IHBhdGgiKTsKKyAgICB9CisgICAgCisgICAgZGF0
YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIHRyeSB7Cisg
ICAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgyIiwgImZvbyIpOworICAg
IH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGNyZWF0ZSBpbmRleCBvbiBh
IGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7CisgICAgfQorCisgICAgb2JqZWN0U3RvcmUgPSBkYXRh
YmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgCisgICAgdHJ5
IHsKKyAgICAgICAgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJbmRleDMiLCBbImZvbyIs
ICJiYXIiXSwgeyBtdWx0aUVudHJ5OiB0cnVlIH0pOworICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICBkZWJ1ZygiRmFpbGVkIHRvIGNyZWF0ZSBtdWx0aS1lbnRyeSBpbmRleCB3aXRoIGFuIGFycmF5
IGtleSBwYXRoIik7CisgICAgfQorICAgIAorICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJU
ZXN0SW5kZXg0IiwgImZvbyIpOworICAgIHRyeSB7CisgICAgICAgIG9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCJUZXN0SW5kZXg0IiwgImZvbyIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBk
ZWJ1ZygiRmFpbGVkIHRvIGNyZWF0ZSBpbmRleCB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAg
fQorCisgICAgLy8gU3BpbiB0aGUgdHJhbnNhY3Rpb24gd2l0aCBnZXQgcmVxdWVzdHMgdG8ga2Vl
cCBpdCBhbGl2ZSBsb25nIGVub3VnaCBmb3IgdGhlIHNldFRpbWVvdXQgdG8gZmlyZS4KKyAgICB2
YXIgY2FuRmluaXNoID0gZmFsc2U7CisgICAgdmFyIHNwaW5HZXQgPSBmdW5jdGlvbigpIHsgCisg
ICAgICAgIG9iamVjdFN0b3JlLmdldCgiZm9vIikub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpZiAoIWNhbkZpbmlzaCkKKyAgICAgICAgICAgICAgICBzcGluR2V0KCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgc3BpbkdldCgpOworCisgICAgdmFyIGNyZWF0ZVdoaWxlSW5h
Y3RpdmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXg1IiwgImZvbyIpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gY3JlYXRlIGluZGV4IHdoaWxlIHRoZSB0
cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSIpOworICAgICAgICB9CisgICAgICAgIGNhbkZpbmlzaCA9
IHRydWU7CisgICAgfQorICAgIAorICAgIHNldFRpbWVvdXQoY3JlYXRlV2hpbGVJbmFjdGl2ZSwg
MCk7CisgICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21w
bGV0ZSIpOworICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgfQorCisgICAgdmVyc2lvblRy
YW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5p
dGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIg
KyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVl
VGVzdDEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJU
ZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgdHJ5IHsKKyAg
ICAgICAgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJbmRleDYiLCAiZm9vIik7CisgICAg
fSBjYXRjaChlKSB7CisgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gY3JlYXRlIGluZGV4IG91dHNp
ZGUgb2YgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiIpOworICAgIH0KKyAgICAgICAgCisg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVn
KCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUi
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5l
eHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Ny
ZWF0ZW9iamVjdHN0b3JlLWJhc2ljLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3Jlc291cmNlcy9jcmVhdGVvYmplY3RzdG9yZS1iYXNpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjRmMTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9jcmVhdGVvYmplY3RzdG9y
ZS1iYXNpYy5qcwpAQCAtMCwwICsxLDEzMyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBzdGFy
dHMgc29tZSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbnMsIGNyZWF0ZXMgc29tZSBvYmplY3Qg
c3RvcmVzLCBhbmQgdmFyaWFibHkgY29tbWl0cyBvciBhYm9ydHMgdGhlIHZlcnNpb24gY2hhbmdl
IHRyYW5zYWN0aW9ucy4gXAorQXQgdmFyaW91cyBzdGFnZXMgaXQgdmVyaWZpZXMgdGhlIG9iamVj
dCBzdG9yZXMgaW4gdGhlIGRhdGFiYXNlIGFyZSBhcy1leHBlY3RlZC4iKTsKKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKSB7Cisg
ICAgdmFyIGxpc3QgPSBkYXRhYmFzZS5vYmplY3RTdG9yZU5hbWVzOworICAgIGRlYnVnKCJBTEVS
VDogIiArICJPYmplY3Qgc3RvcmUgbmFtZXM6Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
aXN0Lmxlbmd0aDsgKytpKSB7IAorICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyBsaXN0W2ldKTsK
KyAgICB9Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJD
cmVhdGVPYmplY3RTdG9yZVRlc3REYXRhYmFzZSIsIDEpOworCitjcmVhdGVSZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIklu
aXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24g
KyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNp
b25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiRmlyc3RBYm9ydGVkT2JqZWN0U3RvcmUiKTsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiZm9vIiwgImJhciIpOworCisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
UHV0IHN1Y2NlZWRlZCIpOworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24uYWJvcnQoKTsKKyAg
ICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIlB1dCBmYWlsZWQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7
CisgICAgfQorICAgIAorICAgIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpOyAgICAKKyAgICAK
KyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpOwor
ICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7CisgICAg
fQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gZXJyb3IgIiArIGV2ZW50KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNv
bnRpbnVlVGVzdDEoKQoreworICAgIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9w
ZW4oIkNyZWF0ZU9iamVjdFN0b3JlVGVzdERhdGFiYXNlIiwgMSk7CisKKyAgICBjcmVhdGVSZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisg
ICAgICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9u
OworICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBk
dW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKTsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0
YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIkZpcnN0Q29tbWl0dGVkT2JqZWN0U3RvcmUiKTsKKwor
ICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgIH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgZHVt
cE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7CisgICAgICAgICAgICBjb250aW51ZVRlc3QyKCk7Cisg
ICAgICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIlNlY29uZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQoreworICAgIGNyZWF0ZVJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkNyZWF0ZU9iamVjdFN0b3JlVGVzdERhdGFi
YXNlIiwgMik7CisKKyAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJUaGlyZCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAi
ICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9
IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCJTZWNvbmRDb21taXR0ZWRPYmplY3RTdG9yZSIpOworCisgICAgICAgIGR1
bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpOyAgICAKKyAgICAKKyAgICAgICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgIlRoaXJkIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGFib3J0Iik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
ICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVGhpcmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgICAgICBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNl
KTsKKyAgICAgICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7IAorICAgICAgICAgICAgY29udGludWVU
ZXN0MygpOworICAgICAgICB9CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlRoaXJk
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2
ZW50KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gY29udGludWVUZXN0MygpCit7CisgICAgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVk
REIub3BlbigiQ3JlYXRlT2JqZWN0U3RvcmVUZXN0RGF0YWJhc2UiLCAzKTsKKworICAgIGNyZWF0
ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIkZvdXJ0aCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsg
ZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7
CisgICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGR1
bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9j
cmVhdGVvYmplY3RzdG9yZS1mYWlsdXJlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvY3JlYXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1MGIzNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3JlYXRlb2Jq
ZWN0c3RvcmUtZmFpbHVyZXMuanMKQEAgLTAsMCArMSw5OCBAQAorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBleGVyY2lzZXMgdGhlIG9idmlvdXMgd2F5cyB0aGF0IElEQkRhdGFiYXNlLmNyZWF0ZU9i
amVjdFN0b3JlIGNhbiBmYWlsLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
K30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2UpIHsKKyAgICB2YXIgbGlzdCA9IGRhdGFiYXNl
Lm9iamVjdFN0b3JlTmFtZXM7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIk9iamVjdCBzdG9yZSBu
YW1lczoiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHsgCisg
ICAgICAgIGRlYnVnKCJBTEVSVDogIiArIGxpc3RbaV0pOworICAgIH0KK30KKwordmFyIGNyZWF0
ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkNyZWF0ZU9iamVjdFN0b3JlRmFpbHVy
ZXNUZXN0RGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKK3ZhciB2ZXJzaW9uVHJhbnNhY3Rp
b247CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5z
YWN0aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIHRyeSB7
CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCdU
ZXN0T2JqZWN0U3RvcmUnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgLCBrZXlQYXRoOiAiIiB9KTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJGYWlsZWQgdG8g
Y3JlYXRlIG9iamVjdCBzdG9yZSB3aXRoIGJvdGggYXV0b2luY3JlbWVudCBhbmQgYW4gZW1wdHkg
a2V5cGF0aDogIiArIGUpOworICAgICAgICBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKTsKKyAg
ICB9CisKKyAgICB0cnkgeworICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3JlJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlICwg
a2V5UGF0aDogWydmb28nXSB9KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJGYWlsZWQgdG8gY3JlYXRlIG9iamVjdCBzdG9yZSB3aXRoIGJvdGggYXV0b2lu
Y3JlbWVudCBhbmQgYSBzZXF1ZW5jZSBrZXlwYXRoOiAiICsgZSk7CisgICAgICAgIGR1bXBPYmpl
Y3RTdG9yZXMoZGF0YWJhc2UpOworICAgIH0KKyAgICAKKyAgICB0cnkgeworICAgICAgICB2YXIg
b2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3Jl
JywgeyBrZXlQYXRoOiAiJ2ZvbyBiYXInIn0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBjcmVhdGUgb2JqZWN0IHN0b3JlIHdpdGggaW52
YWxpZCBrZXlQYXRoOiAiICsgZSk7CisgICAgICAgIGR1bXBPYmplY3RTdG9yZXMoZGF0YWJhc2Up
OworICAgIH0KKworICAgIGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUxIik7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkFjdHVhbGx5IGNyZWF0ZWQgYW4gb2JqZWN0
IHN0b3JlIik7CisgICAgZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7CisgICAgCisgICAgdHJ5
IHsKKyAgICAgICAgZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTEi
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0
byBjcmVhdGUgVGVzdE9iamVjdFN0b3JlIGEgc2Vjb25kIHRpbWU6ICIgKyBlKTsKKyAgICAgICAg
ZHVtcE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIg
KyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdW5leHBlY3RlZCBhYm9ydCIpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZHVt
cE9iamVjdFN0b3JlcyhkYXRhYmFzZSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRh
dGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUyIik7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBjcmVh
dGUgb2JqZWN0IHN0b3JlIHdoaWxlIHRoZXJlIGlzIG5vIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0
aW9uOiAiICsgZSk7CisgICAgICAgICAgICBkdW1wT2JqZWN0U3RvcmVzKGRhdGFiYXNlKTsKKyAg
ICAgICAgfQorICAgIAorICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaFVwLCAwKTsKKyAgICB9CisK
KyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAg
IH0KK30KKworZnVuY3Rpb24gZmluaXNoVXAoKQoreworICAgIHRyeSB7CisgICAgICAgIGRhdGFi
YXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmU5OSIpOworICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGNyZWF0ZSBvYmplY3Qg
c3RvcmUgb3V0c2lkZSBvZiBvbnVwZ3JhZGVuZWVkZWQ6ICIgKyBlKTsKKyAgICAgICAgZHVtcE9i
amVjdFN0b3JlcyhkYXRhYmFzZSk7CisgICAgfQorICAgIAorICAgIGRvbmUoKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vy
c29yLTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2N1cnNvci0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MDJhZmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2N1cnNvci0xLmpzCkBAIC0wLDAgKzEsODkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIGJhc2ljIElEQkN1cnNvciBmdW5jdGlvbmFsaXR5Iik7CisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7
Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJDdXJzb3Ix
RGF0YWJhc2UiLCAxKTsKKworZnVuY3Rpb24gbG9nQ3Vyc29yKGN1cnNvcikKK3sKKyAgICBkZWJ1
ZygiQ3Vyc29yIGlzOiAiICsgY3Vyc29yKTsKKyAgICBkZWJ1ZygiQ3Vyc29yIGRpcmVjdGlvbiBp
czogIiArIGN1cnNvci5kaXJlY3Rpb24pOworICAgIGRlYnVnKCJDdXJzb3Igc291cmNlIGlzOiAi
ICsgY3Vyc29yLnNvdXJjZSArICIgKCIgKyBjdXJzb3Iuc291cmNlLm5hbWUgKyAiKSIpOyAgICAK
KyAgICBkZWJ1ZygiQ3Vyc29yIGtleSBpczogIiArIGN1cnNvci5rZXkpOyAgICAKKyAgICBkZWJ1
ZygiQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAiICsgY3Vyc29yLnByaW1hcnlLZXkpOyAgICAKK30K
KworZnVuY3Rpb24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QpCit7CisgICAgLy8gRklYTUU6IFJpZ2h0
IG5vdyAodW50aWwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTE5
NiBpcyByZXNvbHZlZCkgd2hhdCBzaG91bGQgYmUgc3VjY2Vzc2Z1bCBjdXJzb3Igb3BlcmF0aW9u
cyB3aWxsIGFjdHVhbGx5IGFsd2F5cyBmYWlsLgorICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJTdWNjZXNzIG9wZW5pbmcgY3Vyc29yIik7CisgICAg
ICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7ICAKKyAgICB9CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICBkZWJ1ZygiRXJyb3Igb3BlbmluZyBjdXJzb3Ig
KGV4cGVjdGVkIGZvciBub3cpIik7CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7
CisgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfSAKK30KKwordmFyIG9iamVjdFN0
b3JlOwordmFyIGluZGV4OworCitmdW5jdGlvbiB0ZXN0Q3Vyc29yRGlyZWN0aW9uKGRpcmVjdGlv
bikKK3sKKyAgICB2YXIgcmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKC1JbmZpbml0eSk7
CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rp
b24pOworICAgIHNldHVwUmVxdWVzdChyZXF1ZXN0KTsKKyAgICByZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uKTsKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVzdCk7Cisg
ICAgcmVxdWVzdCA9IGluZGV4Lm9wZW5LZXlDdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7CisgICAg
c2V0dXBSZXF1ZXN0KHJlcXVlc3QpOworfQorCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6
IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0
ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKKyAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKKyAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0
SW5kZXgxIiwgImJhciIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Cisg
ICAgICAgIG9iamVjdFN0b3JlLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKKyAgICB9CisgICAgb2Jq
ZWN0U3RvcmUucHV0KHsgYmFyOiAiSGVsbG8iIH0sICJmb28iKTsKKworICAgIHRlc3RDdXJzb3JE
aXJlY3Rpb24oIm5leHQiKTsKKyAgICB0ZXN0Q3Vyc29yRGlyZWN0aW9uKCJuZXh0dW5pcXVlIik7
CisgICAgdGVzdEN1cnNvckRpcmVjdGlvbigicHJldiIpOworICAgIHRlc3RDdXJzb3JEaXJlY3Rp
b24oInByZXZ1bmlxdWUiKTsKKyAgICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25l
KCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
ZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9jdXJzb3ItMi5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29y
LTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY0YWVmYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvY3Vyc29yLTIuanMKQEAgLTAsMCArMSw4MiBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBj
aGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSB3YWxraW5nIGEgXCJuZXh0XCIgYW5kIFwicHJldlwi
IGN1cnNvciBvbiBhbiBvYmplY3Qgc3RvcmUgd2l0aCBzb21lIHJlY29yZHMuIik7CisKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWco
bWVzc2FnZSk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVu
KCJDdXJzb3IyRGF0YWJhc2UiLCAxKTsKKworZnVuY3Rpb24gbG9nQ3Vyc29yKGN1cnNvcikKK3sK
KyAgICBkZWJ1ZygiQ3Vyc29yIGlzOiAiICsgY3Vyc29yKTsKKyAgICBkZWJ1ZygiQ3Vyc29yIGRp
cmVjdGlvbiBpczogIiArIGN1cnNvci5kaXJlY3Rpb24pOworICAgIGRlYnVnKCJDdXJzb3Igc291
cmNlIGlzOiAiICsgY3Vyc29yLnNvdXJjZSArICIgKCIgKyBjdXJzb3Iuc291cmNlLm5hbWUgKyAi
KSIpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIGtleSBpczogIiArIGN1cnNvci5rZXkpOyAgICAK
KyAgICBkZWJ1ZygiQ3Vyc29yIHZhbHVlIGlzOiAiICsgY3Vyc29yLnZhbHVlKTsgICAgCisgICAg
ZGVidWcoIkN1cnNvciBwcmltYXJ5IGtleSBpczogIiArIGN1cnNvci5wcmltYXJ5S2V5KTsgICAg
Cit9CisKK3ZhciBvYmplY3RTdG9yZTsKK3ZhciBzaG91bGRTdGFydFByZXZpb3VzID0gdHJ1ZTsK
K2Z1bmN0aW9uIHNldHVwUmVxdWVzdChyZXF1ZXN0KQoreworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVxdWVzdC5yZXN1bHQpIHsKKyAgICAgICAg
ICAgIGlmIChzaG91bGRTdGFydFByZXZpb3VzKSB7CisgICAgICAgICAgICAgICAgc2V0dXBSZXF1
ZXN0KG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5p
dHkpLCAicHJldiIpKTsKKyAgICAgICAgICAgICAgICBzaG91bGRTdGFydFByZXZpb3VzID0gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBkZWJ1ZygiU3VjY2VzcyBpdGVyYXRpbmcgIiArIHJlcXVlc3QucmVzdWx0LmRpcmVjdGlv
biArICIgY3Vyc29yIik7CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7CisgICAg
ICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7CisgICAgfQorCisgICAgcmVxdWVzdC5vbmVy
cm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICBkZWJ1ZygiRXJyb3IgaXRlcmF0aW5nIGN1cnNv
ciIpOworICAgICAgICBkb25lKCk7CisgICAgfSAKK30KKworY3JlYXRlUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lv
biAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24g
PSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kp
IHsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQgIiArIGksIGkpOworICAgIH0KKyAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJIZWxsbyIgfSwgImZvbyIpOworICAgIAorICAgIHNl
dHVwUmVxdWVzdChvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkpOworICAgICAgCisgICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1Zygi
SW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9y
dGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25l
KCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2N1cnNvci0zLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL3Jlc291cmNlcy9jdXJzb3ItMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43YzZiYWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy9jdXJzb3ItMy5qcwpAQCAtMCwwICsxLDkyIEBACitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZhcmlvdXMgdXNlcyBvZiBhZHZhbmNlKCkgYW5kIGNvbnRpbnVl
KCkgb24gYSBcIm5leHRcIiBjdXJzb3IuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciBj
cmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJDdXJzb3IzRGF0YWJhc2UiLCAx
KTsKKworZnVuY3Rpb24gbG9nQ3Vyc29yKGN1cnNvcikKK3sKKyAgICBkZWJ1ZygiQ3Vyc29yIGlz
OiAiICsgY3Vyc29yKTsKKyAgICBkZWJ1ZygiQ3Vyc29yIGRpcmVjdGlvbiBpczogIiArIGN1cnNv
ci5kaXJlY3Rpb24pOworICAgIGRlYnVnKCJDdXJzb3Igc291cmNlIGlzOiAiICsgY3Vyc29yLnNv
dXJjZSArICIgKCIgKyBjdXJzb3Iuc291cmNlLm5hbWUgKyAiKSIpOyAgICAKKyAgICBkZWJ1Zygi
Q3Vyc29yIGtleSBpczogIiArIGN1cnNvci5rZXkpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIHZh
bHVlIGlzOiAiICsgY3Vyc29yLnZhbHVlKTsgICAgCisgICAgZGVidWcoIkN1cnNvciBwcmltYXJ5
IGtleSBpczogIiArIGN1cnNvci5wcmltYXJ5S2V5KTsgICAgCit9CisKK3ZhciBvYmplY3RTdG9y
ZTsKKworZnVuY3Rpb24gc2V0dXBSZXF1ZXN0MShyZXF1ZXN0KQoreworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVxdWVzdC5yZXN1bHQpIHsKKyAg
ICAgICAgICAgIHNldHVwUmVxdWVzdDIob2JqZWN0U3RvcmUub3BlbkN1cnNvcigpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZWJ1ZygiU3VjY2VzcyBpdGVyYXRp
bmcgY3Vyc29yIik7CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7CisgICAgICAg
IHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKHJlcXVlc3QucmVzdWx0LmtleSArIDIpOworICAgIH0K
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGRlYnVnKCJFcnJv
ciBpdGVyYXRpbmcgY3Vyc29yIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9IAorfQorCitmdW5j
dGlvbiBzZXR1cFJlcXVlc3QyKHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCFyZXF1ZXN0LnJlc3VsdCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZGVidWcoIlN1Y2Nlc3MgaXRlcmF0aW5nIGN1cnNvciIpOworICAgICAg
ICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOworICAgICAgICByZXF1ZXN0LnJlc3VsdC5hZHZh
bmNlKDMpOyAgICAgICAgCisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgZGVidWcoIkVycm9yIGl0ZXJhdGluZyBjdXJzb3IiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0gCit9CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50
cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
IG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIG9iamVj
dFN0b3JlLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKKyAgICB9CisgICAgb2JqZWN0U3RvcmUucHV0
KHsgYmFyOiAiSGVsbG8iIH0sICJmb28iKTsKKyAgICAKKyAgICBzZXR1cFJlcXVlc3QxKG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKSk7CisgICAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29y
LTQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2N1
cnNvci00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNmYyOWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVz
b3VyY2VzL2N1cnNvci00LmpzCkBAIC0wLDAgKzEsOTEgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgdmFyaW91cyB1c2VzIG9mIGFkdmFuY2UoKSBhbmQgY29udGludWUoKSBvbiBhIFwicHJldlwi
IGN1cnNvci4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0
aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkKK3sKKyAgICBkZWJ1ZyhtZXNzYWdlKTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3
aW5kb3cuaW5kZXhlZERCLm9wZW4oIkN1cnNvcjREYXRhYmFzZSIsIDEpOworCitmdW5jdGlvbiBs
b2dDdXJzb3IoY3Vyc29yKQoreworICAgIGRlYnVnKCJDdXJzb3IgaXM6ICIgKyBjdXJzb3IpOwor
ICAgIGRlYnVnKCJDdXJzb3IgZGlyZWN0aW9uIGlzOiAiICsgY3Vyc29yLmRpcmVjdGlvbik7Cisg
ICAgZGVidWcoIkN1cnNvciBzb3VyY2UgaXM6ICIgKyBjdXJzb3Iuc291cmNlICsgIiAoIiArIGN1
cnNvci5zb3VyY2UubmFtZSArICIpIik7ICAgIAorICAgIGRlYnVnKCJDdXJzb3Iga2V5IGlzOiAi
ICsgY3Vyc29yLmtleSk7ICAgIAorICAgIGRlYnVnKCJDdXJzb3IgdmFsdWUgaXM6ICIgKyBjdXJz
b3IudmFsdWUpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAiICsgY3Vy
c29yLnByaW1hcnlLZXkpOyAgICAKK30KKwordmFyIG9iamVjdFN0b3JlOworCitmdW5jdGlvbiBz
ZXR1cFJlcXVlc3QxKHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgaWYgKCFyZXF1ZXN0LnJlc3VsdCkgeworICAgICAgICAgICAgc2V0dXBS
ZXF1ZXN0MihvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoLUlu
ZmluaXR5KSwgInByZXYiKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgZGVidWcoIlN1Y2Nlc3MgaXRlcmF0aW5nIGN1cnNvciIpOworICAgICAgICBsb2dDdXJzb3Io
cmVxdWVzdC5yZXN1bHQpOworICAgICAgICByZXF1ZXN0LnJlc3VsdC5jb250aW51ZShyZXF1ZXN0
LnJlc3VsdC5rZXkgLSAyKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZSkgeworICAgICAgICBkZWJ1ZygiRXJyb3IgaXRlcmF0aW5nIGN1cnNvciIpOworICAgICAgICBk
b25lKCk7CisgICAgfSAKK30KKworZnVuY3Rpb24gc2V0dXBSZXF1ZXN0MihyZXF1ZXN0KQorewor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVxdWVz
dC5yZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlYnVnKCJTdWNjZXNzIGl0
ZXJhdGluZyBjdXJzb3IiKTsKKyAgICAgICAgbG9nQ3Vyc29yKHJlcXVlc3QucmVzdWx0KTsKKyAg
ICAgICAgcmVxdWVzdC5yZXN1bHQuYWR2YW5jZSgzKTsgICAgICAgIAorICAgIH0KKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGRlYnVnKCJFcnJvciBpdGVyYXRp
bmcgY3Vyc29yIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9IAorfQorCitjcmVhdGVSZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkluaXRpYWwg
dXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5l
dyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFu
c2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9i
amVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkgeworICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7Cisg
ICAgfQorICAgICAgICAKKyAgICBzZXR1cFJlcXVlc3QxKG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5pdHkpLCAicHJldiIpKTsKKyAgICAgIAorICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5p
dGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25l
KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3Jlc291cmNlcy9jdXJzb3ItNS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29yLTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmM3OGJjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29yLTUuanMKQEAgLTAsMCArMSw3MSBA
QAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaXRlcmF0aW5nIGEgXCJuZXh0XCIgY3Vyc29yIGlu
IGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiB3aGlsZSBjaGFuZ2luZyByZWNvcmRzLiIpOworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRl
YnVnKG1lc3NhZ2UpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIu
b3BlbigiQ3Vyc29yNURhdGFiYXNlIiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAi
ICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3Jl
YXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQor
ICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7CisgICAgCisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkN1cnNvciBvcGVuIGF0IGtleSAiICsg
cmVxdWVzdC5yZXN1bHQua2V5KTsKKworICAgICAgICAvLyBUaGlzIHRlc3RzIGRlbGV0aW5nIHRo
ZSBjdXJyZW50IHJlY29yZCBvdXQgb2YgdW5kZXJuZWF0aCB0aGUgY3Vyc29yLgorICAgICAgICAv
LyBJdHMgY3VycmVudCBrZXkgc2hvdWxkIGJlIDAsIGFmdGVyIGFuIGl0ZXJhdGlvbiBpdHMgbmV4
dCBrZXkgc2hvdWxkIGJlIDEuCisgICAgICAgIG9iamVjdFN0b3JlLmRlbGV0ZSgwKS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVnKCJSZWNvcmQgMCBkZWxldGVkLCBl
dmVuIHRob3VnaCB0aGF0J3Mgd2hlcmUgdGhlIGN1cnNvciBjdXJyZW50bHkgcG9pbnRzLiIpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCBjdXJzb3IgaXRlcmF0aW9u
IGhhcyBiZWd1biwgbWFudWFsbHkgZGVsZXRlIGFuZCB0aGVuIHJlcGxhY2UgYSByZWNvcmQgCisg
ICAgICAgIC8vIHRoYXQgd2lsbCBldmVudHVhbGx5IGJlIGl0ZXJhdGVkIHRvLCBtYWtpbmcgc3Vy
ZSB0aGUgbmV3IHZhbHVlIGlzIHBpY2tlZCB1cC4gCisgICAgICAgIG9iamVjdFN0b3JlLmRlbGV0
ZSgyKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJTY2FyeSBuZXcgYWN0dWFsIHJlY29yZCEi
LCAyKTsKKyAgICAKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJDdXJzb3IgaXRlcmF0ZWQgdG8ga2V5ICIgKyByZXF1ZXN0LnJlc3Vs
dC5rZXkpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDdXJzb3IgaXRlcmF0ZWQgdG8ga2V5
ICIgKyByZXF1ZXN0LnJlc3VsdC5rZXkgKyAiIHdpdGggdmFsdWUgJyIgKyByZXF1ZXN0LnJlc3Vs
dC52YWx1ZSArICInIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5y
ZXN1bHQuY29udGludWUoKTsKKyAgICB9CisgICAgICAgICAgCisgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7Cisg
ICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAg
fQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2N1cnNvci02LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9jdXJzb3ItNi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzAz
ZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL3Jlc291cmNlcy9jdXJzb3ItNi5qcwpAQCAtMCwwICsxLDcxIEBACitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyBpdGVyYXRpbmcgYSBcInByZXZcIiBjdXJzb3IgaW4gYSByZWFkLXdyaXRlIHRy
YW5zYWN0aW9uIHdoaWxlIGNoYW5naW5nIHJlY29yZHMuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9
CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJDdXJzb3I2RGF0
YWJhc2UiLCAxKTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
dmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAt
ICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJz
aW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5z
YWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFy
IG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgICAgIG9iamVjdFN0
b3JlLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKKyAgICAKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5pdHkpLCAicHJl
diIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVn
KCJDdXJzb3Igb3BlbiBhdCBrZXkgIiArIHJlcXVlc3QucmVzdWx0LmtleSk7CisKKyAgICAgICAg
Ly8gVGhpcyB0ZXN0cyBkZWxldGluZyB0aGUgY3VycmVudCByZWNvcmQgb3V0IG9mIHVuZGVybmVh
dGggdGhlIGN1cnNvci4KKyAgICAgICAgLy8gSXRzIGN1cnJlbnQga2V5IHNob3VsZCBiZSAyLCBh
ZnRlciBhbiBpdGVyYXRpb24gaXRzIG5leHQga2V5IHNob3VsZCBiZSAxLgorICAgICAgICBvYmpl
Y3RTdG9yZS5kZWxldGUoMikub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBk
ZWJ1ZygiUmVjb3JkIDIgZGVsZXRlZCwgZXZlbiB0aG91Z2ggdGhhdCdzIHdoZXJlIHRoZSBjdXJz
b3IgY3VycmVudGx5IHBvaW50cy4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8g
Tm93IHRoYXQgY3Vyc29yIGl0ZXJhdGlvbiBoYXMgYmVndW4sIG1hbnVhbGx5IGRlbGV0ZSBhbmQg
dGhlbiByZXBsYWNlIGEgcmVjb3JkIAorICAgICAgICAvLyB0aGF0IHdpbGwgZXZlbnR1YWxseSBi
ZSBpdGVyYXRlZCB0bywgbWFraW5nIHN1cmUgdGhlIG5ldyB2YWx1ZSBpcyBwaWNrZWQgdXAuIAor
ICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoMCk7CisgICAgICAgIG9iamVjdFN0b3JlLnB1dCgi
U2NhcnkgbmV3IGFjdHVhbCByZWNvcmQhIiwgMCk7CisgICAgCisgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWJ1ZygiQ3Vyc29yIGl0ZXJhdGVk
IHRvIGtleSAiICsgcmVxdWVzdC5yZXN1bHQua2V5KTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiQ3Vyc29yIGl0ZXJhdGVkIHRvIGtleSAiICsgcmVxdWVzdC5yZXN1bHQua2V5ICsgIiB3aXRo
IHZhbHVlICciICsgcmVxdWVzdC5yZXN1bHQudmFsdWUgKyAiJyIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICByZXF1ZXN0LnJlc3VsdC5jb250aW51ZSgpOworICAg
ICAgICB9CisgICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7CisgICAgfQorICAgICAg
ICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVy
c2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBk
ZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUi
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9jdXJzb3ItNy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29yLTcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5NTFlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29yLTcuanMKQEAgLTAs
MCArMSw2NSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaXRlcmF0aW5nIGEgXCJuZXh0XCIg
Y3Vyc29yIGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiBjb21iaW5lZCB3aXRoIGNsZWFyaW5n
IHRoZSBvYmplY3Qgc3RvcmUuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
fQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciBjcmVhdGVS
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJDdXJzb3I3RGF0YWJhc2UiLCAxKTsKKwor
Y3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRl
YnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRW
ZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZh
ciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZh
ciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0g
ZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiUmVjb3Jk
ICIgKyBpLCBpKTsKKyAgICAKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1
ZygiQ3Vyc29yIG9wZW4gYXQga2V5ICIgKyByZXF1ZXN0LnJlc3VsdC5rZXkpOworCisgICAgICAg
IC8vIFRoaXMgdGVzdHMgZGVsZXRpbmcgdGhlIGN1cnJlbnQgcmVjb3JkIG91dCBvZiB1bmRlcm5l
YXRoIHRoZSBjdXJzb3IuCisgICAgICAgIC8vIEl0cyBjdXJyZW50IGtleSBzaG91bGQgYmUgMCwg
YWZ0ZXIgYW4gaXRlcmF0aW9uIGl0cyBuZXh0IGtleSBzaG91bGQgYmUgMS4KKyAgICAgICAgb2Jq
ZWN0U3RvcmUuY2xlYXIoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJPYmplY3Qgc3RvcmUgY2xlYXJlZC4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgLy8gVGhlIGN1cnNvciBpcyBjdXJyZW50bHkgb24ga2V5IDAsIHdoaWNoIG5vIGxvbmdlciBl
eGlzdHMuCisgICAgICAgIC8vIEl0J3MgbmV4dCBrZXkgd291bGQgaGF2ZSBiZWVuIDEsIGJ1dCB0
aGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGNsZWFyZWQuCisgICAgICAgIC8vIFdoYXRldmVyIGtl
eSB3ZSBwdXQgaW4gdGhlIG9iamVjdCBzdG9yZSB0aGF0IGlzIGdyZWF0ZXIgdGhhbiAwIHdpbGwg
YmUgdGhlIGFjdHVhbCBuZXh0IGtleS4KKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQg
MTAwIiwgMTAwKTsKKyAgICAKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGRlYnVnKCJDdXJzb3IgaXRlcmF0ZWQgdG8ga2V5ICIgKyByZXF1ZXN0
LnJlc3VsdC5rZXkpOworICAgICAgICB9CisgICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVl
KCk7CisgICAgfQorICAgICAgICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7
CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJy
b3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9jdXJzb3ItOC5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvY3Vyc29yLTgu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0NjVlNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
Y3Vyc29yLTguanMKQEAgLTAsMCArMSw2NSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaXRl
cmF0aW5nIGEgXCJwcmV2XCIgY3Vyc29yIGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiB3aGls
ZSBjaGFuZ2luZyByZWNvcmRzLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
K30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCit2YXIgY3JlYXRl
UmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiQ3Vyc29yOERhdGFiYXNlIiwgMSk7CisK
K2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBk
ZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xk
VmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2
YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2
YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9
IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQorICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29y
ZCAiICsgaSwgaSk7CisgICAgCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoLUluZmluaXR5KSwgInByZXYiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiQ3Vyc29yIG9wZW4g
YXQga2V5ICIgKyByZXF1ZXN0LnJlc3VsdC5rZXkpOworCisgICAgICAgIC8vIFRoaXMgdGVzdHMg
ZGVsZXRpbmcgdGhlIGN1cnJlbnQgcmVjb3JkIG91dCBvZiB1bmRlcm5lYXRoIHRoZSBjdXJzb3Iu
CisgICAgICAgIC8vIEl0cyBjdXJyZW50IGtleSBzaG91bGQgYmUgMCwgYWZ0ZXIgYW4gaXRlcmF0
aW9uIGl0cyBuZXh0IGtleSBzaG91bGQgYmUgMS4KKyAgICAgICAgb2JqZWN0U3RvcmUuY2xlYXIo
KS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVnKCJPYmplY3Qgc3Rv
cmUgY2xlYXJlZC4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhlIGN1cnNv
ciBpcyBjdXJyZW50bHkgb24ga2V5IDIsIHdoaWNoIG5vIGxvbmdlciBleGlzdHMuCisgICAgICAg
IC8vIEl0J3MgbmV4dCBrZXkgd291bGQgaGF2ZSBiZWVuIDEsIGJ1dCB0aGUgb2JqZWN0IHN0b3Jl
IGhhcyBiZWVuIGNsZWFyZWQuCisgICAgICAgIC8vIFdoYXRldmVyIGtleSB3ZSBwdXQgaW4gdGhl
IG9iamVjdCBzdG9yZSB0aGF0IGlzIGxlc3MgdGhhbiAyIHdpbGwgYmUgdGhlIGFjdHVhbCBuZXh0
IGtleS4KKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQgLTEwMCIsIC0xMDApOworICAg
IAorICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZGVidWcoIkN1cnNvciBpdGVyYXRlZCB0byBrZXkgIiArIHJlcXVlc3QucmVzdWx0LmtleSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5yZXN1bHQuY29udGludWUoKTsKKyAgICB9CisgICAg
ICAgICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gdW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7Cisg
ICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RhdGUtYmFzaWMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RhdGUtYmFzaWMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlMjJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGF0ZS1iYXNpYy5q
cwpAQCAtMCwwICsxLDk1IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB1c2luZyBEYXRlIG9i
amVjdHMgYXMga2V5cyBhbmQgdmFsdWVzLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJEYXRlQmFzaWNEYXRh
YmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCit2YXIgZGF0ZTEgPSBuZXcgRGF0ZSgiMTk1NS0x
MS0wNVQwMDowMDowMCIpOwordmFyIGRhdGUyID0gbmV3IERhdGUoIjE5NTUtMTEtMTJUMTg6MDA6
MDAiKTsKK3ZhciBkYXRlMyA9IG5ldyBEYXRlKCIyMDE1LTEwLTIxVDE2OjAwOjAwIik7CisgICAg
CitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNp
b24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNh
Y3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsK
KworICAgIG9iamVjdFN0b3JlLnB1dCgiRmx1eCBjYXBhY2l0b3IiLCBkYXRlMSk7CisgICAgb2Jq
ZWN0U3RvcmUucHV0KCJGaXNoIHVuZGVyIHRoZSBzZWEiLCBkYXRlMik7CisgICAgb2JqZWN0U3Rv
cmUucHV0KCJIb3ZlcmJvYXJkcyIsIGRhdGUzKTsKKyAgICAKKyAgICBvYmplY3RTdG9yZS5wdXQo
ZGF0ZTEsICJhIik7CisgICAgb2JqZWN0U3RvcmUucHV0KGRhdGUyLCAiYiIpOworICAgIG9iamVj
dFN0b3JlLnB1dChkYXRlMywgImMiKTsKKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0
aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQi
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIklu
aXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAg
ICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25l
cnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0
aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiAr
IGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKwordmFyIG9iamVjdFN0b3JlOwor
CitmdW5jdGlvbiB0ZXN0R2V0KGtleSkgeworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
Z2V0KGtleSk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU3VjY2VzcyBnZXR0aW5nIGtleSAnIiArIGtleSArICIn
IG9mIHR5cGUgIiArIHR5cGVvZihrZXkpICsgIiwgcmVzdWx0IGlzICciICsgcmVxdWVzdC5yZXN1
bHQgKyAiJyBvZiB0eXBlICIgKyB0eXBlb2YocmVxdWVzdC5yZXN1bHQpKTsKKyAgICAgICAgaWYg
KGtleSBpbnN0YW5jZW9mIERhdGUpCisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiS2V5
IGlzIGEgRGF0ZSBvYmplY3QsIGJ0dyIpOworICAgICAgICBpZiAocmVxdWVzdC5yZXN1bHQgaW5z
dGFuY2VvZiBEYXRlKQorICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlJlc3VsdCBpcyBh
IERhdGUgb2JqZWN0LCBidHciKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkV4cGVjdGVkIGVycm9yIGdl
dHRpbmcga2V5ICciICsga2V5ICsgIiciKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVl
VGVzdDEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJU
ZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICB0ZXN0R2V0KGRh
dGUxKTsKKyAgICB0ZXN0R2V0KGRhdGUyKTsKKyAgICB0ZXN0R2V0KGRhdGUzKTsKKyAgICB0ZXN0
R2V0KCJhIik7CisgICAgdGVzdEdldCgiYiIpOworICAgIHRlc3RHZXQoImMiKTsKKyAgICAKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZl
bnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkb25s
eSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAg
dHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtMS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJh
c2UtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmQwNzFhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9kZWxldGVkYXRhYmFzZS0xLmpzCkBAIC0wLDAgKzEsMTI3IEBACitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGlmIGRlbGV0ZURhdGFiYXNlIGlzIGNhbGxlZCB3aGlsZSB0aGVyZSBp
cyBhbHJlYWR5IGFuIG9wZW4gY29ubmVjdGlvbiB0byB0aGUgZGF0YWJhc2UgdGhhdCB0aGUgb3Bl
biBjb25uZWN0aW9uIGdldHMgdGhlIGFwcHJvcHJpYXRlIHZlcnNpb25DaGFuZ2UgZXZlbnQuIik7
CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkK
K3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7Cisg
ICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5v
cGVuKCJEZWxldGVEYXRhYmFzZTFUZXN0RGF0YWJhc2UiKTsKK3JlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvcGVuIGRiIHN1Y2Nlc3MiKTsKK30KK3JlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKGUpCit7CisgICAgZGVidWcoIlVuZXhwZWN0ZWQgZXJyb3IiKTsK
Kwlkb25lKCk7Cit9CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkKK3sK
KyAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lv
biArICIgbmV3IHZlcnNpb24gLSAiICsgZS5uZXdWZXJzaW9uKTsKKyAgICAKKyAgICB2YXIgdmVy
c2lvblRyYW5zYWN0aW9uID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2Ug
PSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNy
ZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBvYmplY3RTdG9yZS5wdXQo
IlRoaXMgaXMgYSByZWNvcmQiLCAxKTsKKyAgICAgICAgCisgICAgcmVxdWVzdC50cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWcoIlZlcnNpb24g
Y2hhbmdlIGNvbXBsZXRlIik7CisgICAgICAgIGRhdGFiYXNlLm9udmVyc2lvbmNoYW5nZSA9IGZ1
bmN0aW9uKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJGaXJzdCBjb25uZWN0aW9u
IHJlY2VpdmVkIHZlcnNpb25jaGFuZ2UgZXZlbnQ6IG9sZFZlcnNpb24gIiArIGUub2xkVmVyc2lv
biArICIsIG5ld1ZlcnNpb24gIiArIGUubmV3VmVyc2lvbik7CisgICAgICAgICAgICBkYXRhYmFz
ZS5jbG9zZSgpOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9Cisg
ICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgZGVidWcoIlZlcnNpb24gY2hhbmdlIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKyAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBkZWJ1ZygiVmVyc2lvbiBjaGFuZ2UgdW5leHBlY3RlZCBlcnJvciIp
OworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkK
K3sKKyAgICBkZWJ1ZygiUmVxdWVzdGluZyBkZWxldGVEYXRhYmFzZSIpOworICAgIHZhciByZXF1
ZXN0ID0gd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgiRGVsZXRlRGF0YWJhc2UxVGVz
dERhdGFiYXNlIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKQorICAgIHsK
KyAgICAgICAgZGVidWcoIkRlbGV0ZSBkYXRhYmFzZSBzdWNjZXNzOiBvbGRWZXJzaW9uICIgKyBl
Lm9sZFZlcnNpb24gKyAiLCBuZXdWZXJzaW9uICIgKyBlLm5ld1ZlcnNpb24pOworICAgICAgICBj
b250aW51ZVRlc3QyKCk7CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUp
CisgICAgeworICAgICAgICBkZWJ1ZygiRGVsZXRlIGRhdGFiYXNlIHVuZXhwZWN0ZWQgZXJyb3Ii
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiRGVsZXRlIGRhdGFiYXNlIHVuZXhw
ZWN0ZWQgdXBncmFkZW5lZWRlZCIpOworICAgIAlkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlv
biBjb250aW51ZVRlc3QyKCkKK3sKKyAgICBkZWJ1ZygiUmVjcmVhdGluZyBkYXRhYmFzZSB0byBt
YWtlIHN1cmUgaXQncyBuZXcgYW5kIGVtcHR5Iik7CisgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cu
aW5kZXhlZERCLm9wZW4oIkRlbGV0ZURhdGFiYXNlMVRlc3REYXRhYmFzZSIpOworCisgICAgcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgZGVidWco
IlNlY29uZCB1cGdyYWRlIG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIgbmV3IHZl
cnNpb24gLSAiICsgZS5uZXdWZXJzaW9uKTsKKyAgICAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IHJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAg
ICAgICAgdmFyIG9iamVjdFN0b3JlID0gdmVyc2lvblRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiVW5hYmxlIHRvIGdldCBvYmplY3Qgc3RvcmUgaW4gc2Vjb25kIHVwZ3JhZGUgdHJhbnNhY3Rp
b24gKHdoaWNoIGlzIGNvcnJlY3QgYmVjYXVzZSBpdCBzaG91bGQgbm90IGJlIHRoZXJlKSIpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbihlKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiU2Vjb25kIGRhdGFiYXNlIHVw
Z3JhZGUgc3VjY2VzcyIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJTZWNvbmQgZGF0YWJhc2UgdXBncmFkZSB1bmV4cGVj
dGVkIGFib3J0Iik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJTZWNvbmQgZGF0YWJhc2UgdXBncmFkZSB1bmV4cGVj
dGVkIGVycm9yIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1Zygi
U2Vjb25kIGRhdGFiYXNlIG9wZW5pbmcgdW5leHBlY3RlZCBzdWNjZXNzIik7CisgICAgICAgIGRv
bmUoKTsKKyAgICB9CisgICAgCisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKKyAg
ICB7CisgICAgICAgIGRlYnVnKCJTZWNvbmQgZGF0YWJhc2Ugb3BlbmluZyB1bmV4cGVjdGVkIGVy
cm9yIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLTIuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0ZWRh
dGFiYXNlLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUyNjIyZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9y
ZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtMi5qcwpAQCAtMCwwICsxLDE0NCBAQAorZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhhdCBpZiBkZWxldGVEYXRhYmFzZSBpcyBjYWxsZWQgd2hpbGUgdGhl
cmUgaXMgYWxyZWFkeSBhbiBvcGVuIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlIHRoYXQgdGhl
IG9wZW4gY29ubmVjdGlvbiBnZXRzIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uQ2hhbmdlIGV2ZW50
LiBcCitUaGF0IG9wZW4gY29ubmVjdGlvbiBhbHNvIGhhcyBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiBhdCB0aGUgdGltZSBpdCBnZXRzIHRoZSB2ZXJzaW9uQ2hhbmdlIGV2ZW50LiIpOworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRl
YnVnKG1lc3NhZ2UpOworfQorCit2YXIgc3RvcFNwaW5uaW5nID0gZmFsc2U7CisKK3ZhciByZXF1
ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJEZWxldGVEYXRhYmFzZTJUZXN0RGF0YWJhc2Ui
KTsKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJvcGVuIGRi
IHN1Y2Nlc3MiKTsKK30KK3JlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCit7CisgICAgZGVi
dWcoIk9wZW4gcmVxdWVzdCBlcnJvcjogIiArIHJlcXVlc3QuZXJyb3IubmFtZSk7Cit9CisKK3Jl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkKK3sKKyAgICBkZWJ1ZygiSW5pdGlh
bCB1cGdyYWRlIG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIgbmV3IHZlcnNpb24g
LSAiICsgZS5uZXdWZXJzaW9uKTsKKyAgICAKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0g
cmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVz
dWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoIlRoaXMgaXMgYSByZWNvcmQi
LCAxKTsKKyAgICAKKyAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB1bnRpbCB0b2xkIHRvIHN0
b3Agc3Bpbm5pbmcgaXQuCisgICAgdmFyIGtlZXBHb2luZyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAoIXN0b3BTcGlubmluZykKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmdldCgxKS5vbnN1
Y2Nlc3MgPSBrZWVwR29pbmc7CisgICAgfQorICAgIG9iamVjdFN0b3JlLmdldCgxKS5vbnN1Y2Nl
c3MgPSBrZWVwR29pbmc7CisKKyAgICBkYXRhYmFzZS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlv
bihlKQorICAgIHsKKyAgICAgICAgZGVidWcoIkZpcnN0IGNvbm5lY3Rpb24gcmVjZWl2ZWQgdmVy
c2lvbmNoYW5nZSBldmVudDogb2xkVmVyc2lvbiAiICsgZS5vbGRWZXJzaW9uICsgIiwgbmV3VmVy
c2lvbiAiICsgZS5uZXdWZXJzaW9uKTsKKyAgICAgICAgCisgICAgICAgIHZhciBzaHV0RXJEb3du
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgICAgICAg
ICAgc3RvcFNwaW5uaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuc2V0VGlt
ZW91dChzaHV0RXJEb3duLCAwKTsKKyAgICB9CisgICAgICAgIAorICAgIHJlcXVlc3QudHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJGaXJz
dCB2ZXJzaW9uIGNoYW5nZSBjb21wbGV0ZSIpOworICAgIH0KKyAgICAKKyAgICByZXF1ZXN0LnRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZygiVmVy
c2lvbiBjaGFuZ2UgdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQor
ICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGRlYnVnKCJWZXJzaW9uIGNoYW5nZSB1bmV4cGVjdGVkIGVycm9yIik7CisgICAgICAgIGRv
bmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LnNldFRpbWVvdXQoY29udGludWVUZXN0MSwg
MCk7Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQoreworICAgIGRlYnVnKCJSZXF1ZXN0
aW5nIGRlbGV0ZURhdGFiYXNlIik7CisgICAgdmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCJEZWxldGVEYXRhYmFzZTJUZXN0RGF0YWJhc2UiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiRGVsZXRl
IGRhdGFiYXNlIHN1Y2Nlc3M6IG9sZFZlcnNpb24gIiArIGUub2xkVmVyc2lvbiArICIsIG5ld1Zl
cnNpb24gIiArIGUubmV3VmVyc2lvbik7CisgICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKKyAgICB9
CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVn
KCJEZWxldGUgZGF0YWJhc2UgdW5leHBlY3RlZCBlcnJvciIpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkKKyAgICB7Cisg
ICAgICAgIGRlYnVnKCJEZWxldGUgZGF0YWJhc2UgdW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIik7
CisgICAgCWRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQorewor
ICAgIGRlYnVnKCJSZWNyZWF0aW5nIGRhdGFiYXNlIHRvIG1ha2Ugc3VyZSBpdCdzIG5ldyBhbmQg
ZW1wdHkiKTsKKyAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiRGVsZXRl
RGF0YWJhc2UyVGVzdERhdGFiYXNlIik7CisKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiU2Vjb25kIHVwZ3JhZGUgb2xkIHZl
cnNpb24gLSAiICsgZS5vbGRWZXJzaW9uICsgIiBuZXcgdmVyc2lvbiAtICIgKyBlLm5ld1ZlcnNp
b24pOworICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gcmVxdWVzdC50cmFuc2FjdGlv
bjsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmUg
PSB2ZXJzaW9uVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJVbmFibGUgdG8gZ2V0IG9iamVj
dCBzdG9yZSBpbiBzZWNvbmQgdXBncmFkZSB0cmFuc2FjdGlvbiAod2hpY2ggaXMgY29ycmVjdCBi
ZWNhdXNlIGl0IHNob3VsZCBub3QgYmUgdGhlcmUpIik7CisgICAgICAgIH0KKworICAgICAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJTZWNvbmQgZGF0YWJhc2UgdXBncmFkZSBzdWNjZXNzIik7CisgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlNlY29uZCBkYXRhYmFzZSB1cGdyYWRlIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlNlY29uZCBkYXRhYmFzZSB1cGdyYWRlIHVuZXhwZWN0ZWQgZXJyb3IiKTsKKyAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCJTZWNvbmQgZGF0YWJhc2Ugb3Blbmlu
ZyB1bmV4cGVjdGVkIHN1Y2Nlc3MiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICAKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgZGVidWcoIlNl
Y29uZCBkYXRhYmFzZSBvcGVuaW5nIHVuZXhwZWN0ZWQgZXJyb3IiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtbnVsbC1uYW1lLWV4Y2VwdGlvbi5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJh
c2UtbnVsbC1uYW1lLWV4Y2VwdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41ODczYjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0aW9u
LmpzCkBAIC0wLDAgKzEsMTkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2FsbHMgZGVsZXRl
RGF0YWJhc2Ugb24gd2luZG93LmluZGV4ZWREQiB3aXRoIGEgbnVsbCBkYXRhYmFzZSBuYW1lLCBt
YWtpbmcgc3VyZSB0aGVyZSBpcyBhbiBleGNlcHRpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordHJ5IHsKKwl2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoKTsKK30gY2F0Y2ggKGUpIHsKKwlkZWJ1ZygiQUxFUlQ6ICIgKyBlKTsKK30KKworZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LWV2
ZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMzRmZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuanMKQEAgLTAsMCArMSwyNiBAQAorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBjYWxscyBkZWxldGVEYXRhYmFzZSBvbiB3aW5kb3cuaW5kZXhl
ZERCIGFuZCB2ZXJpZmllcyB0aGF0IGFuIGV2ZW50IGlzIGZpcmVkIGF0IHRoZSByZXF1ZXN0LiIp
OworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgp
Cit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZSgiVGVzdERhdGFiYXNlIik7CisKK3JlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKQoreworCWRlYnVnKCJBTEVSVDogIiArICJzdWNjZXNzIik7CisJZG9uZSgp
OworfQorcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKK3sKKwlkZWJ1ZygiQUxFUlQ6ICIg
KyAiZXJyb3IgIiArIGUpOworCWRvbmUoKTsKK30KKworZGVidWcoIkFMRVJUOiAiICsgcmVxdWVz
dCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVz
b3VyY2VzL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY2OWQ2MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlZGF0
YWJhc2UtcmVxdWVzdC5qcwpAQCAtMCwwICsxLDE2IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNhbGxzIGRlbGV0ZURhdGFiYXNlIG9uIHdpbmRvdy5pbmRleGVkREIgYW5kIHZlcmlmaWVzIHRo
YXQgYW4gSURCT3BlbkRCUmVxdWVzdCBvYmplY3QgaXMgcmV0dXJuZWQuIik7CisKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKCJUZXN0RGF0YWJhc2UiKTsKK2RlYnVnKCJBTEVSVDogIiArIHJlcXVlc3QpOworCitk
b25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2RlbGV0ZWluZGV4LTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL2RlbGV0ZWluZGV4LTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOGI4NzFiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlaW5kZXgtMS5qcwpAQCAtMCww
ICsxLDEwNyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgZGVsZXRpbmcgYW4gaW5kZXggYW5k
IHRoZW4gY29tbWl0dGluZyB0aGUgdHJhbnNhY3Rpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9
CisKK3ZhciBpbmRleDsKK3ZhciBvYmplY3RTdG9yZTsKK3ZhciBkYXRhYmFzZTsKKworZnVuY3Rp
b24gY2hlY2tJbmRleFZhbHVlcygpCit7CisgICAgdmFyIGNvdW50UmVxdWVzdCA9IGluZGV4LmNv
dW50KCk7CisgICAgY291bnRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBkZWJ1ZygiQ291bnQgaXM6ICIgKyBjb3VudFJlcXVlc3QucmVzdWx0KTsKKyAgICB9CisKKyAg
ICB2YXIgY3Vyc29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsKKyAgICBjdXJzb3JSZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3Vyc29yID0gY3Vyc29y
UmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgICAgICBvYmpl
Y3RTdG9yZS5kZWxldGVJbmRleCgiVGVzdEluZGV4MSIpOworICAgICAgICAgICAgZGVidWcoIkRl
bGV0ZWQgdGhlIGluZGV4Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBkZWJ1ZygiQ3Vyc29yIGF0IHJlY29yZDogIiArIGN1cnNvci5rZXkgKyAiIC8gIiArIGN1
cnNvci5wcmltYXJ5S2V5KTsKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgfQorICAg
IGN1cnNvclJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZGVidWcoIlVu
ZXhwZWN0ZWQgZXJyb3Igb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yIik7CisgICAgICAgIGxv
Z0N1cnNvcihjdXJzb3JSZXF1ZXN0LnJlc3VsdCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9IAor
fQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiRGVsZXRlSW5k
ZXgxRGF0YWJhc2UiLCAxKTsKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50
cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgb2Jq
ZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7
CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQSIgfSwgMSk7CisgICAgb2JqZWN0U3RvcmUu
cHV0KHsgYmFyOiAiQSIgfSwgMik7CisKKyAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCJUZXN0SW5kZXgxIiwgImJhciIpOworICAgIAorICAgIGNoZWNrSW5kZXhWYWx1ZXMoKTsK
KyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJz
aW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRl
YnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIp
OworICAgICAgICBjb250aW51ZVRlc3QoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0KCkg
eworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0
U3RvcmUiKTsKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKKworICAgIHZhciBuYW1lcyA9IG9iamVjdFN0b3JlLmluZGV4TmFtZXM7
CisgICAgZGVidWcoIk9iamVjdCBzdG9yZSBoYXMgaW5kZXhlczoiKQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgIGRlYnVnKG5hbWVzW2ldKTsKKyAg
ICAKKyAgICB0cnkgeworICAgICAgICBvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4MSIpOwor
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiVW5hYmxlIHRvIGdldCBpbmRleCBmcm9t
IG9iamVjdCBzdG9yZSAoaXQgc2hvdWxkbid0IGV4aXN0KSIpOworICAgIH0KKworICAgIHRyYW5z
YWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiVHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVn
KCJUcmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAg
dHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJU
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9yZXNvdXJjZXMvZGVsZXRlaW5kZXgtMi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlaW5kZXgtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wZTliMzJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9kZWxldGVpbmRleC0yLmpzCkBAIC0w
LDAgKzEsMTMyIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBkZWxldGluZyBhbiBpbmRleCBh
bmQgdGhlbiBhYm9ydGluZyB0aGUgdHJhbnNhY3Rpb24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9
CisKK3ZhciBpbmRleDsKK3ZhciBvYmplY3RTdG9yZTsKK3ZhciBkYXRhYmFzZTsKKworZnVuY3Rp
b24gY2hlY2tJbmRleFZhbHVlcygpCit7CisgICAgdmFyIGNvdW50UmVxdWVzdCA9IGluZGV4LmNv
dW50KCk7CisgICAgY291bnRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBkZWJ1ZygiQ291bnQgaXM6ICIgKyBjb3VudFJlcXVlc3QucmVzdWx0KTsKKyAgICB9CisKKyAg
ICB2YXIgY3Vyc29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsKKyAgICBjdXJzb3JSZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3Vyc29yID0gY3Vyc29y
UmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmICghY3Vyc29yKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGRlYnVnKCJDdXJzb3IgYXQgcmVjb3JkOiAiICsgY3Vyc29yLmtleSArICIg
LyAiICsgY3Vyc29yLnByaW1hcnlLZXkpOworICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAg
ICB9CisgICAgY3Vyc29yUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICBk
ZWJ1ZygiVW5leHBlY3RlZCBlcnJvciBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IiKTsKKyAg
ICAgICAgbG9nQ3Vyc29yKGN1cnNvclJlcXVlc3QucmVzdWx0KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0gCit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJE
ZWxldGVJbmRleDJEYXRhYmFzZSIsIDEpOworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBP
bGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBl
dmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVS
ZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAxKTsKKyAgICBvYmpl
Y3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAyKTsKKworICAgIGluZGV4ID0gb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoIlRlc3RJbmRleDEiLCAiYmFyIik7CisgICAgCisgICAgY2hlY2tJbmRleFZh
bHVlcygpOworICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKwor
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIik7CisgICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIGNvbnRpbnVlVGVz
dDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpIHsKKyAgICB2YXIgY3JlYXRlUmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiRGVsZXRlSW5kZXgyRGF0YWJhc2UiLCAyKTsK
KyAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGRlYnVnKCJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2
ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwor
CisgICAgICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHZl
cnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIG9i
amVjdFN0b3JlID0gdmVyc2lvblRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoIlRlc3RJbmRleDEiKTsKKyAg
ICAgICAgZGVidWcoIkRlbGV0ZWQgdGhlIGluZGV4Iik7CisgICAgICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5hYm9ydCgpOworICAgICAgICBkZWJ1ZygiQWJvcnRlZCB0aGUgdHJhbnNhY3Rpb24iKTsK
KworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBkZWJ1ZygiU2Vjb25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiBhYm9ydCIpOworICAgICAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlVGVzdDIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJTZWNv
bmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUi
KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJT
ZWNvbmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGVycm9yICIgKyBldmVudCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKSB7CisgICAg
dmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRlbGV0ZUluZGV4MkRh
dGFiYXNlIiwgMyk7CisgICAgY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBkZWJ1ZygiVGhpcmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5l
d1ZlcnNpb24pOworCisgICAgICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOworICAgICAgICBvYmplY3RTdG9yZSA9IHZlcnNpb25UcmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIGluZGV4ID0gb2JqZWN0
U3RvcmUuaW5kZXgoIlRlc3RJbmRleDEiKTsKKyAgICAKKyAgICAgICAgY2hlY2tJbmRleFZhbHVl
cygpOyAgICAKKyAgICAgICAgCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJUaGlyZCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAgICAgZG9u
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIlRoaXJkIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIlRoaXJkIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlb2JqZWN0c3RvcmUtMS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZGVsZXRlb2JqZWN0
c3RvcmUtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTBkZjc3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy9kZWxldGVvYmplY3RzdG9yZS0xLmpzCkBAIC0wLDAgKzEsMTM1IEBACitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGNyZWF0ZXMgYW4gb2JqZWN0IHN0b3JlIHRoZW4gcG9wdWxhdGVzIGl0
LCB0aGVuIGNvbW1pdHMgdGhhdCB0cmFuc2FjdGlvbi4gXAorSXQgdGhlbiBkZWxldGVzIGl0LCBi
dXQgYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uIFwKK0ZpbmFsbHkgaXQgY2hlY2tzIHRvIG1ha2Ug
c3VyZSBldmVyeXRoaW5nIGZyb20gc3RlcCAxIGlzIHRoZXJlIGFzIGV4cGVjdGVkLiIpOworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4
ZWREQi5vcGVuKCJEZWxldGVPYmplY3RTdG9yZTFEYXRhYmFzZSIsIDEpOworCitjcmVhdGVSZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkFMRVJU
OiAiICsgIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9s
ZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAg
dmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAg
dmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUg
PSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBvYmplY3RTdG9yZS5wdXQoIkFIIEFI
IEFIIEFIIEFIIiwgaSArICIgcHV0cyIpOworCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJv
cnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0
aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAg
ICBkYXRhYmFzZS5jbG9zZSgpOworICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgfQorCisg
ICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGdldENoZWNrZXIoZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIg
KyAiVmFsdWUgZ290dGVuIHdhcyAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdCk7Cit9CisKK2Z1bmN0
aW9uIGNvbnRpbnVlVGVzdDEoKQoreworICAgIHZhciBvcGVuUmVxdWVzdCA9IHdpbmRvdy5pbmRl
eGVkREIub3BlbigiRGVsZXRlT2JqZWN0U3RvcmUxRGF0YWJhc2UiLCAyKTsKKworICAgIG9wZW5S
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAiUmVxdWVzdCBlcnJvciAtICIgKyBldmVudCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0
Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiAr
ICJSZXF1ZXN0IHVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlJlcXVlc3QgdW5leHBlY3RlZCBzdWNjZXNzIC0g
IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIG9wZW5SZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDog
IiArICJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZl
cnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworICAgICAgICB2
YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gb3BlblJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAg
IHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHZhciBvYmplY3RT
dG9yZSA9IHZlcnNpb25UcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7
CisgICAgICAgIAorICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRGVsZXRpbmcgb2JqZWN0IHN0
b3JlIik7ICAgICAgICAKKyAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOworCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5hYm9ydCgpOworCisg
ICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJTZWNvbmQgdmVyc2lvbiBjaGFuZ2UgdHJhbnNh
Y3Rpb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKKyAgICAgICAgICAg
IGRhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxF
UlQ6ICIgKyAiU2Vjb25kIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29t
cGxldGUiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJBTEVSVDogIiArICJTZWNvbmQgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3Ig
LSAiICsgZXZlbnQpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRl
c3QyKCkKK3sKKyAgICB2YXIgb3BlblJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRl
bGV0ZU9iamVjdFN0b3JlMURhdGFiYXNlIiwgMSk7CisKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlJlcXVlc3Qg
dW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cisg
ICAgb3BlblJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIlJlcXVlc3QgdW5leHBlY3RlZCBibG9ja2VkIC0gIiArIGV2ZW50KTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVxdWVzdCB1
bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0
aW9uIC0gU3RhcnRpbmcgZmluYWwgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNl
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJh
c2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworICAgIAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDsgKytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkg
KyAiIHB1dHMiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsK
KyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZpbmFsIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAg
ICAgZGVidWcoIkFMRVJUOiAiICsgIkZpbmFsIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJGaW5h
bCB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZG91YmxlLWFib3J0LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9kb3VibGUtYWJvcnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgyNTlkYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZG91
YmxlLWFib3J0LmpzCkBAIC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgYWJv
cnRzIHRoZSBzYW1lIHRyYW5zYWN0aW9uIHR3aWNlLCBtYWtpbmcgdGhlIGFwcHJvcHJpYXRlIGV4
Y2VwdGlvbiBpcyB0aHJvd24uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
fQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIGNy
ZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkRvdWJsZUFib3J0VGVzdERhdGFi
YXNlIiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xk
IHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZl
bnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVx
dWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0
OworCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLmFib3J0KCk7CisgICAgdHJ5IHsKKyAgICAgICAg
dmVyc2lvblRyYW5zYWN0aW9uLmFib3J0KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBk
ZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIGFib3J0IGZhaWxlZDogIiArIGUpOworICAgIH0KKwor
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25U
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9k
b3VibGUtb3Blbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNv
dXJjZXMvZG91YmxlLW9wZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDFkOGNhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvZG91YmxlLW9wZW4uanMKQEAgLTAsMCArMSwzMiBAQAorZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgcXVpY2tseSBvcGVuaW5nIHRoZSBzYW1l
IGRhdGFiYXNlIG11bHRpcGxlIHRpbWVzIGlzIHN1Y2Nlc3NmdWwgd2l0aG91dCB0aGUgYmFja2Vu
ZCBBU1NFUlRpbmcgb3IgY3Jhc2hpbmcuIik7CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtc2cgKyAiIjsK
K30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2lmICh0
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciByZXExID0gaW5kZXhlZERCLm9wZW4oInRlc3RE
QiIpOworcmVxMS5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgZGVidWcoIkZpcnN0IHJlcXVl
c3QgdW5leHBlY3RlZCBlcnJvciIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHJlcTIgPSBpbmRl
eGVkREIub3BlbigidGVzdERCIik7CityZXEyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
IGRlYnVnKCJTZWNvbmQgcmVxdWVzdCBkb25lIik7CisgICAgZG9uZSgpOworfQorcmVxMi5vbmVy
cm9yID0gZnVuY3Rpb24oKSB7CisgICAgZGVidWcoIlNlY29uZCByZXF1ZXN0IHVuZXhwZWN0ZWQg
ZXJyb3IiKTsKKyAgICBkb25lKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2dldC1pbmRleC1mYWlsdXJlcy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvZ2V0LWluZGV4LWZhaWx1
cmVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxOGEyZGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2dldC1pbmRleC1mYWlsdXJlcy5qcwpAQCAtMCwwICsxLDExNCBAQAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBj
YWxsaW5nIElEQk9iamVjdFN0b3JlLmluZGV4KCkuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisK
K3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUdldEluZGV4RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCitjcmVhdGVS
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIklu
aXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24g
KyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNp
b25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2Ug
PSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNy
ZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgiVGVzdEluZGV4IiwgImZvbyIpOworICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgdHJhbnNhY3Rpb24g
PSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7Cisg
ICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOworCisgICAgdmFyIGluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoIlRlc3RJbmRleCIp
OworICAgIGRlYnVnKCJHb3QgYW4gaW5kZXggYXMgZXhwZWN0ZWQ6ICIgKyBpbmRleCk7CisKKyAg
ICB0cnkgeworICAgICAgICBvYmplY3RTdG9yZS5pbmRleChudWxsKTsKKyAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgZGVidWcoIkZhaWxlZCB0byBnZXQgYW4gaW5kZXggd2l0aCBhIG51bGwgbmFt
ZSIpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIG9iamVjdFN0b3JlLmluZGV4KCJEb2Vz
Tm90RXhpc3RkZXgiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkZhaWxlZCB0
byBnZXQgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0Iik7CisgICAgfQorCisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJyZWFkb25s
eSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAg
ICAgY29udGludWVUZXN0MigpOworICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgIH0KKwor
ICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1
ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAg
ICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQoreworICAg
IHZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUdldEluZGV4RmFpbHVyZXNEYXRhYmFzZSIsIDIpOworICAgIGNyZWF0ZVJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIlNlY29uZCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICAgICAgdmFyIHZlcnNpb25UcmFu
c2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIHZhciBkYXRhYmFz
ZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IHZlcnNp
b25UcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIGRh
dGFiYXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgCisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4Iik7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBnZXQg
YW4gaW5kZXggZnJvbSBhIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgIH0gICAgICAg
IAorICAgICAgICAgICAgCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJTZWNvbmQgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJTZWNvbmQgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICAgICAgZGVidWcoIlNlY29uZCB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy9nZXQta2V5cmFuZ2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2dldC1rZXlyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kYjcwMjU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9nZXQta2V5cmFuZ2UuanMKQEAgLTAsMCArMSwx
NjYgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZXhlcmNpc2VzIElEQk9iamVjdFN0b3JlLmdl
dCgpIHdpdGggYW4gSURCS2V5UmFuZ2UgYXMgdGhlIHBhcmFtZXRlci4iKTsKKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Bl
bigiR2V0S2V5UmFuZ2VEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCit2YXIgZGF0ZTEg
PSBuZXcgRGF0ZSgiMTk1NS0xMS0wNVQwMDowMDowMCIpOwordmFyIGRhdGUyID0gbmV3IERhdGUo
IjE5NTUtMTEtMTJUMTg6MDA6MDAiKTsKK3ZhciBkYXRlMyA9IG5ldyBEYXRlKCIyMDE1LTEwLTIx
VDE2OjAwOjAwIik7CisgICAgCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSBuZWVk
ZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNy
ZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVz
dWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIG9iamVjdFN0b3JlLnB1dCgiRmx1eCBjYXBhY2l0b3Ii
LCBkYXRlMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJGaXNoIHVuZGVyIHRoZSBzZWEiLCBkYXRl
Mik7CisgICAgb2JqZWN0U3RvcmUucHV0KCJIb3ZlcmJvYXJkcyIsIGRhdGUzKTsKKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiXCIi
ICsgaSArICJcIiIsIGkpOworCisgICAgb2JqZWN0U3RvcmUucHV0KCJQb3NJbmYiLCBJbmZpbml0
eSk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJOZWdJbmYiLCAtSW5maW5pdHkpOworCisgICAgb2Jq
ZWN0U3RvcmUucHV0KCJBIiwgIkEiKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoIkFzIiwgIkFzIik7
CisgICAgb2JqZWN0U3RvcmUucHV0KCJBUyIsICJBUyIpOworICAgIG9iamVjdFN0b3JlLnB1dCgi
YSIsICJhIik7CisKKyAgICBvYmplY3RTdG9yZS5wdXQoImFycmF5IDEiLCBbMSwgImhlbGxvIl0p
OworICAgIG9iamVjdFN0b3JlLnB1dCgiYXJyYXkgMiIsIFsyLCAiZ29vZGJ5ZSJdKTsKKyAgICBv
YmplY3RTdG9yZS5wdXQoImFycmF5IDMiLCBbXSk7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsg
IkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Cisg
ICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9y
IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKwordmFyIG9iamVjdFN0b3Jl
OworCitmdW5jdGlvbiB0ZXN0R2V0KGtleVJhbmdlKSB7CisgICAgdmFyIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5nZXQoa2V5UmFuZ2UpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlN1Y2Nlc3MgZ2V0dGluZyBrZXlS
YW5nZSBbIiArIGtleVJhbmdlLmxvd2VyICsgIiAoIiArIChrZXlSYW5nZS5sb3dlck9wZW4gPyAi
T3BlbiIgOiAiQ2xvc2VkIikgKyAiKSwgIiArIGtleVJhbmdlLnVwcGVyICsgIiAoIiArIChrZXlS
YW5nZS51cHBlck9wZW4gPyAiT3BlbiIgOiAiQ2xvc2VkIikgKyAiKV0iKTsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIlJlc3VsdCBpcyAiICsgcmVxdWVzdC5yZXN1bHQpOworICAgIH0KKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZygiQUxF
UlQ6ICIgKyAiVW5leHBlY3RlZCBlcnJvciBnZXR0aW5nIGtleVJhbmdlIFsiICsga2V5UmFuZ2Uu
bG93ZXIgKyAiICgiICsga2V5UmFuZ2UubG93ZXJPcGVuICsgIiksICIgKyBrZXlSYW5nZS51cHBl
ciArICIgKCIgKyBrZXlSYW5nZS51cHBlck9wZW4gKyAiKV0iKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGNvbnRpbnVlVGVzdDEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRy
YW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICBvYmplY3RTdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIHRl
c3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtMSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFu
Z2UubG93ZXJCb3VuZCgtMSwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJC
b3VuZCgwKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5sb3dlckJvdW5kKDAsIHRydWUpKTsK
KyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmxvd2VyQm91bmQoMC4xKSk7CisgICAgdGVzdEdldChJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDAuMSwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFu
Z2UubG93ZXJCb3VuZCg5OSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCg5
OSwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCg5OS4xKSk7Cisg
ICAgdGVzdEdldChJREJLZXlSYW5nZS5sb3dlckJvdW5kKDk5LjEsIHRydWUpKTsKKyAgICAKKyAg
ICB0ZXN0R2V0KElEQktleVJhbmdlLnVwcGVyQm91bmQoMTAwKSk7CisgICAgdGVzdEdldChJREJL
ZXlSYW5nZS51cHBlckJvdW5kKDEwMCwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCg5OSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OSwg
dHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OC45OTk5OSkpOwor
ICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OC45OTk5OSwgdHJ1ZSkpOworICAg
IHRlc3RHZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCg5OCkpOworICAgIHRlc3RHZXQoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCg5OCwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCgwKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS51cHBlckJvdW5kKDAsIHRydWUp
KTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdlLnVwcGVyQm91bmQoLTAuMSkpOworICAgIHRlc3RH
ZXQoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgtMC4xLCB0cnVlKSk7CisgICAgCisgICAgdGVzdEdl
dChJREJLZXlSYW5nZS5ib3VuZCgyLjUsIDMuNSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2Uu
Ym91bmQoLTAuNSwgMC41KSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCg5OC41LCA5
OS41KSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCgtMSwgMCkpOworICAgIHRlc3RH
ZXQoSURCS2V5UmFuZ2UuYm91bmQoLTEsIDAsIHRydWUpKTsKKyAgICB0ZXN0R2V0KElEQktleVJh
bmdlLmJvdW5kKC0xLCAwLCBmYWxzZSwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2Uu
Ym91bmQoLTEsIDAsIHRydWUsIHRydWUpKTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5k
KDMsIDQpKTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKDMsIDQsIHRydWUpKTsKKyAg
ICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKDMsIDQsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVz
dEdldChJREJLZXlSYW5nZS5ib3VuZCgzLCA0LCB0cnVlLCB0cnVlKSk7CisgICAgdGVzdEdldChJ
REJLZXlSYW5nZS5ib3VuZCg5OSwgMTAwKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3Vu
ZCg5OSwgMTAwLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCg5OSwgMTAw
LCBmYWxzZSwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoOTksIDEwMCwg
dHJ1ZSwgdHJ1ZSkpOworCisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwg
ImEiKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVl
KSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCBmYWxzZSwg
dHJ1ZSkpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksICJhIiwgdHJ1
ZSwgdHJ1ZSkpOworCisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZCgiQVMiLCAiYSIpKTsK
KyAgICB0ZXN0R2V0KElEQktleVJhbmdlLmJvdW5kKCJBUyIsICJhIiwgdHJ1ZSkpOworICAgIHRl
c3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoIkFTIiwgImEiLCBmYWxzZSwgdHJ1ZSkpOworICAgIHRl
c3RHZXQoSURCS2V5UmFuZ2UuYm91bmQoIkFTIiwgImEiLCB0cnVlLCB0cnVlKSk7CisgICAgCisg
ICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgW10pKTsKKyAgICB0ZXN0R2V0
KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCBbXSwgdHJ1ZSkpOworICAgIHRlc3RHZXQoSURC
S2V5UmFuZ2UuYm91bmQoSW5maW5pdHksIFtdLCBmYWxzZSwgdHJ1ZSkpOworICAgIHRlc3RHZXQo
SURCS2V5UmFuZ2UuYm91bmQoSW5maW5pdHksIFtdLCB0cnVlLCB0cnVlKSk7CisKKyAgICB0ZXN0
R2V0KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIpKTsKKyAgICB0ZXN0R2V0KElEQktl
eVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUpKTsKKyAgICB0ZXN0R2V0KElEQktleVJh
bmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJL
ZXlSYW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVlLCB0cnVlKSk7CisKKyAgICB0ZXN0R2V0
KElEQktleVJhbmdlLmJvdW5kKEluZmluaXR5LCAiYSIpKTsKKyAgICB0ZXN0R2V0KElEQktleVJh
bmdlLmJvdW5kKEluZmluaXR5LCAiYSIsIHRydWUpKTsKKyAgICB0ZXN0R2V0KElEQktleVJhbmdl
LmJvdW5kKEluZmluaXR5LCAiYSIsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlS
YW5nZS5ib3VuZChJbmZpbml0eSwgImEiLCB0cnVlLCB0cnVlKSk7CisKKyAgICB0ZXN0R2V0KElE
QktleVJhbmdlLmJvdW5kKGRhdGUxLCBkYXRlMykpOworICAgIHRlc3RHZXQoSURCS2V5UmFuZ2Uu
Ym91bmQoZGF0ZTEsIGRhdGUzLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5ib3Vu
ZChkYXRlMSwgZGF0ZTMsIGZhbHNlLCB0cnVlKSk7CisgICAgdGVzdEdldChJREJLZXlSYW5nZS5i
b3VuZChkYXRlMSwgZGF0ZTMsIHRydWUsIHRydWUpKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5v
bmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInJl
YWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAgICAgICBk
b25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkb25seSB0cmFuc2FjdGlvbiBj
b21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25l
cnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFk
b25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYmRh
dGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjIxMTg2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVj
dHN0b3JlLWZhaWx1cmVzLmpzCkBAIC0wLDAgKzEsMTQwIEBACitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcg
SURCRGF0YWJhc2UuZGVsZXRlT2JqZWN0U3RvcmUoKSIpOworCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJEYXRh
YmFzZURlbGV0ZU9iamVjdFN0b3JlRmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNl
OworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1Zl
cnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJh
bnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBv
YmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUi
KTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworCisg
ICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgfQorCisg
ICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9
IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7Cisg
ICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXoiLCAiZm9vIik7
CisKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1Zygi
QUxFUlQ6ICIgKyAicmVhZHdyaXRlIHB1dCBzdWNjZXNzIC0gYWJvdXQgdG8gdHJ5IHRvIGRlbGV0
ZSBhbiBvYmplY3RzdG9yZSIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZGF0YWJhc2Uu
ZGVsZXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJGYWlsZWQgdG8gZGVsZXRlT2JqZWN0
U3RvcmUgd2l0aG91dCBhIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gLSAiICsgZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkd3JpdGUgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFu
c2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkYXRh
YmFzZS5jbG9zZSgpOworICAgICAgICBjb250aW51ZVRlc3QyKCk7CisgICAgfQorCisgICAgdHJh
bnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVS
VDogIiArICJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQor
eworICAgIHZhciBvcGVuUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCRGF0YWJh
c2VEZWxldGVPYmplY3RTdG9yZUZhaWx1cmVzRGF0YWJhc2UiLCAyKTsKKworICAgIG9wZW5SZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIg
KyAiUmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAi
ICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJSZXF1
ZXN0IHVuZXhwZWN0ZWQgc3VjY2VzcyAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKKyAgICAKKyAgICAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IG9w
ZW5SZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgICAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVj
dFN0b3JlKCJOb25leGlzdGVudE9iamVjdFN0b3JlIik7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBkZWxldGVPYmplY3RTdG9y
ZSB3aXRoIGEgbm9uLWV4aXN0ZW50IG9iamVjdHN0b3JlIC0gIiArIGUpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gU3BpbiB0aGUgdHJhbnNhY3Rpb24gd2l0aCBnZXQgcmVxdWVzdHMgdG8ga2Vl
cCBpdCBhbGl2ZSBsb25nIGVub3VnaCBmb3IgdGhlIHNldFRpbWVvdXQgdG8gZmlyZS4KKyAgICAg
ICAgdmFyIG9iamVjdFN0b3JlID0gdmVyc2lvblRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgdmFyIGNhbkZpbmlzaCA9IGZhbHNlOworICAgICAgICB2
YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmdldCgi
Zm9vIikub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjYW5G
aW5pc2gpCisgICAgICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBzcGluR2V0KCk7CisgICAgICAgIAorICAgICAgICAvLyBBZnRlciB0
aGUgdmVyc2lvbkNoYW5nZSB0cmFuc2FjdGlvbiBiZWNvbWVzIGluYWN0aXZlLCBidXQgd2hpbGUg
aXQncyBzdGlsbCBpbi1wcm9ncmVzcywgdHJ5IHRvIGRlbGV0ZSB0aGUgb2JqZWN0c3RvcmUKKyAg
ICAgICAgdmFyIHRyeUluYWN0aXZlRGVsZXRlID0gZnVuY3Rpb24oKSAKKyAgICAgICAgeworICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBkYXRhYmFzZS5kZWxldGVPYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGRlbGV0ZU9iamVjdFN0b3JlIHdp
dGggYW4gaW4tcHJvZ3Jlc3MgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB0aGF0IGlzIGluYWN0
aXZlIC0gIiArIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FuRmluaXNoID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2V0VGltZW91dCh0cnlJbmFjdGl2ZURl
bGV0ZSwgMCk7CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlNlY29uZCB2ZXJzaW9u
IGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgIH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25k
IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgIH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHZl
cnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwor
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJkYXRhYmFzZS10
cmFuc2FjdGlvbi1mYWlsdXJlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9yZXNvdXJjZXMvaWRiZGF0YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJmMzI3OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRiZGF0YWJh
c2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMuanMKQEAgLTAsMCArMSw4NSBAQAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBj
YWxsaW5nIElEQkRhdGFiYXNlLnRyYW5zYWN0aW9uKCkiKTsKKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCRGF0
YWJhc2VUcmFuc2FjdGlvbkZhaWx1cmVzRGF0YWJhc2UiKTsKK3ZhciBkYXRhYmFzZTsKKworY3Jl
YXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVn
KCJBTEVSVDogIiArICJVcGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xk
VmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2
YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBk
YXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0
YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJmb28iLCAiYmFyIik7CisKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicHV0IEZB
SUxFRCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgCisgICAgdHJ5
IHsKKyAgICAgICAgZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFk
b25seSIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFp
bGVkIHRvIHN0YXJ0IGEgdHJhbnNhY3Rpb24gd2hpbGUgYSB2ZXJzaW9uQ2hhbmdlIHRyYW5zYWN0
aW9uIHdhcyBpbiBwcm9ncmVzcyAtICIgKyBlKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDog
IiArICJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gY29tcGxldGVkIik7CisgICAgICAgIGNvbnRpbnVlVGVzdCgpOworICAgIH0KKworICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ZGVidWcoIkFMRVJUOiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAi
ICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51
ZVRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIGRhdGFiYXNlLnRyYW5zYWN0aW9uKFtdLCAi
cmVhZG9ubHkiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsg
IkZhaWxlZCB0byBzdGFydCBhIHRyYW5zYWN0aW9uIHdpdGggYW4gZW1wdHkgc2V0IG9mIG9iamVj
dCBzdG9yZXMgLSAiICsgZSk7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgZGF0YWJhc2Uu
dHJhbnNhY3Rpb24oIk5vbmV4aXN0ZW50T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBzdGFydCBh
IHRyYW5zYWN0aW9uIHRvIGEgbm9uZXhpc3RlbnQgb2JqZWN0IHN0b3JlIC0gIiArIGUpOworICAg
IH0KKworICAgIHRyeSB7CisgICAgICAgIGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0
U3RvcmUiLCAiYmxhaGJsYWgiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgIkZhaWxlZCB0byBzdGFydCBhIHRyYW5zYWN0aW9uIHdpdGggYW4gaW52YWxpZCBt
b2RlIC0gIiArIGUpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRhdGFiYXNlLnRyYW5z
YWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAidmVyc2lvbmNoYW5nZSIpOworICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGV4cGxpY2l0bHkgc3Rh
cnQgYSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIC0gIiArIGUpOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgICAgICBkYXRhYmFzZS50cmFu
c2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJGYWlsZWQgdG8gZXhwbGljaXRseSBzdGFydCBh
IHRyYW5zYWN0aW9uIHdpdGggdGhlIGNsb3NlIHBlbmRpbmcgZmxhZyBzZXQgLSAiICsgZSk7Cisg
ICAgfQorICAgIAorICAgIGRvbmUoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRiaW5kZXgtcHJvcGVydGllcy1iYXNpYy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRiaW5k
ZXgtcHJvcGVydGllcy1iYXNpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jZDc1NTBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJpbmRleC1wcm9wZXJ0aWVzLWJhc2ljLmpzCkBAIC0wLDAg
KzEsOTQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGdldHRpbmcgYmFzaWMgcHJvcGVydGll
cyBvbiBhbiBJREJJbmRleC4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlv
biBnb2wobWVzc2FnZSkKK3sKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyBtZXNzYWdlKTsKK30KKwor
ZnVuY3Rpb24gbG9nSW5kZXgoaW5kZXgpCit7CisgICAgZGVidWcoIkFMRVJUOiAiICsgaW5kZXgu
bmFtZSk7CisgICAgZGVidWcoIkFMRVJUOiAiICsgaW5kZXgub2JqZWN0U3RvcmUpOworICAgIGRl
YnVnKCJBTEVSVDogIiArIGluZGV4Lm9iamVjdFN0b3JlLm5hbWUpOworICAgIGRlYnVnKCJBTEVS
VDogIiArIGluZGV4LmtleVBhdGgpOworICAgIGRlYnVnKCJBTEVSVDogIiArIGluZGV4Lm11bHRp
RW50cnkpOworICAgIGRlYnVnKCJBTEVSVDogIiArIGluZGV4LnVuaXF1ZSk7Cit9CisKK3ZhciBj
cmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJJbmRleFByb3BlcnRpZXNC
YXNpY0RhdGFiYXNlIiwgMSk7Cit2YXIgZGF0YWJhc2U7CisKK3ZhciBpbmRleGVzID0gbmV3IEFy
cmF5KCk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZl
cnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQu
bmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVz
dC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAg
dmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOworICAgIAorICAgIGluZGV4ZXMucHVzaChvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgi
VGVzdEluZGV4MSIsICJmb28iKSk7CisgICAgaW5kZXhlcy5wdXNoKG9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCJUZXN0SW5kZXgyIiwgImZvbyIsIHsgdW5pcXVlOiBmYWxzZSwgbXVsdGlFbnRyeTog
ZmFsc2UgfSkpOworICAgIGluZGV4ZXMucHVzaChvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVz
dEluZGV4MyIsICJmb28iLCB7IHVuaXF1ZTogdHJ1ZSwgbXVsdGlFbnRyeTogZmFsc2UgfSkpOwor
ICAgIGluZGV4ZXMucHVzaChvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NCIsICJm
b28iLCB7IHVuaXF1ZTogZmFsc2UsIG11bHRpRW50cnk6IHRydWUgfSkpOworICAgIGluZGV4ZXMu
cHVzaChvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4NSIsICJmb28iLCB7IHVuaXF1
ZTogdHJ1ZSwgbXVsdGlFbnRyeTogdHJ1ZSB9KSk7CisgICAgaW5kZXhlcy5wdXNoKG9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXg2IiwgWyAiZm9vIiBdKSk7CisgICAgaW5kZXhlcy5w
dXNoKG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXg3IiwgWyAiZm9vIiwgImJhciIg
XSkpOworCisgICAgZm9yIChpbmRleCBpbiBpbmRleGVzKQorICAgICAgICBsb2dJbmRleChpbmRl
eGVzW2luZGV4XSk7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVz
dDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAg
dmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIs
ICJyZWFkb25seSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIGxvZ0luZGV4KG9iamVjdFN0b3JlLmluZGV4
KCJUZXN0SW5kZXgxIikpOworICAgIGxvZ0luZGV4KG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5k
ZXgyIikpOworICAgIGxvZ0luZGV4KG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXgzIikpOwor
ICAgIGxvZ0luZGV4KG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXg0IikpOworICAgIGxvZ0lu
ZGV4KG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXg1IikpOworICAgIGxvZ0luZGV4KG9iamVj
dFN0b3JlLmluZGV4KCJUZXN0SW5kZXg2IikpOworICAgIGxvZ0luZGV4KG9iamVjdFN0b3JlLmlu
ZGV4KCJUZXN0SW5kZXg3IikpOworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkb25seSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKwor
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBk
ZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZG9ubHkgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2lkYm9iamVjdHN0b3JlLWNsZWFyLTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWNsZWFyLTEuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhMjczMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRib2JqZWN0c3RvcmUt
Y2xlYXItMS5qcwpAQCAtMCwwICsxLDEwNyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjcmVh
dGVzIGFuIG9iamVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdC4gXAorSXQgdGhlbiBjbGVhcnMg
aXQgYW5kIG1ha2VzIHN1cmUgaXQgaGFzIG5vdGhpbmcgbGVmdCBpbiBpdC4iKTsKKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIu
b3BlbigiSURCT2JqZWN0U3RvcmVDbGVhckRhdGFiYXNlIiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIg
KyAiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVy
c2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIg
dmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIg
ZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRh
dGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiLCB7IGF1dG9JbmNyZW1l
bnQ6IHRydWUgfSk7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjEiKTsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOworICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjQiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
NSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2Iik7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjciKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9i
amVjdFN0b3JlLnB1dCgiYmFyOCIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0
KCJiYXI5Iik7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEo
KTsKKyAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDog
IiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24g
Z2V0Q2hlY2tlcihldmVudCkgeworICAgIGRlYnVnKCJBTEVSVDogIiArICJWYWx1ZSBnb3R0ZW4g
d2FzICIgKyBldmVudC50YXJnZXQucmVzdWx0KTsKK30KKworZnVuY3Rpb24gY29udGludWVUZXN0
MSgpCit7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJP
YmplY3RTdG9yZUNsZWFyRGF0YWJhc2UiLCAxKTsKKworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVxdWVzdCB1
bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAg
ICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1
ZygiQUxFUlQ6ICIgKyAiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJSZXF1ZXN0IHVu
ZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rp
b24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0
YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAg
ICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOworICAgIAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDE7IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0
KGkpOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVn
KCJBTEVSVDogIiArICJPYmplY3Qgc3RvcmUgY2xlYXJlZCIpOworICAgICAgICAgICAgdmFyIG5l
d1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9yZS5nZXQoaSk7CisgICAgICAg
ICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsKKyAgICAgICAgICAg
IH0gICAgCisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJSZWFkd3JpdGUgdHJh
bnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJSZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBl
dmVudCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9i
amVjdHN0b3JlLWNsZWFyLTIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWNsZWFyLTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDMwNjk2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRib2JqZWN0c3RvcmUtY2xlYXIt
Mi5qcwpAQCAtMCwwICsxLDE2MyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjcmVhdGVzIGFu
IG9iamVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdCwgdGhlbiBjb21taXRzIHRoYXQgdHJhbnNh
Y3Rpb24uIFwKK0l0IHRoZW4gY2xlYXJzIGl0LCBidXQgYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24u
IFwKK0ZpbmFsbHkgaXQgY2hlY2tzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGZyb20gc3RlcCAx
IGlzIHN0aWxsIGluIHRoZXJlLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
K30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBj
cmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFy
MkRhdGFiYXNlIiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAi
ICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3Jl
YXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CisgICAgdmFyIHJl
cXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjEiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCgiYmFyMiIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJi
YXIzIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICB2
YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNSIpOworICAgIHZhciByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KCJiYXI2Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjciKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyOCIpOwor
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI5Iik7CisKKyAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25U
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICAgICAgZGF0YWJhc2UuY2xv
c2UoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0Q2hlY2tlcihldmVudCkgeworICAg
IGRlYnVnKCJBTEVSVDogIiArICJWYWx1ZSBnb3R0ZW4gd2FzICIgKyBldmVudC50YXJnZXQucmVz
dWx0KTsKK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIG9wZW5SZXF1
ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFyMkRhdGFiYXNl
IiwgMSk7CisKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIgKyBl
dmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgb3BlblJlcXVlc3Qub25ibG9ja2Vk
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlJlcXVlc3Qg
dW5leHBlY3RlZCBibG9ja2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0K
KyAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVxdWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQg
LSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgb3BlblJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsg
IlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRpbmcgcmVhZHdyaXRl
IHRyYW5zYWN0aW9uIik7CisgICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0
T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICAgICAg
dmFyIHJlcXVlc3Q7CisgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDk7ICsraSkgeworICAg
ICAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpKTsKKyAgICAgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmNsZWFyKCk7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiT2JqZWN0IHN0
b3JlIGNsZWFyZWQsIG1ha2luZyBzdXJlIGl0cyBhbGwgZ29uZS4iKTsKKyAgICAgICAgICAgIHZh
ciBuZXdSZXF1ZXN0czsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDk7ICsraSkg
eworICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RzID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAg
ICAgICAgICAgICAgIG5ld1JlcXVlc3RzLm9uc3VjY2VzcyA9IGdldENoZWNrZXI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlJ2xsIGJlIG9uIHRoZSBsYXN0
IHJlcXVlc3QgaGVyZSwgY2FuIGp1c3Qgb3ZlcnJpZGUgaXQuCisgICAgICAgICAgICBuZXdSZXF1
ZXN0cy5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGdldENo
ZWNrZXIoZXZlbnQpOworICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEp1c3QgZm9yIGZ1biBj
bGVhciBpdCB0d2ljZSwgd29uJ3QgY2hhbmdlIGFueXRoaW5nCisgICAgICAgIG9iamVjdFN0b3Jl
LmNsZWFyKCk7CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVhZHdyaXRlIHRyYW5zYWN0aW9u
IGFib3J0Iik7CisgICAgICAgICAgICBjb250aW51ZVRlc3QyKCk7CisgICAgICAgIH0KKworICAg
ICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJSZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBj
b21wbGV0ZSIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdHJh
bnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1Zygi
QUxFUlQ6ICIgKyAiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsg
ZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5j
dGlvbiBjb250aW51ZVRlc3QyKCkKK3sKKyAgICB2YXIgb3BlblJlcXVlc3QgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ2xlYXIyRGF0YWJhc2UiLCAxKTsKKworICAgIG9w
ZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxF
UlQ6ICIgKyAiUmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2Nr
ZWQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVS
VDogIiArICJSZXF1ZXN0IHVuZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyBldmVudCk7Cisg
ICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU3VjY2VzcyBvcGVuaW5n
IGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyBmaW5hbCB0cmFuc2FjdGlvbiIpOworICAg
ICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICB2YXIgdHJh
bnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3
cml0ZSIpOworICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgCisgICAgICAgIHZhciByZXF1ZXN0OworICAgICAg
ICBmb3IgKHZhciBpID0gMTsgaSA8PSA5OyArK2kpIHsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5nZXQoaSk7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldENo
ZWNrZXI7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJSZWFkd3JpdGUgdHJh
bnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJSZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBl
dmVudCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9i
amVjdHN0b3JlLWNvdW50LTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWNvdW50LTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGUwMjZlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRib2JqZWN0c3RvcmUtY291bnQt
MS5qcwpAQCAtMCwwICsxLDg4IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4ZXJjaXNlcyB2
YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUuY291bnQoKSIpOworCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJ
REJPYmplY3RTdG9yZUNvdW50MURhdGFiYXNlIiwgMSk7Cit2YXIgZGF0YWJhc2U7Cit2YXIgb2Jq
ZWN0U3RvcmU7CisKK2Z1bmN0aW9uIGdldENvdW50KGFyZykKK3sKKyAgICB2YXIgcmVxdWVzdDsK
KyAgICBpZiAoYXJnID09IHVuZGVmaW5lZCkKKyAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmNvdW50KCk7CisgICAgZWxzZQorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY291bnQo
YXJnKTsKKyAgICAKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBkZWJ1ZygiQUxFUlQ6ICIgKyAiQ291bnQgaXM6ICIgKyByZXF1ZXN0LnJlc3VsdCk7CisgICAg
fQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGRlYnVn
KCJBTEVSVDogIiArICJVbmV4cGVjdGVkIGVycm9yIGdldHRpbmcgY291bnQ6ICIgKyBlcnJvcik7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGdldENvdW50cygpCit7Cisg
ICAgZ2V0Q291bnQoKTsKKyAgICBnZXRDb3VudChJREJLZXlSYW5nZS5ib3VuZCgzLCA2KSk7ICAg
IAorICAgIGdldENvdW50KElEQktleVJhbmdlLmJvdW5kKDMsIDYsIHRydWUsIGZhbHNlKSk7ICAg
IAorICAgIGdldENvdW50KElEQktleVJhbmdlLmJvdW5kKDMsIDYsIGZhbHNlLCB0cnVlKSk7Cisg
ICAgZ2V0Q291bnQoNyk7ICAgIAorfQorCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJn
ZXQucmVzdWx0OworICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUo
IlRlc3RPYmplY3RTdG9yZSIpOworICAgIAorICAgIG9iamVjdFN0b3JlLnB1dCgxLCAxKTsKKyAg
ICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoMiwgMik7CisgICAgZ2V0Q291bnRz
KCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDMsIDMpOworICAgIGdldENvdW50cygpOworICAgIG9i
amVjdFN0b3JlLnB1dCg0LCA0KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RTdG9yZS5w
dXQoNSwgNSk7CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDYsIDYpOwor
ICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCg3LCA3KTsKKyAgICBnZXRDb3Vu
dHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoOCwgOCk7CisgICAgZ2V0Q291bnRzKCk7CisgICAg
b2JqZWN0U3RvcmUucHV0KDksIDkpOworICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3Jl
LnB1dCgxMCwgMTApOworICAgIGdldENvdW50cygpOworCisgICAgLy8gRklYTUU6IE9uY2Ugb2Jq
ZWN0U3RvcmUuZGVsZXRlKCkgaXMgaW1wbGVtZW50ZWQsIGFsc28gdGVzdCBjb3VudHMgYWZ0ZXIg
ZGVsZXRpbmcgcHJldmlvdXMgcmVjb3Jkcy4KKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdy
YWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRib2JqZWN0c3RvcmUtY291bnQtZmFp
bHVyZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjgyYjk2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1
cmVzLmpzCkBAIC0wLDAgKzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzb21lIG9i
dmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3Rv
cmUuY291bnQoKS4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1
bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIgY3JlYXRlUmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3RvcmVDb3VudEZhaWx1cmVz
RGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFs
IHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBO
ZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJh
bnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFiYXNlID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVP
YmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhciIsICJmb28iKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5jb3VudChOYU4p
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJG
YWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUgd2l0aCBhbiBpbnZhbGlkIGtl
eSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkYXRhYmFzZS5kZWxldGVPYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAg
ICAgICAgb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0
IHN0b3JlIHRoYXQncyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICAvLyBS
ZWNyZWF0ZSB0aGUgb2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBoYXNlIDIu
CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7
ICAgIAorICAgIH0KKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVl
VGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7Cisg
ICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9y
ZSIsICJyZWFkb25seSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKworICAgIC8vIFNwaW4gdGhlIHRyYW5zYWN0aW9u
IHdpdGggZ2V0IHJlcXVlc3RzIHRvIGtlZXAgaXQgYWxpdmUgbG9uZyBlbm91Z2ggZm9yIHRoZSBz
ZXRUaW1lb3V0IHRvIGZpcmUuCisgICAgdmFyIGNhbkZpbmlzaCA9IGZhbHNlOworICAgIHZhciBz
cGluR2V0ID0gZnVuY3Rpb24oKSB7IAorICAgICAgICBvYmplY3RTdG9yZS5nZXQoImZvbyIpLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFjYW5GaW5pc2gpCisgICAg
ICAgICAgICAgICAgc3BpbkdldCgpOworICAgICAgICB9CisgICAgfQorICAgIHNwaW5HZXQoKTsK
KyAgICAKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGNvdW50IHJlY29y
ZHMgaW4gb2JqZWN0IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlIik7CisgICAg
ICAgIH0KKyAgICAgICAgY2FuRmluaXNoID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgc2V0VGlt
ZW91dChnZXRXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInJlYWRvbmx5
IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7
CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0
ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkb25seSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0xLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJvYmplY3RzdG9yZS1kZWxldGUt
MS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNlMzM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNl
cy9pZGJvYmplY3RzdG9yZS1kZWxldGUtMS5qcwpAQCAtMCwwICsxLDEzNyBAQAorZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBleGVyY2lzZXMgdmFyaW91cyB1c2VzIG9mIElEQk9iamVjdFN0b3JlLmRl
bGV0ZSgpIik7CisKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0
aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBs
b2dDb3VudCgpCit7CisgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLmNvdW50KCk7CisgICAgcmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgZGVidWcoIkNvdW50IGlzICIgKyBy
ZXEucmVzdWx0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Blbigi
SURCT2JqZWN0U3RvcmVEZWxldGUxRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKK3ZhciBv
YmplY3RTdG9yZTsKKwordmFyIGRhdGUxID0gbmV3IERhdGUoIjE5OTktMTItMjhUMjM6MDA6MDAi
KTsKK3ZhciBkYXRlMiA9IG5ldyBEYXRlKCIxOTk5LTEyLTI5VDIzOjAwOjAwIik7Cit2YXIgZGF0
ZTMgPSBuZXcgRGF0ZSgiMTk5OS0xMi0zMFQyMzowMDowMCIpOwordmFyIGRhdGU0ID0gbmV3IERh
dGUoIjE5OTktMTItMzFUMjM6MDA6MDAiKTsKK3ZhciBkYXRlNSA9IG5ldyBEYXRlKCIyMDAwLTAx
LTAxVDAwOjAwOjAwIik7Cit2YXIgZGF0ZTYgPSBuZXcgRGF0ZSgiMjAwMC0wMS0wMlQwMDowMDow
MCIpOwordmFyIGRhdGU3ID0gbmV3IERhdGUoIjIwMDAtMDEtMDNUMDA6MDA6MDAiKTsKK3ZhciBk
YXRlOCA9IG5ldyBEYXRlKCIyMDAwLTAxLTA0VDAwOjAwOjAwIik7CisKK2NyZWF0ZVJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiSW5pdGlhbCB1
cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3
IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5z
YWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgCisgICAgLy8gSnVzdCBmb3IgdGhlIGhlY2sg
b2YgaXQuCisgICAgb2JqZWN0U3RvcmUuZGVsZXRlKCJmb28iKTsKKyAgICBvYmplY3RTdG9yZS5w
dXQoImJvbyIsICJmb28iKTsKKyAgICBvYmplY3RTdG9yZS5kZWxldGUoImZvbyIpOworCisgICAg
b2JqZWN0U3RvcmUucHV0KCJib28iLCAiZm9vIik7CisgICAgb2JqZWN0U3RvcmUucHV0KCJib3Ai
LCAiZm9wIik7CisgICAgb2JqZWN0U3RvcmUucHV0KCJib3EiLCAiZm9xIik7CisgICAgb2JqZWN0
U3RvcmUucHV0KCJib3IiLCAiZm9yIik7CisgICAgb2JqZWN0U3RvcmUucHV0KCJib3MiLCAiZm9z
Iik7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgb2Jq
ZWN0U3RvcmUucHV0KCJudW1iZXIgIiArIGksIGkpOworCisgICAgb2JqZWN0U3RvcmUucHV0KCJk
YXRlIDEiLCBkYXRlMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDIiLCBkYXRlMik7Cisg
ICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDMiLCBkYXRlMyk7CisgICAgb2JqZWN0U3RvcmUucHV0
KCJkYXRlIDQiLCBkYXRlNCk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDUiLCBkYXRlNSk7
CisgICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDYiLCBkYXRlNik7CisgICAgb2JqZWN0U3RvcmUu
cHV0KCJkYXRlIDciLCBkYXRlNyk7CisgICAgb2JqZWN0U3RvcmUucHV0KCJkYXRlIDgiLCBkYXRl
OCk7CisKKyAgICBsb2dDb3VudCgpOworCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7
CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgIH0KKwor
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjb250aW51ZVRlc3QxKCkKK3sgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFz
ZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOworICAgIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisg
ICAgLy8gVGhlIHBhaXJzIG9mIHRoaW5ncyBpbiB0aGUgYXJyYXkgYXJlIHRoZSB0aGluZ3MgdG8g
ZGVsZXRlIGZvbGxvd2VkIGJ5IHRoZSBleHBlY3RlZCBkZWNyZWFzZSBpbiB0aGUgdG90YWwgY291
bnQgb2Ygb2JqZWN0cy4KKyAgICB2YXIgdGhpbmdzVG9EZWxldGUgPSBbCisgICAgICAgIGRhdGU4
LCAxLAorICAgICAgICBkYXRlOCwgMCwgCisgICAgICAgICJiYWx5aG9vIiwgMCwgCisgICAgICAg
IElEQktleVJhbmdlLmJvdW5kKGRhdGU2LCBkYXRlNywgdHJ1ZSwgdHJ1ZSksIDAsCisgICAgICAg
IElEQktleVJhbmdlLmJvdW5kKGRhdGU2LCBkYXRlNywgdHJ1ZSksIDEsCisgICAgICAgIElEQktl
eVJhbmdlLmJvdW5kKGRhdGU1LCBkYXRlNiwgZmFsc2UsIHRydWUpLCAxLAorICAgICAgICBJREJL
ZXlSYW5nZS5ib3VuZChkYXRlMSwgZGF0ZTYpLCA1LAorICAgICAgICBJREJLZXlSYW5nZS5ib3Vu
ZCgxLCA5OCksIDk4LCAKKyAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoImZvbyIsICJmb3MiLCB0
cnVlLCB0cnVlKSwgMworICAgIF07CisgICAgdmFyIGN1cnJlbnRUaGluZyA9IDA7CisgICAgCisg
ICAgdmFyIHJ1bkRlbGV0ZVRlc3RzID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGluZ3NUb0RlbGV0ZVtjdXJyZW50VGhpbmddKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKHRoaW5nc1RvRGVsZXRlW2N1cnJlbnRUaGlu
Z10pLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVidWcoIkRlbGV0ZWQg
XCIiICsgdGhpbmdzVG9EZWxldGVbY3VycmVudFRoaW5nXSArICJcIiwgYW5kIHRoZXJlIHNob3Vs
ZCBub3cgYmUgIiArIHRoaW5nc1RvRGVsZXRlW2N1cnJlbnRUaGluZyArIDFdICsgIiBsZXNzIHRo
aW5ncyB0b3RhbC4iKTsKKyAgICAgICAgICAgIGxvZ0NvdW50KCk7CisgICAgICAgICAgICBjdXJy
ZW50VGhpbmcgKz0gMjsKKyAgICAgICAgICAgIHJ1bkRlbGV0ZVRlc3RzKCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcnVuRGVsZXRlVGVzdHMoKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0K
KworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBkZWJ1ZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiAr
IGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3Jl
LWRlbGV0ZS0yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9pZGJvYmplY3RzdG9yZS1kZWxldGUtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mZTcyNzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJvYmplY3RzdG9yZS1kZWxldGUtMi5qcwpA
QCAtMCwwICsxLDExMSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBleGVyY2lzZXMgSURCT2Jq
ZWN0U3RvcmUuZGVsZXRlKCkgZm9sbG93ZWQgYnkgYW4gYWJvcnQgdG8gbWFrZSBzdXJlIHRoZSBk
ZWxldGUgaXMgdW4tZG9uZS4iKTsKKworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
K30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisK
K2Z1bmN0aW9uIGxvZ0NvdW50KCkKK3sKKyAgICB2YXIgcmVxID0gb2JqZWN0U3RvcmUuY291bnQo
KTsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IAorICAgICAgICBkZWJ1ZygiQ291
bnQgaXMgIiArIHJlcS5yZXN1bHQpOworICAgIH0KK30KKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4
ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZURlbGV0ZTJEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFi
YXNlOworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2
ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwor
CisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247
CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKS5wdXQoImJhciIsICJmb28iKTsKKworICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAg
IGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7ICAgCisg
ICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9y
ZSIsICJyZWFkd3JpdGUiKTsKKyAgICB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlIikuZGVsZXRlKCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgcmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKS5nZXQoImZvbyIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIkFmdGVyIGRlbGV0ZSwgcmVjb3JkIGZvciBc
ImZvb1wiIGhhcyB2YWx1ZTogIiArIHJlcXVlc3QucmVzdWx0KTsKKyAgICAgICAgICAgIHRyYW5z
YWN0aW9uLmFib3J0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2Fj
dGlvbiBhYm9ydGVkIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKKyAgICB9CisKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
InJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgIGRv
bmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9y
Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIo
KQoreyAgIAorICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0
T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKworICAgIHZhciByZXF1ZXN0ID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpLmdldCgiZm9vIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZygiUmVjb3JkIGZv
ciBcImZvb1wiIGhhcyBmaW5hbCB2YWx1ZTogIiArIHJlcXVlc3QucmVzdWx0KTsKKyAgICB9CisK
KyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoInJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBs
ZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBlcnJvciIpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvaWRib2JqZWN0c3RvcmUtZGVsZXRlLWZhaWx1cmVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJvYmplY3RzdG9yZS1kZWxldGUtZmFpbHVy
ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRjZDJhOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvaWRib2JqZWN0c3RvcmUtZGVsZXRlLWZhaWx1cmVzLmpzCkBAIC0wLDAgKzEsMTE3IEBACitk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFw
cGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUuZGVsZXRlKCkuIik7CisKKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4o
IklEQk9iamVjdFN0b3JlRGVsZXRlRmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNl
OworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisg
ICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Cisg
ICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9
IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworCisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVj
dFN0b3JlLmRlbGV0ZShOYU4pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJGYWlsZWQgdG8gZGVsZXRlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSB3aXRoIGFuIGlu
dmFsaWQga2V5Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGFiYXNlLmRlbGV0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoImZvbyIpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gZGVsZXRlIHJlY29yZCBmcm9tIG9i
amVjdCBzdG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAg
ICAvLyBSZWNyZWF0ZSB0aGUgb2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBo
YXNlIDIuCisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0
b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAi
Zm9vIik7ICAgIAorICAgIH0KKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisK
KyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVu
Y3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2Uu
dHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIpOworICAgIHZhciBvYmpl
Y3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAg
ICAKKyAgICB0cnkgeworICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoImZvbyIpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGRlbGV0ZSBhIHJlY29yZCBpbiBy
ZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKKyAgICB9CisgICAgCisgICAgdmFyIHRyYW5zYWN0aW9u
ID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsK
KyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlIik7CisKKyAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0
cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJl
LgorICAgIHZhciBjYW5GaW5pc2ggPSBmYWxzZTsKKyAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9u
KCkgeyAKKyAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGlmICghY2FuRmluaXNoKQorICAgICAgICAgICAgICAgIHNwaW5H
ZXQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzcGluR2V0KCk7CisKKyAgICB2YXIgdGVzdFdo
aWxlSW5hY3RpdmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9i
amVjdFN0b3JlLmRlbGV0ZSgiZm9vIik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgZGVidWcoIkZhaWxlZCB0byBkZWxldGUgcmVjb3JkIHdpdGggaW5hY3RpdmUgdHJhbnNhY3Rp
b24iKTsKKyAgICAgICAgfQorICAgICAgICBjYW5GaW5pc2ggPSB0cnVlOworICAgIH0KKyAgICAK
KyAgICBzZXRUaW1lb3V0KHRlc3RXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAg
ICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9i
amVjdHN0b3JlLWdldC1mYWlsdXJlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvaWRib2JqZWN0c3RvcmUtZ2V0LWZhaWx1cmVzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzN2UxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0
b3JlLWdldC1mYWlsdXJlcy5qcwpAQCAtMCwwICsxLDEwMiBAQAorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5n
IElEQk9iamVjdFN0b3JlLmdldCgpLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Zh
ciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUdl
dEZhaWx1cmVzRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKKworY3JlYXRlUmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJBTEVSVDogIiAr
ICJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJz
aW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2
ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5n
ZXQoTmFOKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAiRmFpbGVkIHRvIGdldCByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgd2l0aCBhbiBpbnZh
bGlkIGtleSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkYXRhYmFzZS5kZWxldGVP
YmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIAorICAgICAgICB0cnkgewor
ICAgICAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGdldCByZWNvcmQgZnJv
bSBvYmplY3Qgc3RvcmUgdGhhdCBoYXMgYmVlbiBkZWxldGVkIik7CisgICAgICAgIH0gCisKKyAg
ICAgICAgLy8gUmVjcmVhdGUgdGhlIG9iamVjdHN0b3JlIGJlY2F1c2Ugd2UnbGwgbmVlZCBpdCBp
biBwaGFzZSAyLgorICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiYmFy
IiwgImZvbyIpOyAgICAKKyAgICB9CisgICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJv
cnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0
aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAg
ICBjb250aW51ZVRlc3QxKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBl
dmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVz
dDEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0
T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAvLyBTcGluIHRoZSB0
cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdo
IGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgorICAgIHZhciBjYW5GaW5pc2ggPSBmYWxzZTsK
KyAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgb2JqZWN0U3RvcmUuZ2V0
KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghY2FuRmlu
aXNoKQorICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBz
cGluR2V0KCk7CisKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFpbGVkIHRvIGdl
dCByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgd2hpbGUgdGhlIHRyYW5zYWN0aW9uIGlzIGluYWN0
aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgY2FuRmluaXNoID0gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgc2V0VGltZW91dChnZXRXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAi
ICsgInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJyZWFkb25seSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rp
b24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiAr
ICJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXIt
ZmFpbHVyZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE3MGVkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRib2JqZWN0c3RvcmUt
cHV0LWFuZC1jbGVhci1mYWlsdXJlcy5qcwpAQCAtMCwwICsxLDEyNCBAQAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBj
YWxsaW5nIElEQk9iamVjdFN0b3JlLnB1dCgpIGFuZCBJREJPYmplY3RTdG9yZS5jbGVhcigpLiIp
OworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgp
Cit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZVB1dEFuZENsZWFyRmFpbHVyZXNEYXRhYmFz
ZSIsIDEpOwordmFyIGRhdGFiYXNlOworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJn
ZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0
b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgiYmFyIiwgImZvbyIpOworCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgTmFOKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiRmFp
bGVkIHRvIHB1dCByZWNvcmQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhbiBpbnZhbGlkIGtleSIp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkYXRhYmFzZS5kZWxldGVPYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAg
ICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8g
b2JqZWN0IHN0b3JlIHRoYXQgaGFzIGJlZW4gZGVsZXRlZCIpOworICAgICAgICB9IAorCisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5jbGVhcigpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJGYWlsZWQgdG8gY2xlYXIg
b2JqZWN0IHN0b3JlIHRoYXQgaGFzIGJlZW4gZGVsZXRlZCIpOworICAgICAgICB9IAorCisgICAg
ICAgIC8vIFJlY3JlYXRlIHRoZSBvYmplY3RzdG9yZSBiZWNhdXNlIHdlJ2xsIG5lZWQgaXQgaW4g
cGhhc2UgMi4KKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICBvYmplY3RTdG9yZS5wdXQoImJhciIs
ICJmb28iKTsgICAgCisgICAgfQorICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAg
Y29udGludWVUZXN0MSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZl
bnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3Qx
KCkKK3sKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9i
amVjdFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIAorICAgIHRyeSB7CisgICAg
ICAgIG9iamVjdFN0b3JlLmNsZWFyKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGRlYnVn
KCJBTEVSVDogIiArICJGYWlsZWQgdG8gY2xlYXIgb2JqZWN0IHN0b3JlIGluIHJlYWQtb25seSB0
cmFuc2FjdGlvbiIpOworICAgIH0KKyAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFz
ZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOworICAgIHZhciBv
YmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsK
KworICAgIC8vIFNwaW4gdGhlIHRyYW5zYWN0aW9uIHdpdGggZ2V0IHJlcXVlc3RzIHRvIGtlZXAg
aXQgYWxpdmUgbG9uZyBlbm91Z2ggZm9yIHRoZSBzZXRUaW1lb3V0IHRvIGZpcmUuCisgICAgdmFy
IGNhbkZpbmlzaCA9IGZhbHNlOworICAgIHZhciBzcGluR2V0ID0gZnVuY3Rpb24oKSB7IAorICAg
ICAgICBvYmplY3RTdG9yZS5nZXQoImZvbyIpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgaWYgKCFjYW5GaW5pc2gpCisgICAgICAgICAgICAgICAgc3BpbkdldCgpOworICAg
ICAgICB9CisgICAgfQorICAgIHNwaW5HZXQoKTsKKworICAgIHZhciB0ZXN0V2hpbGVJbmFjdGl2
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUu
cHV0KCJiYXIiLCAiZm9vIik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdp
dGggaW5hY3RpdmUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmNsZWFyKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZhaWxlZCB0byBjbGVhciBvYmpl
Y3Qgc3RvcmUgd2l0aCBpbmFjdGl2ZSB0cmFuc2FjdGlvbiIpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBjYW5GaW5pc2ggPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0
KHRlc3RXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJ0cmFuc2Fj
dGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41MGZmOTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWls
dXJlcy5qcwpAQCAtMCwwICsxLDc2IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzb21lIG9i
dmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoKSIpOworCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQor
Cit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVHJhbnNhY3Rpb25PYmplY3RT
dG9yZUZhaWx1cmVzVGVzdERhdGFiYXNlIik7CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIGRlYnVnKCJBTEVSVDogIiArICJVcGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7CisgICAgCisgICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2
YXIgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgZGVidWcoIkFMRVJUOiAiICsgdHgg
KyAiIC0gIiArIHR4Lm1vZGUpOworICAgIGRlYnVnKCJBTEVSVDogIiArIGRiKTsKKworICAgIHZh
ciBvczEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMSIpOworICAgIHZh
ciBvczIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMiIpOworCisgICAg
dmFyIHB1dFJlcXVlc3QgPSBvczEucHV0KCJiYXIiLCAiZm9vIik7CisgICAgCisgICAgcHV0UmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJw
dXQgZmFpbGVkIChiZWNhdXNlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkKSIpOworICAgIH0KKyAg
ICAKKyAgICB0cnkgeworICAgICAgICB0eC5vYmplY3RTdG9yZSgiIik7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJDYXVnaHQgYXR0ZW1wdCB0byBhY2Nlc3Mg
ZW1wdHktbmFtZWQgb2JqZWN0IHN0b3JlIG9uIHRoZSB0cmFuc2FjdGlvbiIpOworICAgIH0KKyAg
ICAKKyAgICB0cnkgeworICAgICAgICB0eC5vYmplY3RTdG9yZSgpOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiQ2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIG51
bGwtbmFtZWQgb2JqZWN0IHN0b3JlIG9uIHRoZSB0cmFuc2FjdGlvbiIpOworICAgIH0KKyAgICAg
CisgICAgdHJ5IHsKKyAgICAgICAgdHgub2JqZWN0U3RvcmUoIlRoaXNPYmplY3RTdG9yZURvZXNO
b3RFeGlzdCIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
Q2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUgb24gdGhl
IHRyYW5zYWN0aW9uIik7CisgICAgfQorICAgIAorICAgIHR4LmFib3J0KCk7CisgICAgCisgICAg
dHJ5IHsKKyAgICAgICAgdHgub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTEiKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkNhdWdodCBhdHRlbXB0IHRv
IGFjY2VzcyB2YWxpZCBvYmplY3Qgc3RvcmUgb24gYSB0cmFuc2FjdGlvbiB0aGF0IGlzIGFscmVh
ZHkgZmluaXNoaW5nIik7CisgICAgfQorICAgICAgCisgICAgdHgub25hYm9ydCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJGaXJzdCB2ZXJzaW9uIGNoYW5n
ZSB0cmFuc2FjdGlvbiBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHgu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiAr
ICJGaXJzdCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0eC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkZpcnN0IHZlcnNpb24gY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7
CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2luZGV4LTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNzhhMTBkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5kZXgtMS5qcwpAQCAtMCwwICsxLDEwMSBAQAor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGV4cGVjdGVkIHZhbHVlcyBmcm9tIHNvbWUgbW9y
ZSBjb21wbGV4IGluZGV4IHNpdHVhdGlvbnMuIik7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCit2YXIg
Y3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSW5kZXgxRGF0YWJhc2UiLCAx
KTsKKworZnVuY3Rpb24gY2hlY2tLZXkoaW5kZXgsIGtleSkKK3sKKyAgICB2YXIgcmVxdWVzdDEg
PSBpbmRleC5nZXQoa2V5KTsKKyAgICB2YXIgcmVxdWVzdDIgPSBpbmRleC5nZXRLZXkoa2V5KTsK
KworICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1Zygi
Z2V0IFwiIiArIGtleSArICJcIiByZXN1bHQgaXM6ICIgKyByZXF1ZXN0MS5yZXN1bHQpOworICAg
ICAgICBmb3IgKG4gaW4gcmVxdWVzdDEucmVzdWx0KQorICAgICAgICAgICAgZGVidWcobiArICIg
aXMgIiArIHJlcXVlc3QxLnJlc3VsdFtuXSk7CisgICAgfQorICAgIHJlcXVlc3QyLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiZ2V0S2V5IFwiIiArIGtleSArICJcIiBy
ZXN1bHQgaXM6ICIgKyByZXF1ZXN0Mi5yZXN1bHQpOworICAgICAgICBmb3IgKG4gaW4gcmVxdWVz
dDIucmVzdWx0KQorICAgICAgICAgICAgZGVidWcobiArICIgaXMgIiArIHJlcXVlc3QyLnJlc3Vs
dFtuXSk7CisgICAgfSAKK30KKworZnVuY3Rpb24gY2hlY2tJbmRleChpbmRleCkKK3sKKyAgICBj
aGVja0tleShpbmRleCwgImdvb2QiKTsKKyAgICBjaGVja0tleShpbmRleCwgImJhZCIpOworICAg
IGNoZWNrS2V5KGluZGV4LCAib2siKTsKKyAgICBjaGVja0tleShpbmRleCwgIm1laCIpOworICAg
IGNoZWNrS2V5KGluZGV4LCAic3VwZXIiKTsKKyAgICBjaGVja0tleShpbmRleCwgInRoYW5rc0Zv
ckFza2luZyIpOworICAgIGNoZWNrS2V5KGluZGV4LCBbICJnb29kIiwgImJhZCIgXSk7CisgICAg
Y2hlY2tLZXkoaW5kZXgsIFsgIm9rIiwgIm1laCIgXSk7CisgICAgY2hlY2tLZXkoaW5kZXgsIFsg
InN1cGVyIiwgInRoYW5rc0ZvckFza2luZyIgXSk7CisgICAgY2hlY2tLZXkoaW5kZXgsICJUaGlz
IGlzIHRvIHRlc3QiKTsKKyAgICBjaGVja0tleShpbmRleCwgIm11bHRpRW50cnkgaW5kZXhlcyIp
OworICAgIGNoZWNrS2V5KGluZGV4LCBbIlRoaXMgaXMgdG8gdGVzdCIsICJtdWx0aUVudHJ5IGlu
ZGV4ZXMiIF0pOworICAgIAorICAgIHZhciByZXF1ZXN0ID0gaW5kZXguY291bnQoKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiY291bnQgcmVz
dWx0IGlzOiAiICsgcmVxdWVzdC5yZXN1bHQpOworICAgICAgICBkZWJ1ZygiIik7CisgICAgfQor
fQorCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisg
ICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Cisg
ICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAg
dmFyIGluZGV4MSA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgxIiwgImJhciIp
OworICAgIHZhciBpbmRleDIgPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MiIs
ICJiYXoiKTsKKyAgICB2YXIgaW5kZXgzID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJ
bmRleDMiLCBbICJiYXIiLCAiYmF6IiBdKTsKKyAgICB2YXIgaW5kZXg0ID0gb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoIlRlc3RJbmRleDQiLCAiYmFyIiwgeyBtdWx0aUVudHJ5OiB0cnVlIH0pOwor
CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiZ29vZCIsIGJhejogImJhZCIgfSwgMSk7Cisg
ICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiZ29vZCIsIGJhejogImJhZCIgfSwgMik7CisgICAg
b2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiZ29vZCIsIGJhejogImJhZCIgfSwgMyk7CisgICAgb2Jq
ZWN0U3RvcmUucHV0KHsgYmFyOiAib2siLCBiYXo6ICJtZWgiIH0sIDQpOworICAgIG9iamVjdFN0
b3JlLnB1dCh7IGJhcjogIm9rIiwgYmF6OiAibWVoIiB9LCA1KTsKKyAgICBvYmplY3RTdG9yZS5w
dXQoeyBiYXI6ICJvayIsIGJhejogIm1laCIgfSwgNik7CisgICAgb2JqZWN0U3RvcmUucHV0KHsg
YmFyOiAic3VwZXIiLCBiYXo6ICJ0aGFua3NGb3JBc2tpbmciIH0sIDcpOworICAgIG9iamVjdFN0
b3JlLnB1dCh7IGJhcjogInN1cGVyIiwgYmF6OiAidGhhbmtzRm9yQXNraW5nIiB9LCA4KTsKKyAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJzdXBlciIsIGJhejogInRoYW5rc0ZvckFza2luZyIg
fSwgOSk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiBbICJUaGlzIGlzIHRvIHRlc3QiLCAi
bXVsdGlFbnRyeSBpbmRleGVzIiBdfSwgMTApOworICAgIAorICAgIGNoZWNrSW5kZXgoaW5kZXgx
KTsKKyAgICBjaGVja0luZGV4KGluZGV4Mik7CisgICAgY2hlY2tJbmRleChpbmRleDMpOworICAg
IGNoZWNrSW5kZXgoaW5kZXg0KTsKKyAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVy
c2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1
ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBl
cnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRleC0y
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRl
eC0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YWQ2ZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2luZGV4LTIuanMKQEAgLTAsMCArMSwxNjAgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IGluZGV4ZXMgYXJlIGxlZnQgaW4gYXBwcm9wcmlhdGUgc3RhdGVzIGFmdGVyIGFib3J0ZWQgdHJh
bnNhY3Rpb25zLiIpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0
aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkKK3sKKyAgICBkZWJ1ZyhtZXNzYWdlKTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3
aW5kb3cuaW5kZXhlZERCLm9wZW4oIkluZGV4MkRhdGFiYXNlIiwgMSk7CisKK2Z1bmN0aW9uIGNo
ZWNrS2V5KGluZGV4LCBrZXkpCit7CisgICAgdmFyIHJlcXVlc3QxID0gaW5kZXguZ2V0KGtleSk7
CisgICAgdmFyIHJlcXVlc3QyID0gaW5kZXguZ2V0S2V5KGtleSk7CisKKyAgICByZXF1ZXN0MS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoImdldCBcIiIgKyBrZXkgKyAi
XCIgcmVzdWx0IGlzOiAiICsgcmVxdWVzdDEucmVzdWx0KTsKKyAgICAgICAgZm9yIChuIGluIHJl
cXVlc3QxLnJlc3VsdCkKKyAgICAgICAgICAgIGRlYnVnKG4gKyAiIGlzICIgKyByZXF1ZXN0MS5y
ZXN1bHRbbl0pOworICAgIH0KKyAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZGVidWcoImdldEtleSBcIiIgKyBrZXkgKyAiXCIgcmVzdWx0IGlzOiAiICsgcmVx
dWVzdDIucmVzdWx0KTsKKyAgICAgICAgZm9yIChuIGluIHJlcXVlc3QyLnJlc3VsdCkKKyAgICAg
ICAgICAgIGRlYnVnKG4gKyAiIGlzICIgKyByZXF1ZXN0Mi5yZXN1bHRbbl0pOworICAgIH0gCit9
CisKK2Z1bmN0aW9uIGNoZWNrSW5kZXgoaW5kZXgpCit7CisgICAgY2hlY2tLZXkoaW5kZXgsICJn
b29kIik7CisgICAgY2hlY2tLZXkoaW5kZXgsICJiYWQiKTsKKyAgICBjaGVja0tleShpbmRleCwg
Im11bHRpRW50cnkiKTsKKyAgICBjaGVja0tleShpbmRleCwgInRlc3QiKTsKKyAgICAKKyAgICB2
YXIgcmVxdWVzdCA9IGluZGV4LmNvdW50KCk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZGVidWcoImNvdW50IHJlc3VsdCBpczogIiArIHJlcXVlc3QucmVz
dWx0KTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KK30KKwordmFyIGRhdGFiYXNlOworCitj
cmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVi
dWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZl
cnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFy
IHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0
YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFi
YXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgaW5kZXgx
ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJbmRleDEiLCAiYmFyIik7CisgICAgdmFy
IGluZGV4MiA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgyIiwgImJheiIpOwor
ICAgIHZhciBpbmRleDMgPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgiVGVzdEluZGV4MyIsICJi
YXIiLCB7IG11bHRpRW50cnk6IHRydWUgfSk7CisKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJnb29kIiwgYmF6OiAiYmFkIiB9LCAxKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6IFsg
Im11bHRpRW50cnkiLCAidGVzdCIgXX0sIDIpOworICAgIAorICAgIGNoZWNrSW5kZXgoaW5kZXgx
KTsKKyAgICBjaGVja0luZGV4KGluZGV4Mik7CisgICAgY2hlY2tJbmRleChpbmRleDMpOworCisg
ICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBl
Y3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5p
dGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAg
ICAgY29udGludWVUZXN0MSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sgICAK
KyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0
b3JlIiwgInJlYWR3cml0ZSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgaW5kZXgxID0gb2JqZWN0U3Rv
cmUuaW5kZXgoIlRlc3RJbmRleDEiKTsKKyAgICB2YXIgaW5kZXgyID0gb2JqZWN0U3RvcmUuaW5k
ZXgoIlRlc3RJbmRleDIiKTsKKyAgICB2YXIgaW5kZXgzID0gb2JqZWN0U3RvcmUuaW5kZXgoIlRl
c3RJbmRleDMiKTsKKyAgICAKKyAgICBvYmplY3RTdG9yZS5kZWxldGUoMSkub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgZGVidWcoIkRlbGV0ZWQga2V5IDEgZnJvbSBvYmplY3RzdG9y
ZSIpOworICAgICAgIGRlYnVnKCIiKTsKKyAgICB9CisKKyAgICBjaGVja0luZGV4KGluZGV4MSk7
CisgICAgY2hlY2tJbmRleChpbmRleDIpOworICAgIGNoZWNrSW5kZXgoaW5kZXgzKTsKKworICAg
IG9iamVjdFN0b3JlLmNsZWFyKCkub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgZGVi
dWcoIkNsZWFyZWQgb2JqZWN0c3RvcmUiKTsKKyAgICAgICBkZWJ1ZygiIik7CisgICAgfQorICAg
IAorICAgIGNoZWNrSW5kZXgoaW5kZXgxKTsKKyAgICBjaGVja0luZGV4KGluZGV4Mik7CisgICAg
Y2hlY2tJbmRleChpbmRleDMpOworICAgIAorICAgIG9iamVjdFN0b3JlLmdldCgwKS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkFsbCBkb25lLiBNb3Zpbmcgb24gdG8g
ZmluYWwgcGFydCIpOworICAgICAgICB0cmFuc2FjdGlvbi5hYm9ydCgpOworICAgIH0KKyAgICAK
KyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgIGNvbnRpbnVlVGVz
dDIoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNv
bXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWR3cml0ZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGVycm9yIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQoreyAgIAorICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFi
YXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICB2YXIg
b2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7
CisgICAgdmFyIGluZGV4MSA9IG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXgxIik7CisgICAg
dmFyIGluZGV4MiA9IG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXgyIik7CisgICAgdmFyIGlu
ZGV4MyA9IG9iamVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXgzIik7CisgICAgCisgICAgY2hlY2tJ
bmRleChpbmRleDEpOworICAgIGNoZWNrSW5kZXgoaW5kZXgyKTsKKyAgICBjaGVja0luZGV4KGlu
ZGV4Myk7CisgICAgCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRlYnVnKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIp
OworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24g
Y29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2luZGV4LTMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVz
b3VyY2VzL2luZGV4LTMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU5
MTZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9yZXNvdXJjZXMvaW5kZXgtMy5qcwpAQCAtMCwwICsxLDExMiBAQAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBleGVyY2lzZXMgdGhlIFwidW5pcXVlXCIgY29uc3RyYWludCBvZiBpbmRleGVz
LiIpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUo
KQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sK
KyAgICBkZWJ1ZyhtZXNzYWdlKTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIkluZGV4M0RhdGFiYXNlIiwgMSk7Cit2YXIgb2JqZWN0U3RvcmU7CisKK2Z1
bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQoreworICAgIHZhciByZXExID0gb2JqZWN0U3RvcmUu
Z2V0KDEpOworICAgIHJlcTEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVn
KCJWYWx1ZSBvZiAxIGlzOiAiICsgcmVxMS5yZXN1bHQpOworICAgIH0KKyAgICB2YXIgcmVxMiA9
IG9iamVjdFN0b3JlLmdldCgyKTsKKyAgICByZXEyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBkZWJ1ZygiVmFsdWUgb2YgMiBpczogIiArIHJlcTIucmVzdWx0KTsKKyAgICB9Cisg
ICAgdmFyIHJlcTMgPSBvYmplY3RTdG9yZS5nZXQoMyk7CisgICAgcmVxMy5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIlZhbHVlIG9mIDMgaXM6ICIgKyByZXEzLnJlc3Vs
dCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja0luZGV4KGluZGV4LCBuYW1lKQoreworICAg
IHZhciByZXEgPSBpbmRleC5jb3VudCgpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZGVidWcoIkNvdW50IGluIGluZGV4ICIgKyBuYW1lICsgIiBpczogIiArIHJl
cS5yZXN1bHQpOworICAgIH0KK30KKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlIik7CisgICAgdmFyIGkxID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJbmRl
eDEiLCAiYmFyIiwgeyB1bmlxdWU6IHRydWUgfSk7CisgICAgdmFyIGkyID0gb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoIlRlc3RJbmRleDIiLCAiYmFyIiwgeyBtdWx0aUVudHJ5OiB0cnVlLCB1bmlx
dWU6IHRydWUgfSk7CisKKyAgICB2YXIgcmVxdWVzdDEgPSBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJnb29kIiwgYmF6OiAiYmFkIiB9LCAxKTsKKyAgICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZGVidWcoIkZpcnN0IHB1dCBzdWNjZXNzIik7CisgICAgfQorICAg
IHJlcXVlc3QxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIkZpcnN0IHB1
dCB1bmV4cGVjdGVkIGZhaWx1cmUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICAKKyAg
ICBjaGVja09iamVjdFN0b3JlKCk7CisgICAgY2hlY2tJbmRleChpMSwgMSk7CisgICAgY2hlY2tJ
bmRleChpMiwgMik7CisgICAgCisgICAgdmFyIHJlcXVlc3QyID0gb2JqZWN0U3RvcmUucHV0KHsg
YmFyOiAiZ29vZCIsIGJhejogImJhZCIgfSwgMik7CisgICAgcmVxdWVzdDIub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJTZWNvbmQgcHV0IHVuZXhwZWN0ZWQgc3VjY2Vz
cyIpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBmdW5j
dGlvbihlKSB7CisgICAgICAgIGRlYnVnKCJTZWNvbmQgcHV0IGZhaWx1cmUiKTsKKyAgICAgICAg
ZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0K
KyAgICAKKyAgICBjaGVja09iamVjdFN0b3JlKCk7CisgICAgY2hlY2tJbmRleChpMSwgMSk7Cisg
ICAgY2hlY2tJbmRleChpMiwgMik7CisgICAgCisgICAgdmFyIHJlcXVlc3QzID0gb2JqZWN0U3Rv
cmUucHV0KHsgYmFyOiBbICJnbmFybHkiLCAiZ3JlYXQiLCAiZ29vZCIgXX0sIDMpOworICAgIHJl
cXVlc3QzLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiVGhpcmQgcHV0
IHVuZXhwZWN0ZWQgc3VjY2VzcyIpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIHJlcXVl
c3QzLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGRlYnVnKCJUaGlyZCBwdXQgZmFp
bHVyZSIpOworICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICBlLnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgfQorICAgIAorICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICBjaGVj
a0luZGV4KGkxLCAxKTsKKyAgICBjaGVja0luZGV4KGkyLCAyKTsKKyAgICAKKyAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJ
bml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAg
IH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL2luZGV4LTQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2luZGV4LTQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTI2M2Q4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5kZXgtNC5qcwpAQCAtMCwwICsxLDkyIEBACitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGluZGV4ZXMgYWRkZWQgdG8gYW4gb2JqZWN0IHN0b3Jl
IHdpdGggZXhpc3RpbmcgcmVjb3JkcyBhcmUgcG9wdWxhdGVkIHVwb24gdGhlaXIgY3JlYXRpb24u
Iik7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgp
Cit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCit2YXIgaW5kZXg7Cit2YXIgb2JqZWN0U3RvcmU7CisK
K2Z1bmN0aW9uIGNoZWNrSW5kZXhWYWx1ZXMoKQoreworICAgIHZhciBjb3VudFJlcXVlc3QgPSBp
bmRleC5jb3VudCgpOworICAgIGNvdW50UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZGVidWcoIkNvdW50IGlzOiAiICsgY291bnRSZXF1ZXN0LnJlc3VsdCk7CisgICAg
fQorCisgICAgdmFyIGN1cnNvclJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7CisgICAgY3Vy
c29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9
IGN1cnNvclJlcXVlc3QucmVzdWx0OworICAgICAgICBpZiAoIWN1cnNvcikgeworICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlYnVn
KCJDdXJzb3IgYXQgcmVjb3JkOiAiICsgY3Vyc29yLmtleSArICIgLyAiICsgY3Vyc29yLnByaW1h
cnlLZXkpOworICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKworICAgIH0KKyAgICBjdXJzb3JS
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGRlYnVnKCJVbmV4cGVjdGVk
IGVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOworICAgICAgICBsb2dDdXJzb3Io
Y3Vyc29yUmVxdWVzdC5yZXN1bHQpOworICAgICAgICBkb25lKCk7CisgICAgfSAKK30KKwordmFy
IGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkluZGV4NERhdGFiYXNlIiwg
MSk7CitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisg
ICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Cisg
ICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBvYmplY3RTdG9yZSA9
IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBvYmpl
Y3RTdG9yZS5wdXQoeyBiYXI6ICJBIiB9LCAxKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJBIiB9LCAyKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJCIiB9LCAzKTsKKyAgICBv
YmplY3RTdG9yZS5wdXQoeyBiYXI6ICJCIiB9LCA0KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBi
YXI6ICJDIiB9LCA1KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJDIiB9LCA2KTsKKyAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJEIiB9LCA3KTsKKyAgICBvYmplY3RTdG9yZS5wdXQo
eyBiYXI6ICJEIiB9LCA4KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJFIiB9LCA5KTsK
KyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJFIiB9LCAxMCk7CisgICAgb2JqZWN0U3RvcmUu
cHV0KHsgYmFyOiAiRiIgfSwgMTEpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkYiIH0s
IDEyKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJHIiB9LCAxMyk7CisgICAgb2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAiRyIgfSwgMTQpOyAgICAKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBi
YXI6ICJIIiB9LCAxNSk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiSCIgfSwgMTYpOyAg
CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiSSIgfSwgMTcpOworICAgIG9iamVjdFN0b3Jl
LnB1dCh7IGJhcjogIkkiIH0sIDE4KTsgIAorCisgICAgLy8gVGhpcyBpbmRleCBzaG91bGQgYmUg
cG9wdWxhdGVkIHdpdGggdGhlIGFib3ZlIHZhbHVlcyB1cG9uIGl0cyBjcmVhdGlvbi4KKyAgICBp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgxIiwgImJhciIpOworICAg
IAorICAgIGNoZWNrSW5kZXhWYWx1ZXMoKTsKKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisK
KyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L2luZGV4LTUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2luZGV4LTUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRkZTM4
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9yZXNvdXJjZXMvaW5kZXgtNS5qcwpAQCAtMCwwICsxLDc5IEBACitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyBjcmVhdGluZyBhbiBpbmRleCBvbiBhbiBvYmplY3Qgc3RvcmUgdGhhdCBhbHJlYWR5
IGhhcyByZWNvcmRzLCBhbmQgdGhvc2UgcmVjb3JkcyB3b3VsZCB2aW9sYXRlIHRoZSB1bmlxdWUg
Y29uc3RyYWludCBvZiB0aGUgaW5kZXguIChUaGUgaW5kZXggY3JlYXRpb24gc2hvdWxkIGZhaWwp
LiIpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUo
KQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sK
KyAgICBkZWJ1ZyhtZXNzYWdlKTsKK30KKwordmFyIGluZGV4OwordmFyIG9iamVjdFN0b3JlOwor
CitmdW5jdGlvbiBjaGVja0luZGV4VmFsdWVzKCkKK3sKKyAgICB2YXIgY291bnRSZXF1ZXN0ID0g
aW5kZXguY291bnQoKTsKKyAgICBjb3VudFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGRlYnVnKCJDb3VudCBpczogIiArIGNvdW50UmVxdWVzdC5yZXN1bHQpOworICAg
IH0KKyAgICBjb3VudFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZGVi
dWcoIkVycm9yIGdldHRpbmcgY3Vyc29yIGNvdW50Iik7CisgICAgICAgIGUuc3RvcFByb3BhZ2F0
aW9uKCk7CisgICAgfQorCisgICAgdmFyIGN1cnNvclJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29y
KCk7CisgICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIGN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0OworICAgICAgICBkZWJ1ZygiQ3Vyc29y
IGF0IHJlY29yZDogIiArIGN1cnNvci5rZXkgKyAiIC8gIiArIGN1cnNvci5wcmltYXJ5S2V5KTsK
KyAgICAgICAgCisgICAgICAgIGlmIChjdXJzb3Iua2V5ICE9IHVuZGVmaW5lZCkKKyAgICAgICAg
ICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb25lKCk7
CisgICAgfQorICAgIGN1cnNvclJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgZGVidWcoIkVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOworICAgICAgICBl
LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0gCit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2lu
ZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleDVEYXRhYmFzZSIsIDEpOworY3JlYXRlUmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVw
Z3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcg
dmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNh
Y3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAi
QSIgfSwgMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQSIgfSwgMik7CisKKyAgICAv
LyBUaGlzIGluZGV4IHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCB0aGUgYWJvdmUgdmFsdWVzIHVw
b24gaXRzIGNyZWF0aW9uLCBidXQgdGhhdCBzaG91bGQgZmFpbCBiZWNhdXNlCisgICAgLy8gb2Yg
Y29uc3RyYWludCB2aW9sYXRpb25zLgorICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoIlRlc3RJbmRleDEiLCAiYmFyIiwgeyB1bmlxdWU6IHRydWUgfSk7CisgICAgCisgICAgY2hl
Y2tJbmRleFZhbHVlcygpOworICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0ZWQgKGV4cGVjdGVkIGJlY2F1c2UgaW5kZXggY3JlYXRp
b24gZmFpbGVkLCBhbmQgdGhhdCBzaG91bGQndmUgY2F1c2VkIHRyYW5zYWN0aW9uIGFib3J0KSIp
OworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRleC1jdXJzb3ItMS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLTEuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcwMmZkNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29y
LTEuanMKQEAgLTAsMCArMSwxMjkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGN1cnNvcnMg
dGhhdCBpdGVyYXRlIG92ZXIgZW50aXJlIGluZGV4ZXMuIik7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQor
CitmdW5jdGlvbiBsb2dDdXJzb3IoY3Vyc29yKQoreworICAgIGRlYnVnKCJDdXJzb3IgZGlyZWN0
aW9uIGlzOiAiICsgY3Vyc29yLmRpcmVjdGlvbik7CisgICAgZGVidWcoIkN1cnNvciBzb3VyY2Ug
aXM6ICIgKyBjdXJzb3Iuc291cmNlLm5hbWUpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIGtleSBp
czogIiArIGN1cnNvci5rZXkpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiAiICsgY3Vyc29yLnByaW1hcnlLZXkpOworICAgIGRlYnVnKCJDdXJzb3IgdmFsdWUgaXM6ICIg
KyBjdXJzb3IudmFsdWUpOyAgCit9CisKK2Z1bmN0aW9uIHNldHVwUmVxdWVzdChyZXF1ZXN0KQor
eworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVx
dWVzdC5yZXN1bHQpIHsKKyAgICAgICAgICAgIHN0YXJ0TmV4dEN1cnNvcigpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlYnVnKCJTdWNjZXNzIG9wZW5pbmcgb3Ig
aXRlcmF0aW5nIGN1cnNvciIpOworICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOyAg
CisgICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7CisgICAgfQorICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZGVidWcoIlVuZXhwZWN0ZWQgZXJyb3Ig
b3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yIik7CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0
LnJlc3VsdCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9IAorfQorCitmdW5jdGlvbiB0ZXN0Q3Vy
c29yRGlyZWN0aW9uKGluZGV4LCBkaXJlY3Rpb24pCit7CisgICAgdmFyIHJhbmdlID0gSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5pdHkpOworICAgIHZhciByZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uKTsKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVzdCk7Cit9
CisKK3ZhciBpbmRleDE7Cit2YXIgaW5kZXgyOworCit2YXIgY3Vyc29yQ29tbWFuZHMgPSBbCisg
ICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgyLCAncHJldnVuaXF1ZScpIiwKKyAgICAidGVz
dEN1cnNvckRpcmVjdGlvbihpbmRleDEsICdwcmV2dW5pcXVlJykiLAorICAgICJ0ZXN0Q3Vyc29y
RGlyZWN0aW9uKGluZGV4MiwgJ3ByZXYnKSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5k
ZXgxLCAncHJldicpIiwKKyAgICAidGVzdEN1cnNvckRpcmVjdGlvbihpbmRleDIsICduZXh0dW5p
cXVlJykiLAorICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKGluZGV4MSwgJ25leHR1bmlxdWUnKSIs
CisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgyLCAnbmV4dCcpIiwKKyAgICAidGVzdEN1
cnNvckRpcmVjdGlvbihpbmRleDEsICduZXh0JykiLAorXTsKKworZnVuY3Rpb24gc3RhcnROZXh0
Q3Vyc29yKCkKK3sKKyAgICBpZiAoIWN1cnNvckNvbW1hbmRzLmxlbmd0aCkgeworICAgICAgICBk
b25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdmFyIGNvbW1hbmQgPSBj
dXJzb3JDb21tYW5kcy5wb3AoKTsKKyAgICBsb2cgKCIiKTsKKyAgICBkZWJ1ZygiU3RhcnRpbmcg
YSBuZXcgY3Vyc29yOiAiICsgY29tbWFuZCk7CisgICAgZXZhbChjb21tYW5kKTsKK30KKyAgICAK
K3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleEN1cnNvcjFE
YXRhYmFzZSIsIDEpOworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
dmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAt
ICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJz
aW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5z
YWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFy
IG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworICAgIGluZGV4MSA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgxIiwg
ImJhciIpOworICAgIGluZGV4MiA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgy
IiwgImJheiIpOworCisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQSIsIGJhejogImEiIH0s
IDEpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkEiLCBiYXo6ICJhIiB9LCAzKTsKKyAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiwgYmF6OiAiYSIgfSwgMik7CisgICAgb2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAiQiIsIGJhejogImIiIH0sIDUpOworICAgIG9iamVjdFN0b3JlLnB1
dCh7IGJhcjogIkIiLCBiYXo6ICJiIiB9LCA2KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6
ICJCIiwgYmF6OiAiYiIgfSwgNCk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQyIsIGJh
ejogImMiIH0sIDcpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkMiLCBiYXo6ICJjIiB9
LCA5KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJDIiwgYmF6OiAiYyIgfSwgOCk7Cisg
ICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRCIsIGJhejogImQiIH0sIDExKTsKKyAgICBvYmpl
Y3RTdG9yZS5wdXQoeyBiYXI6ICJEIiwgYmF6OiAiZCIgfSwgMTIpOworICAgIG9iamVjdFN0b3Jl
LnB1dCh7IGJhcjogIkQiLCBiYXo6ICJkIiB9LCAxMCk7CisKKyAgICB2YXIgcmVxMSA9IGluZGV4
MS5jb3VudCgpOworICAgIHJlcTEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRl
YnVnKCJUZXN0SW5kZXgxIGNvdW50IGlzOiAiICsgcmVxMS5yZXN1bHQpOworICAgIH0KKworICAg
IHZhciByZXEyID0gaW5kZXgyLmNvdW50KCk7CisgICAgcmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgZGVidWcoIlRlc3RJbmRleDIgY291bnQgaXM6ICIgKyByZXEyLnJlc3Vs
dCk7CisgICAgfQorICAgIAorICAgIHN0YXJ0TmV4dEN1cnNvcigpOworICAgIAorICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJv
cnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLTIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LWN1cnNvci0yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZjU2OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LWN1cnNvci0yLmpz
CkBAIC0wLDAgKzEsMTMzIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBjdXJzb3JzIHRoYXQg
aXRlcmF0ZSBvdmVyIHBhcnRzIG9mIGluZGV4ZXMuIik7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCitm
dW5jdGlvbiBsb2dDdXJzb3IoY3Vyc29yKQoreworICAgIGRlYnVnKCJDdXJzb3IgZGlyZWN0aW9u
IGlzOiAiICsgY3Vyc29yLmRpcmVjdGlvbik7CisgICAgZGVidWcoIkN1cnNvciBzb3VyY2UgaXM6
ICIgKyBjdXJzb3Iuc291cmNlLm5hbWUpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIGtleSBpczog
IiArIGN1cnNvci5rZXkpOyAgICAKKyAgICBkZWJ1ZygiQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAi
ICsgY3Vyc29yLnByaW1hcnlLZXkpOworICAgIGRlYnVnKCJDdXJzb3IgdmFsdWUgaXM6ICIgKyBj
dXJzb3IudmFsdWUpOyAgCit9CisKK2Z1bmN0aW9uIHNldHVwUmVxdWVzdChyZXF1ZXN0KQorewor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVxdWVz
dC5yZXN1bHQpIHsKKyAgICAgICAgICAgIHN0YXJ0TmV4dEN1cnNvcigpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlYnVnKCJTdWNjZXNzIG9wZW5pbmcgb3IgaXRl
cmF0aW5nIGN1cnNvciIpOworICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOyAgCisg
ICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7CisgICAgfQorICAgIHJlcXVlc3Qub25l
cnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZGVidWcoIlVuZXhwZWN0ZWQgZXJyb3Igb3Bl
bmluZyBvciBpdGVyYXRpbmcgY3Vyc29yIik7CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJl
c3VsdCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9IAorfQorCit2YXIgaW5kZXg7CisKK2Z1bmN0
aW9uIHRlc3RDdXJzb3JEaXJlY3Rpb24oZGlyZWN0aW9uLCByYW5nZSkKK3sKKyAgICB2YXIgcmVx
dWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7CisgICAgc2V0dXBSZXF1
ZXN0KHJlcXVlc3QpOworfQorCit2YXIgY3Vyc29yQ29tbWFuZHMgPSBbCisgICAgInRlc3RDdXJz
b3JEaXJlY3Rpb24oJ3ByZXZ1bmlxdWUnLCBJREJLZXlSYW5nZS5vbmx5KCdCJykpIiwKKyAgICAi
dGVzdEN1cnNvckRpcmVjdGlvbigncHJldicsIElEQktleVJhbmdlLm9ubHkoJ0InKSkiLAorICAg
ICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKCduZXh0dW5pcXVlJywgSURCS2V5UmFuZ2Uub25seSgnQicp
KSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ25leHQnLCBJREJLZXlSYW5nZS5vbmx5KCdC
JykpIiwKKyAgICAidGVzdEN1cnNvckRpcmVjdGlvbigncHJldnVuaXF1ZScsIElEQktleVJhbmdl
Lmxvd2VyQm91bmQoJ0MnKSkiLAorICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKCdwcmV2JywgSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCgnQycpKSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ25l
eHR1bmlxdWUnLCBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdDJykpIiwKKyAgICAidGVzdEN1cnNv
ckRpcmVjdGlvbignbmV4dCcsIElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0MnKSkiLAorICAgICJ0
ZXN0Q3Vyc29yRGlyZWN0aW9uKCdwcmV2dW5pcXVlJywgSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgn
QicpKSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ3ByZXYnLCBJREJLZXlSYW5nZS51cHBl
ckJvdW5kKCdCJykpIiwKKyAgICAidGVzdEN1cnNvckRpcmVjdGlvbignbmV4dHVuaXF1ZScsIElE
QktleVJhbmdlLnVwcGVyQm91bmQoJ0InKSkiLAorICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKCdu
ZXh0JywgSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgnQicpKSIsCisgICAgInRlc3RDdXJzb3JEaXJl
Y3Rpb24oJ3ByZXZ1bmlxdWUnLCBJREJLZXlSYW5nZS5ib3VuZCgnQicsICdDJykpIiwKKyAgICAi
dGVzdEN1cnNvckRpcmVjdGlvbigncHJldicsIElEQktleVJhbmdlLmJvdW5kKCdCJywgJ0MnKSki
LAorICAgICJ0ZXN0Q3Vyc29yRGlyZWN0aW9uKCduZXh0dW5pcXVlJywgSURCS2V5UmFuZ2UuYm91
bmQoJ0InLCAnQycpKSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ25leHQnLCBJREJLZXlS
YW5nZS5ib3VuZCgnQicsICdDJykpIiwKKyAgICAidGVzdEN1cnNvckRpcmVjdGlvbigncHJldnVu
aXF1ZScsIElEQktleVJhbmdlLmJvdW5kKCdCJywgJ0QnLCB0cnVlLCB0cnVlKSkiLAorICAgICJ0
ZXN0Q3Vyc29yRGlyZWN0aW9uKCdwcmV2JywgSURCS2V5UmFuZ2UuYm91bmQoJ0InLCAnRCcsIHRy
dWUsIHRydWUpKSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oJ25leHR1bmlxdWUnLCBJREJL
ZXlSYW5nZS5ib3VuZCgnQicsICdEJywgdHJ1ZSwgdHJ1ZSkpIiwKKyAgICAidGVzdEN1cnNvckRp
cmVjdGlvbignbmV4dCcsIElEQktleVJhbmdlLmJvdW5kKCdCJywgJ0QnLCB0cnVlLCB0cnVlKSki
LAorXTsKKworZnVuY3Rpb24gc3RhcnROZXh0Q3Vyc29yKCkKK3sKKyAgICBpZiAoIWN1cnNvckNv
bW1hbmRzLmxlbmd0aCkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2YXIgY29tbWFuZCA9IGN1cnNvckNvbW1hbmRzLnBvcCgpOworICAgIGxvZyAoIiIp
OworICAgIGRlYnVnKCJTdGFydGluZyBhIG5ldyBjdXJzb3I6ICIgKyBjb21tYW5kKTsKKyAgICBl
dmFsKGNvbW1hbmQpOworfQorICAgIAordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhl
ZERCLm9wZW4oIkluZGV4Q3Vyc29yMkRhdGFiYXNlIiwgMSk7CitjcmVhdGVSZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgaW5kZXggPSBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgiVGVzdEluZGV4MSIsICJiYXIiKTsKKworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJh
cjogIkEiLCBiYXo6ICJhIiB9LCAxKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJBIiwg
YmF6OiAiYSIgfSwgMyk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQSIsIGJhejogImEi
IH0sIDIpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkIiLCBiYXo6ICJiIiB9LCA1KTsK
KyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJCIiwgYmF6OiAiYiIgfSwgNik7CisgICAgb2Jq
ZWN0U3RvcmUucHV0KHsgYmFyOiAiQiIsIGJhejogImIiIH0sIDQpOworICAgIG9iamVjdFN0b3Jl
LnB1dCh7IGJhcjogIkMiLCBiYXo6ICJjIiB9LCA3KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBi
YXI6ICJDIiwgYmF6OiAiYyIgfSwgOSk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiQyIs
IGJhejogImMiIH0sIDgpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkQiLCBiYXo6ICJk
IiB9LCAxMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRCIsIGJhejogImQiIH0sIDEy
KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJEIiwgYmF6OiAiZCIgfSwgMTApOworCisg
ICAgdmFyIHJlcSA9IGluZGV4LmNvdW50KCk7CisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBkZWJ1ZygiVGVzdEluZGV4MSBjb3VudCBpczogIiArIHJlcS5yZXN1bHQp
OworICAgIH0KKworICAgIHN0YXJ0TmV4dEN1cnNvcigpOworICAgIAorICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIp
OworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQor
fQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9y
ZXNvdXJjZXMvaW5kZXgtY3Vyc29yLTMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LWN1cnNvci0zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjczYTM2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LWN1cnNvci0zLmpzCkBAIC0w
LDAgKzEsMTcyIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGluZGV4IGN1cnNvcnMg
cHJvcGVybHkgaGFuZGxlIGNoYW5naW5nIGluZGV4ZXMuIik7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQor
Cit2YXIgaW5kZXg7Cit2YXIgb2JqZWN0U3RvcmU7CisKK2Z1bmN0aW9uIGxvZ0N1cnNvcihjdXJz
b3IpCit7CisgICAgZGVidWcoIkN1cnNvciBkaXJlY3Rpb24gaXM6ICIgKyBjdXJzb3IuZGlyZWN0
aW9uKTsKKyAgICBkZWJ1ZygiQ3Vyc29yIHNvdXJjZSBpczogIiArIGN1cnNvci5zb3VyY2UubmFt
ZSk7ICAgIAorICAgIGRlYnVnKCJDdXJzb3Iga2V5IGlzOiAiICsgY3Vyc29yLmtleSk7ICAgIAor
ICAgIGRlYnVnKCJDdXJzb3IgcHJpbWFyeSBrZXkgaXM6ICIgKyBjdXJzb3IucHJpbWFyeUtleSk7
CisgICAgZGVidWcoIkN1cnNvciB2YWx1ZSBpczogIiArIGN1cnNvci52YWx1ZSk7ICAKK30KKwor
ZnVuY3Rpb24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoIlN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRp
bmcgY3Vyc29yIik7CisgICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdCkKKyAgICAgICAgICAgIGxv
Z0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7CisKKyAgICAgICAgaWYgKHJlcXVlc3QucmVzdWx0ICYm
IHJlcXVlc3QuaXRlcmF0ZWRPbmNlKSB7CisgICAgICAgICAgICB2YXIgcHJpbWFyeUtleSA9IHJl
cXVlc3QucmVzdWx0LnByaW1hcnlLZXk7CisgICAgICAgICAgICBpZiAocHJpbWFyeUtleSkgewor
ICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmRlbGV0ZShwcmltYXJ5S2V5KS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkRlbGV0ZWQga2V5ICIg
KyBwcmltYXJ5S2V5ICsgIiBmcm9tIG9iamVjdCBzdG9yZSIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB2YXIgbmV4dFByaW1hcnlLZXkgPSBwcmltYXJ5S2V5OworICAgICAg
ICAgICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdC5kaXJlY3Rpb24uc3RhcnRzV2l0aCgibmV4dCIp
KSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRQcmltYXJ5S2V5Kys7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChuZXh0UHJpbWFyeUtleSA+IDE4KQorICAgICAgICAgICAgICAgICAgICAgICAg
bmV4dFByaW1hcnlLZXkgPSAwOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBuZXh0UHJpbWFyeUtleS0tOworCisgICAgICAgICAgICAgICAgaWYgKG5leHRQcmlt
YXJ5S2V5ID4gMCkgeworICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUobmV4
dFByaW1hcnlLZXkpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVidWcoIkRlbGV0ZWQga2V5ICIgKyBuZXh0UHJpbWFyeUtleSArICIgZnJvbSBvYmpl
Y3Qgc3RvcmUiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBEZWxldGUgYW4gYWRkaXRpb25hbCBp
dGVtIGZvciB1bmlxdWUgY3Vyc29ycyB0byBtYWtlIHN1cmUgdGhleSBpdGVyYXRlIGRlZXBlciBp
bnRvIHRoZSBzZXRzCisgICAgICAgICAgICAgICAgLy8gb2YgcHJpbWFyeSBrZXlzIGFuZC9vciBz
a2lwIHNvbWUgaW5kZXgga2V5cyBhbHRvZ2V0aGVyLgorICAgICAgICAgICAgICAgIGlmIChyZXF1
ZXN0LnJlc3VsdC5kaXJlY3Rpb24uZW5kc1dpdGgoInVuaXF1ZSIpKSB7ICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dE5leHRQcmltYXJ5S2V5ID0gbmV4dFByaW1h
cnlLZXk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdC5kaXJlY3Rpb24u
c3RhcnRzV2l0aCgibmV4dCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TmV4dFBy
aW1hcnlLZXkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TmV4dFByaW1hcnlL
ZXkgPiAxOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TmV4dFByaW1hcnlLZXkg
PSAwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5leHROZXh0UHJpbWFyeUtleS0tOworCisgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TmV4
dFByaW1hcnlLZXkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS5k
ZWxldGUobmV4dE5leHRQcmltYXJ5S2V5KS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiRGVsZXRlZCBrZXkgIiArIG5leHROZXh0UHJp
bWFyeUtleSArICIgZnJvbSBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAKKyAgICAgICAgcmVxdWVzdC5pdGVyYXRlZE9uY2UgPSB0cnVl
OworCisgICAgICAgIGlmIChyZXF1ZXN0LnJlc3VsdCkKKyAgICAgICAgICAgIHJlcXVlc3QucmVz
dWx0LmNvbnRpbnVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0YXJ0TmV4dEN1cnNv
cigpOworICAgIH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAg
IGRlYnVnKCJVbmV4cGVjdGVkIGVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOwor
ICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1bHQpOworICAgICAgICBkb25lKCk7CisgICAg
fSAKK30KKworZnVuY3Rpb24gdGVzdEN1cnNvckRpcmVjdGlvbihpbmRleCwgZGlyZWN0aW9uKQor
eworICAgIHZhciByYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoLUluZmluaXR5KTsKKyAg
ICB2YXIgcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7CisgICAg
c2V0dXBSZXF1ZXN0KHJlcXVlc3QpOworfQorCit2YXIgY3Vyc29yQ29tbWFuZHMgPSBbCisgICAg
InRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgsICdwcmV2dW5pcXVlJykiLAorICAgICJ0ZXN0Q3Vy
c29yRGlyZWN0aW9uKGluZGV4LCAnbmV4dHVuaXF1ZScpIiwKKyAgICAidGVzdEN1cnNvckRpcmVj
dGlvbihpbmRleCwgJ3ByZXYnKSIsCisgICAgInRlc3RDdXJzb3JEaXJlY3Rpb24oaW5kZXgsICdu
ZXh0JykiLAorXTsKKworZnVuY3Rpb24gc3RhcnROZXh0Q3Vyc29yKCkKK3sKKyAgICBpZiAoIWN1
cnNvckNvbW1hbmRzLmxlbmd0aCkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgcG9wdWxhdGVPYmplY3RTdG9yZSgpOworCisgICAgdmFyIGNvbW1h
bmQgPSBjdXJzb3JDb21tYW5kcy5wb3AoKTsKKyAgICBkZWJ1ZygiU3RhcnRpbmcgYSBuZXcgY3Vy
c29yOiAiICsgY29tbWFuZCk7CisgICAgdmFyIHJlcSA9IGluZGV4LmNvdW50KCk7CisgICAgcmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiVGVzdEluZGV4MSBjb3Vu
dCBpczogIiArIHJlcS5yZXN1bHQgKyAiIik7CisgICAgfQorICAgIAorICAgIGV2YWwoY29tbWFu
ZCk7Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIG9iamVjdFN0
b3JlLnB1dCh7IGJhcjogIkEiIH0sIDEpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkEi
IH0sIDIpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkIiIH0sIDMpOworICAgIG9iamVj
dFN0b3JlLnB1dCh7IGJhcjogIkIiIH0sIDQpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjog
IkMiIH0sIDUpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkMiIH0sIDYpOworICAgIG9i
amVjdFN0b3JlLnB1dCh7IGJhcjogIkQiIH0sIDcpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJh
cjogIkQiIH0sIDgpOworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkUiIH0sIDkpOworICAg
IG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkUiIH0sIDEwKTsKKyAgICBvYmplY3RTdG9yZS5wdXQo
eyBiYXI6ICJGIiB9LCAxMSk7CisgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAiRiIgfSwgMTIp
OworICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkciIH0sIDEzKTsKKyAgICBvYmplY3RTdG9y
ZS5wdXQoeyBiYXI6ICJHIiB9LCAxNCk7ICAgIAorICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjog
IkgiIH0sIDE1KTsKKyAgICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJIIiB9LCAxNik7ICAKKyAg
ICBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJJIiB9LCAxNyk7CisgICAgb2JqZWN0U3RvcmUucHV0
KHsgYmFyOiAiSSIgfSwgMTgpOyAgCit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKCJJbmRleEN1cnNvcjNEYXRhYmFzZSIsIDEpOworY3JlYXRlUmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVw
Z3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcg
dmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNh
Y3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgaW5kZXggPSBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgiVGVzdEluZGV4MSIsICJiYXIiKTsKKyAgICAKKyAgICBzdGFydE5leHRDdXJzb3Io
KTsKKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBs
ZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2luZGV4LWdldC1jb3VudC1iYXNpYy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaW5kZXgt
Z2V0LWNvdW50LWJhc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2
ZDVkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2luZGV4LWdldC1jb3VudC1iYXNpYy5qcwpAQCAtMCwwICsxLDYyIEBA
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgbW9zdCBiYXNpYyBvcGVyYXRpb24gb2YgdGhl
IElEQkluZGV4IG1ldGhvZHMgZ2V0KCksIGdldEtleSgpLCBhbmQgY291bnQoKS4iKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWco
bWVzc2FnZSk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVu
KCJJbmRleEdldENvdW50QmFzaWNEYXRhYmFzZSIsIDEpOworCitjcmVhdGVSZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkluaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlv
biA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIGluZGV4ID0gb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoIlRlc3RJbmRleCIsICJiYXIiKTsKKworICAgIG9iamVjdFN0b3JlLnB1dCh7
IGJhcjogImdvb2QiLCBiYXo6ICJiYWQiIH0sICJmb28iKTsKKyAgICAKKyAgICB2YXIgcmVxdWVz
dDEgPSBpbmRleC5nZXQoImdvb2QiKTsKKyAgICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgZGVidWcoImdldCByZXN1bHQgaXM6ICIgKyByZXF1ZXN0MS5yZXN1bHQp
OworICAgICAgICBmb3IgKG4gaW4gcmVxdWVzdDEucmVzdWx0KQorICAgICAgICAgICAgZGVidWco
biArICIgaXMgIiArIHJlcXVlc3QxLnJlc3VsdFtuXSk7CisgICAgfQorCisgICAgcmVxdWVzdDIg
PSBpbmRleC5nZXRLZXkoImdvb2QiKTsKKyAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgZGVidWcoImdldEtleSByZXN1bHQgaXM6ICIgKyByZXF1ZXN0Mi5yZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2YXIgcmVxdWVzdDMgPSBpbmRleC5jb3VudCgpOworICAg
IHJlcXVlc3QzLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiY291bnQg
cmVzdWx0IGlzOiAiICsgcmVxdWVzdDMucmVzdWx0KTsKKyAgICB9CisgICAgICAgIAorICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
YWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlh
bCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdl
IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7
CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvaW5kZXgtZ2V0LWNvdW50LWZhaWx1cmVzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pbmRleC1nZXQtY291bnQtZmFp
bHVyZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUzN2E2YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNv
dXJjZXMvaW5kZXgtZ2V0LWNvdW50LWZhaWx1cmVzLmpzCkBAIC0wLDAgKzEsMTY2IEBACitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVu
IHdoaWxlIGNhbGxpbmcgdGhlIElEQkluZGV4IG1ldGhvZHMgZ2V0KCksIGdldEtleSgpLCBhbmQg
Y291bnQoKS4iKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlv
biBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2lu
ZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleEdldENvdW50RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwor
dmFyIGRhdGFiYXNlOwordmFyIGluZGV4OworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6
IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0
ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0
OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKKyAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0
SW5kZXgiLCAiZm9vIik7CisgICAgCisgICAgdHJ5IHsKKyAgICAgICAgaW5kZXguZ2V0KG51bGwp
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGdldCB3aXRoIGEg
bnVsbCBrZXkiKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBpbmRleC5nZXRLZXkobnVs
bCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gZ2V0S2V5IHdp
dGggYSBudWxsIGtleSIpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGluZGV4LmNvdW50
KG51bGwpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGNvdW50
IHdpdGggYSBudWxsIHJhbmdlIik7CisgICAgfQorICAgIAorICAgIG9iamVjdFN0b3JlLmRlbGV0
ZUluZGV4KCJUZXN0SW5kZXgiKTsKKyAgICAKKyAgICB0cnkgeworICAgICAgICBpbmRleC5nZXQo
InRlc3QiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZGVidWcoIkZhaWxlZCB0byBnZXQg
d2l0aCBkZWxldGVkIElEQkluZGV4Iik7CisgICAgfQorICAgIAorICAgIHRyeSB7CisgICAgICAg
IGluZGV4LmdldEtleSgidGVzdCIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1Zygi
RmFpbGVkIHRvIGdldEtleSB3aXRoIGRlbGV0ZWQgSURCSW5kZXgiKTsKKyAgICB9CisgICAgCisg
ICAgdHJ5IHsKKyAgICAgICAgaW5kZXguY291bnQoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgZGVidWcoIkZhaWxlZCB0byBjb3VudCB3aXRoIGRlbGV0ZWQgSURCSW5kZXgiKTsKKyAgICB9
CisgICAgCisgICAgdHJ5IHsKKyAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoIlRlc3RJ
bmRleCIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGRlbGV0
ZSBhIG5vbmV4aXN0ZW50IElEQkluZGV4Iik7CisgICAgfQorCisgICAgZGF0YWJhc2UuZGVsZXRl
T2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIHRyeSB7CisgICAgICAgIGluZGV4
LmdldChudWxsKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8g
Z2V0IHdpdGggZGVsZXRlZCBJREJPYmplY3RTdG9yZSIpOworICAgIH0KKworICAgIHRyeSB7Cisg
ICAgICAgIGluZGV4LmdldEtleShudWxsKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgIGRl
YnVnKCJGYWlsZWQgdG8gZ2V0S2V5IHdpdGggZGVsZXRlZCBJREJPYmplY3RTdG9yZSIpOworICAg
IH0KKworICAgIHRyeSB7CisgICAgICAgIGluZGV4LmNvdW50KG51bGwpOworICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBjb3VudCB3aXRoIGRlbGV0ZWQgSURCT2Jq
ZWN0U3RvcmUiKTsKKyAgICB9CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMiIpOworICAgIG9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCJUZXN0SW5kZXgiLCAiZm9vIik7CisgICAgICAgIAorICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0
MSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgdHJhbnNhY3Rp
b24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlMiIsICJyZWFkb25seSIp
OworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUyIik7CisgICAgaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4Iik7
CisKKyAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0byBrZWVw
IGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgorICAgIHZh
ciBjYW5GaW5pc2ggPSBmYWxzZTsKKyAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKKyAg
ICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGlmICghY2FuRmluaXNoKQorICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBzcGluR2V0KCk7CisKKyAgICB2YXIgdGVzdFdoaWxlSW5hY3Rp
dmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluZGV4LmdldChu
dWxsKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0
byBnZXQgd2hpbGUgdHJhbnNhY3Rpb24gaW5hY3RpdmUiKTsKKyAgICAgICAgfQorCisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBpbmRleC5nZXRLZXkobnVsbCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gZ2V0S2V5IHdoaWxlIHRyYW5zYWN0
aW9uIGluYWN0aXZlIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAg
aW5kZXguY291bnQobnVsbCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgIGRl
YnVnKCJGYWlsZWQgdG8gY291bnQgd2hpbGUgdHJhbnNhY3Rpb24gaW5hY3RpdmUiKTsKKyAgICAg
ICAgfQorICAgICAgICBjYW5GaW5pc2ggPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBzZXRUaW1l
b3V0KHRlc3RXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWRvbmx5IHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRl
YnVnKCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2tleXBhdGgtYmFzaWMuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2tleXBhdGgtYmFz
aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0YzEzNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMva2V5cGF0aC1iYXNpYy5qcwpAQCAtMCwwICsxLDcwIEBACitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IGNyZWF0ZXMgc29tZSBvYmplY3Qgc3RvcmVzIHdpdGgga2V5cGF0aHMuIEl0IHRoZW4gcHV0
cyBzb21lIHZhbHVlcyBpbiB0aGVtLiBJdCBtYWtlcyBzdXJlIHRoZSBrZXlzIHVzZWQgYXJlIGFz
IGV4cGVjdGVkLiIpOworCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitm
dW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIGNyZWF0ZVJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIktleXBhdGhCYXNpY1Rlc3REYXRhYmFzZSIs
IDEpOworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJz
aW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5l
d1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3Qu
dHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsgICAg
CisgICAgdmFyIG9iamVjdFN0b3JlMSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJPUzEi
LCB7IGtleVBhdGg6ICJmb28iIH0pOworICAgIHZhciBvYmplY3RTdG9yZTIgPSBkYXRhYmFzZS5j
cmVhdGVPYmplY3RTdG9yZSgiT1MyIiwgeyBrZXlQYXRoOiAiZm9vLmJhciIgfSk7CisKKyAgICB2
YXIgb2JqZWN0ID0gbmV3IE9iamVjdDsKKyAgICBvYmplY3Quc3R1ZmYgPSAiYmFyMSI7CisgICAg
b2JqZWN0LmZvbyA9ICJmb28xIjsKKyAgICAgICAgCisgICAgdmFyIHJlcXVlc3QxID0gb2JqZWN0
U3RvcmUxLnB1dChvYmplY3QpOworICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJvYmplY3QgcHV0IFNVQ0NFU1MgLSAi
ICsgcmVxdWVzdDEucmVzdWx0KTsKKyAgICB9CisKKyAgICB2YXIgYXJyYXkgPSB7IGZvbzogImZv
bzIiLCBzdHVmZjogImJhcjIiIH07CisKKyAgICB2YXIgcmVxdWVzdDIgPSBvYmplY3RTdG9yZTEu
cHV0KGFycmF5KTsKKyAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiYXJyYXkgcHV0IFNVQ0NFU1MgLSAiICsgcmVxdWVz
dDIucmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgb2JqZWN0LmZvbyA9IG5ldyBPYmplY3Q7Cisg
ICAgb2JqZWN0LmZvby5iYXIgPSAiYmF6MSI7CisgICAgdmFyIHJlcXVlc3QzID0gb2JqZWN0U3Rv
cmUyLnB1dChvYmplY3QpOworICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJTZWNvbmQgb2JqZWN0IHB1dCBTVUNDRVNT
IC0gIiArIHJlcXVlc3QzLnJlc3VsdCk7CisgICAgfQorCisgICAgYXJyYXkuZm9vID0geyBiYXI6
ICJiYXoyIiB9OworCisgICAgdmFyIHJlcXVlc3Q0ID0gb2JqZWN0U3RvcmUyLnB1dChhcnJheSk7
CisgICAgcmVxdWVzdDQub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgIlNlY29uZCBhcnJheSBwdXQgU1VDQ0VTUyAtICIgKyByZXF1ZXN0NC5y
ZXN1bHQpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBk
b25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiSW5pdGlhbCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25l
KCk7CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXR0cmlidXRlcy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXR0cmli
dXRlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTUzYjdiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1hdHRyaWJ1dGVzLmpzCkBAIC0wLDAgKzEsMTAyIEBACitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0aGUgcmVhZG9ubHkgYXR0cmlidXRlcyBvbiBhbiBJ
REJPYmplY3RTdG9yZS4iKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCit2
YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiT2JqZWN0U3RvcmVBdHRyaWJ1dGVz
VGVzdERhdGFiYXNlIik7CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1l
c3NhZ2UpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordmFyIGRhdGFiYXNlOworCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2
ZW50KQoreworICAgIGRlYnVnKCJGaXJzdCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAi
ICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lv
bik7CisgICAgCisgICAgdmFyIHR4ID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFz
ZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBkZWJ1Zyh0eCArICIgLSAiICsgdHgubW9k
ZSk7CisgICAgZGVidWcoZGF0YWJhc2UpOworCisgICAgdmFyIG9zMSA9IGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUxJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlICwg
a2V5UGF0aDogImZvbyIgfSk7CisgICAgdmFyIG9zMiA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0
b3JlKCdUZXN0T2JqZWN0U3RvcmUyJywgeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9KTsKKworICAg
IGRlYnVnKG9zMS5uYW1lKTsKKyAgICBkZWJ1ZyhvczIubmFtZSk7CisgICAgZGVidWcob3MxLmF1
dG9JbmNyZW1lbnQpOworICAgIGRlYnVnKG9zMi5hdXRvSW5jcmVtZW50KTsKKyAgICBkZWJ1Zyhv
czEua2V5UGF0aCk7CisgICAgZGVidWcob3MyLmtleVBhdGgpOworICAgIGRlYnVnKG9zMS50cmFu
c2FjdGlvbik7CisgICAgZGVidWcob3MyLnRyYW5zYWN0aW9uKTsKKyAgICBkZWJ1ZyhvczEudHJh
bnNhY3Rpb24gPT0gdHgpOworICAgIGRlYnVnKG9zMi50cmFuc2FjdGlvbiA9PSB0eCk7CisgICAg
ZGVidWcob3MxLnRyYW5zYWN0aW9uID09IG9zMi50cmFuc2FjdGlvbik7CisgICAgCisgICAgb3My
LmNyZWF0ZUluZGV4KCJGb28gaW5kZXgiLCAiZm9vIik7CisgICAgb3MyLmNyZWF0ZUluZGV4KCJC
YXIgaW5kZXgiLCAiYmFyIik7CisgICAgCisgICAgdmFyIG5hbWVzID0gb3MyLmluZGV4TmFtZXM7
CisgICAgZGVidWcoIk9iamVjdCBzdG9yZSBoYXMgaW5kZXhlczoiKQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgIGRlYnVnKG5hbWVzW2ldKTsKKyAg
ICAKKyAgICBvczIuY3JlYXRlSW5kZXgoIkJheiBpbmRleCIsICJiYXoiKTsKKyAgICBkZWJ1Zygi
QWZ0ZXIgYWRkaW5nIGFub3RoZXIsIG9iamVjdCBzdG9yZSBub3cgaGFzIGluZGV4ZXM6Iik7Cisg
ICAgbmFtZXMgPSBvczIuaW5kZXhOYW1lczsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVz
Lmxlbmd0aDsgKytpKQorICAgICAgICBkZWJ1ZyhuYW1lc1tpXSk7CisgICAgCisgICAgdHgub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJGaXJzdCB2ZXJzaW9uIGNo
YW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICB0eC5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkZpcnN0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgICAg
ICBjb250aW51ZVRlc3QoKTsKKyAgICB9CisKKyAgICB0eC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoIkZpcnN0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiBjb250aW51ZVRlc3QoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFi
YXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUyIiwgInJlYWRvbmx5Iik7CisgICAgdmFy
IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZTIi
KTsKKyAgICAKKyAgICBkZWJ1ZygiSW4gYSBuZXcgdHJhbnNhY3Rpb24sIG9iamVjdCBzdG9yZSBo
YXMgaW5kZXhlczoiKTsKKyAgICB2YXIgbmFtZXMgPSBvYmplY3RTdG9yZS5pbmRleE5hbWVzOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgIGRlYnVn
KG5hbWVzW2ldKTsKKworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIg
KyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWRvbmx5IHRyYW5z
YWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2Fj
dGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWRvbmx5
IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7
CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVyZXMuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29iamVjdHN0
b3JlLWN1cnNvci1hZHZhbmNlLWZhaWx1cmVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjRiY2VlODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29iamVjdHN0b3JlLWN1cnNvci1hZHZhbmNlLWZh
aWx1cmVzLmpzCkBAIC0wLDAgKzEsMTM5IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzb21l
IG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCQ3Vyc29y
LmFkdmFuY2UoKSBvbiBvYmplY3Qgc3RvcmUgY3Vyc29ycy4iKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9
CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJBZHZhbmNl
RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCitjcmVhdGVSZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkluaXRpYWwgdXBn
cmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2
ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2Fj
dGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50
YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVj
dFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyAr
K2kpCisgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKKyAgICAKKyAg
ICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3Vyc29yID0gcmVxdWVzdC5yZXN1
bHQ7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBhZHZhbmNlIG9i
amVjdCBzdG9yZSBjdXJzb3Igd2l0aCB1bmRlZmluZWQgY291bnQgYXJndW1lbnQiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgwKTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGFkdmFuY2Ug
b2JqZWN0IHN0b3JlIGN1cnNvciB3aXRoICcwJyBjb3VudCBhcmd1bWVudCIpOworICAgICAgICB9
CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKC0xKTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGFkdmFuY2Ugb2Jq
ZWN0IHN0b3JlIGN1cnNvciB3aXRoIG5lZ2F0aXZlIGNvdW50IGFyZ3VtZW50Iik7CisgICAgICAg
IH0KKworICAgICAgICBkYXRhYmFzZS5kZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3Jl
Iik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIGFkdmFuY2Ugb2Jq
ZWN0IHN0b3JlIGN1cnNvciBhZnRlciBkZWxldGluZyBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBvYmplY3Qgc3RvcmUgZm9yIHVzZSBpbiB0aGUg
bmV4dCBzdGFnZSBvZiB0ZXN0aW5nCisgICAgICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3Jl
YXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyArK2kpCisgICAgICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsg
aSwgaSk7CisgICAgfQorICAgIAorICAgIHZhciBvczIgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlMiIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsr
aSkKKyAgICAgICAgb3MyLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKKyAgICAgICAgCisgICAgdmFy
IHJlcXVlc3QyID0gb3MyLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9IHJlcXVlc3QyLnJlc3VsdDsKKyAgICAg
ICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjdXJzb3Iu
YWR2YW5jZSgxKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFp
bGVkIHRvIGFkdmFuY2UgYW4gb2JqZWN0IHN0b3JlIGN1cnNvciB3aGVuIGl0IGlzIGFscmVhZHkg
ZmV0Y2hpbmcgdGhlIG5leHQgcmVjb3JkIik7CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdDIu
b25zdWNjZXNzID0gdW5kZWZpbmVkOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgpOwor
ICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQor
fQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBk
YXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworICAgIHZhciBjdXJzb3IgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CisKKyAgICAv
LyBTcGluIHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZl
IGxvbmcgZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgorICAgIHZhciBjYW5GaW5p
c2ggPSBmYWxzZTsKKyAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgb2Jq
ZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICghY2FuRmluaXNoKQorICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBzcGluR2V0KCk7CisKKyAgICB2YXIgdGVzdFdoaWxlSW5hY3RpdmUgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gYWR2YW5j
ZSBvYmplY3Qgc3RvcmUgY3Vyc29yIHdoaWxlIHRyYW5zYWN0aW9uIGluYWN0aXZlIik7CisgICAg
ICAgIH0KKyAgICAgICAgY2FuRmluaXNoID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgc2V0VGlt
ZW91dCh0ZXN0V2hpbGVJbmFjdGl2ZSwgMCk7CisgICAgCisgICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJyZWFkb25seSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKwor
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBk
ZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVu
dCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3It
Y29udGludWUtZmFpbHVyZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL29iamVjdHN0b3JlLWN1cnNvci1jb250aW51ZS1mYWlsdXJlcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjQ0NTQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vYmplY3Rz
dG9yZS1jdXJzb3ItY29udGludWUtZmFpbHVyZXMuanMKQEAgLTAsMCArMSwxNDMgQEAKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0IGNhbiBoYXBwZW4g
d2hpbGUgY2FsbGluZyBJREJDdXJzb3IuY29udGludWUoKSBvbiBvYmplY3Qgc3RvcmUgY3Vyc29y
cy4iKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25l
KCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7
CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKCJJREJDb250aW51ZUZhaWx1cmVzRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRh
YmFzZTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkg
eworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBl
dmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsK
KworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9u
OworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJl
Y29yZCAiICsgaSwgaSk7CisgICAgCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0OworCisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoLTEpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IGRlYnVnKCJGYWlsZWQgdG8gY29udGludWUgYSAnbmV4dCcgb2JqZWN0IHN0b3JlIGN1cnNvciB0
byBhIGtleSBsZXNzIHRoYW4gdGhlIGN1cnJlbnQga2V5Iik7CisgICAgICAgIH0KKworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKE5hTik7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBjb250aW51ZSBvYmplY3Qgc3Rv
cmUgY3Vyc29yIHdpdGggaW52YWxpZCBrZXkiKTsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGFi
YXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gY29udGludWUgb2JqZWN0IHN0b3JlIGN1cnNvciBh
ZnRlciBkZWxldGluZyBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJl
Y3JlYXRlIHRoZSBvYmplY3Qgc3RvcmUgZm9yIHVzZSBpbiB0aGUgbmV4dCBzdGFnZSBvZiB0ZXN0
aW5nCisgICAgICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRl
c3RPYmplY3RTdG9yZSIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisg
ICAgICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7CisgICAgfQorICAg
IAorICAgIHZhciByZXF1ZXN0MiA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgtSW5maW5pdHkpLCAicHJldiIpOworICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3Vyc29yID0gcmVxdWVzdDIucmVzdWx0OworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKDEwMCk7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBjb250aW51ZSBhICdwcmV2
JyBvYmplY3Qgc3RvcmUgY3Vyc29yIHRvIGEga2V5IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBr
ZXkiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBvczIgPSBkYXRhYmFzZS5jcmVhdGVP
YmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlMiIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTA7ICsraSkKKyAgICAgICAgb3MyLnB1dCgiUmVjb3JkICIgKyBpLCBpKTsKKyAgICAgICAgCisg
ICAgdmFyIHJlcXVlc3QzID0gb3MyLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1ZXN0My5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9IHJlcXVlc3QzLnJlc3VsdDsK
KyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBj
dXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiRmFpbGVkIHRvIGNvbnRpbnVlIGFuIG9iamVjdCBzdG9yZSBjdXJzb3Igd2hlbiBpdCBpcyBh
bHJlYWR5IGZldGNoaW5nIHRoZSBuZXh0IHJlY29yZCIpOworICAgICAgICB9CisgICAgICAgIHJl
cXVlc3QzLm9uc3VjY2VzcyA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFs
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVz
dDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIHRyYW5zYWN0
aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIp
OworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKKyAgICB2YXIgY3Vyc29yID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOwor
CisgICAgLy8gU3BpbiB0aGUgdHJhbnNhY3Rpb24gd2l0aCBnZXQgcmVxdWVzdHMgdG8ga2VlcCBp
dCBhbGl2ZSBsb25nIGVub3VnaCBmb3IgdGhlIHNldFRpbWVvdXQgdG8gZmlyZS4KKyAgICB2YXIg
Y2FuRmluaXNoID0gZmFsc2U7CisgICAgdmFyIHNwaW5HZXQgPSBmdW5jdGlvbigpIHsgCisgICAg
ICAgIG9iamVjdFN0b3JlLmdldCgiZm9vIikub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBpZiAoIWNhbkZpbmlzaCkKKyAgICAgICAgICAgICAgICBzcGluR2V0KCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgc3BpbkdldCgpOworCisgICAgdmFyIHRlc3RXaGlsZUluYWN0aXZl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRv
IGNvbnRpbnVlIG9iamVjdCBzdG9yZSBjdXJzb3Igd2hpbGUgdHJhbnNhY3Rpb24gaW5hY3RpdmUi
KTsKKyAgICAgICAgfQorICAgICAgICBjYW5GaW5pc2ggPSB0cnVlOworICAgIH0KKyAgICAKKyAg
ICBzZXRUaW1lb3V0KHRlc3RXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoInJlYWRvbmx5IHRy
YW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGRlYnVnKCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBk
b25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9y
IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29wZW5jdXJzb3It
ZmFpbHVyZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL29wZW5jdXJzb3ItZmFpbHVyZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzQzNWY2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvb3BlbmN1cnNvci1mYWlsdXJlcy5qcwpAQCAtMCwwICsx
LDE4MyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRo
YXQgY2FuIGhhcHBlbiB3aGlsZSBvcGVuaW5nIGN1cnNvcnMuIik7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOwor
fQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiT3BlbkN1cnNv
ckZhaWx1cmVzRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKK3ZhciBvYmplY3RTdG9yZTsK
K3ZhciBpbmRleDsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
dmVudCkgeworICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAt
ICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJz
aW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5z
YWN0aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBvYmplY3RT
dG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAg
ICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5kZXgiLCAiYmFyIik7Cisg
ICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJiYXIiIH0sICJmb28iKTsK
KworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKE5hTik7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBvcGVuIG9iamVjdCBzdG9yZSBjdXJz
b3Igd2l0aCBpbnZhbGlkIGtleXBhdGgiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoImZvbyIsICJpbnZhbGlk
IGRpcmVjdGlvbiIpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJG
YWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUgY3Vyc29yIHdpdGggaW52YWxpZCBkaXJlY3Rpb24i
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluZGV4
Lm9wZW5DdXJzb3IoTmFOKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIHdpdGggaW52YWxpZCBrZXlwYXRoIik7Cisg
ICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigi
Zm9vIiwgImludmFsaWQgZGlyZWN0aW9uIik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgZGVidWcoIkZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciB3aXRoIGludmFsaWQgZGly
ZWN0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5kZXgu
b3BlbktleUN1cnNvcihOYU4pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBrZXkgY3Vyc29yIHdpdGggaW52YWxpZCBrZXlwYXRo
Iik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5kZXgub3Blbktl
eUN1cnNvcigiZm9vIiwgImludmFsaWQgZGlyZWN0aW9uIik7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Igd2l0
aCBpbnZhbGlkIGRpcmVjdGlvbiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkYXRh
YmFzZS5kZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIAorICAg
ICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gb3BlbiBvYmplY3Qg
c3RvcmUgY3Vyc29yIG9uIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgZGVidWcoIkZhaWxlZCB0byBvcGVuIGluZGV4
IGN1cnNvciBvbiBkZWxldGVkIG9iamVjdCBzdG9yZSIpOworICAgICAgICB9CisKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGluZGV4Lm9wZW5LZXlDdXJzb3IoKTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNv
ciBvbiBkZWxldGVkIG9iamVjdCBzdG9yZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAvLyBSZWNyZWF0ZSB0aGUgb2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBo
YXNlIDIuCisgICAgICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUo
IlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCJUZXN0SW5kZXgiLCAiYmFyIik7CisgICAgICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjog
ImJhciIgfSwgImZvbyIpOworICAgIH0KKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAg
ICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRlYnVnKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30K
KworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgb2JqZWN0
U3RvcmUub3BlbkN1cnNvcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBkZWJ1ZygiRmFp
bGVkIHRvIG9wZW4gb2JqZWN0IHN0b3JlIGN1cnNvciBmcm9tIGNvbXBsZXRlZCB0cmFuc2FjdGlv
biIpOworICAgIH0KKyAgICAKKyAgICB0cnkgeworICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBj
dXJzb3IgZnJvbSBjb21wbGV0ZWQgdHJhbnNhY3Rpb24iKTsKKyAgICB9CisKKyAgICB0cnkgewor
ICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29yKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAg
IGRlYnVnKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBrZXkgY3Vyc29yIGZyb20gY29tcGxldGVkIHRy
YW5zYWN0aW9uIik7CisgICAgfQorICAgICAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRh
YmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAgb2Jq
ZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7Cisg
ICAgaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgiVGVzdEluZGV4Iik7CisKKyAgICAvLyBTcGlu
IHRoZSB0cmFuc2FjdGlvbiB3aXRoIGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcg
ZW5vdWdoIGZvciB0aGUgc2V0VGltZW91dCB0byBmaXJlLgorICAgIHZhciBjYW5GaW5pc2ggPSBm
YWxzZTsKKyAgICB2YXIgc3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgb2JqZWN0U3Rv
cmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICgh
Y2FuRmluaXNoKQorICAgICAgICAgICAgICAgIHNwaW5HZXQoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBzcGluR2V0KCk7CisKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkg
eworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gb3BlbiBv
YmplY3Qgc3RvcmUgY3Vyc29yIGZyb20gaW5hY3RpdmUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAg
fQorICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJGYWlsZWQgdG8gb3BlbiBp
bmRleCBjdXJzb3IgZnJvbSBpbmFjdGl2ZSB0cmFuc2FjdGlvbiIpOworICAgICAgICB9CisKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluZGV4Lm9wZW5LZXlDdXJzb3IoKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5
IGN1cnNvciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAg
Y2FuRmluaXNoID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgc2V0VGltZW91dChnZXRXaGlsZUlu
YWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJv
cnQiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJyZWFkb25seSB0
cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJh
bnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJyZWFk
b25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0YWJhc2Ut
cmVxdWVzdC1ldmVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGQ3
NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL3Jlc291cmNlcy9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5qcwpAQCAtMCwwICsxLDQ1
IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNhbGxzIG9wZW4gb24gd2luZG93LmluZGV4ZWRE
QiBpbiB2YXJpb3VzIHdheXMsIHZlcmlmeWluZyB0aGF0IElEQk9wZW5EQlJlcXVlc3Qgb2JqZWN0
cyBhcmUgcmV0dXJuZWQgd2hlbiBleHBlY3RlZCBhbmQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHdo
ZW4gZXhwZWN0ZWQuIik7CisKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisK
K2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0cnkgeworICAg
IHdpbmRvdy5pbmRleGVkREIub3BlbigiVGVzdERhdGFiYXNlIiwgMCk7Cit9IGNhdGNoIChlKSB7
CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkNhdWdodCBleGNlcHRpb24gIiArIGUpOworfQorCit0
cnkgeworICAgIHdpbmRvdy5pbmRleGVkREIub3BlbigiVGVzdERhdGFiYXNlIiwgLTEpOworfSBj
YXRjaCAoZSkgeworICAgIGRlYnVnKCJBTEVSVDogIiArICJDYXVnaHQgZXhjZXB0aW9uICIgKyBl
KTsKK30KKwordmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRlc3REYXRhYmFz
ZSIpOworZGVidWcoIkFMRVJUOiAiICsgcmVxdWVzdCk7CisKK3JlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKQoreworCWRlYnVnKCJBTEVSVDogIiArICJzdWNjZXNzIik7CisJZG9uZSgpOwor
fQorcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKK3sKKwlkZWJ1ZygiQUxFUlQ6ICIgKyAi
ZXJyb3IgIiArIGUpOworCWRvbmUoKTsKK30KKworcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihlKQoreworICAgIGRlYnVnKCJBTEVSVDogIiArICJ1cGdyYWRlbmVlZGVkOiBvbGQg
dmVyc2lvbiAtICIgKyBlLm9sZFZlcnNpb24gKyAiIG5ldyB2ZXJzaW9uIC0gIiArIGUubmV3VmVy
c2lvbik7CisJZG9uZSgpOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29wZW5kYXRhYmFzZS1yZXF1ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0YWJhc2UtcmVx
dWVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzEzOWI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9vcGVuZGF0YWJhc2UtcmVxdWVzdC5qcwpAQCAtMCwwICsxLDMzIEBACitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGNhbGxzIG9wZW4gb24gd2luZG93LmluZGV4ZWREQiBpbiB2YXJpb3VzIHdh
eXMsIHZlcmlmeWluZyB0aGF0IElEQk9wZW5EQlJlcXVlc3Qgb2JqZWN0cyBhcmUgcmV0dXJuZWQg
d2hlbiBleHBlY3RlZCBhbmQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHdoZW4gZXhwZWN0ZWQuIik7
CisKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUo
KQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRl
eGVkREIub3BlbigiVGVzdERhdGFiYXNlIik7CitkZWJ1ZygiQUxFUlQ6ICIgKyByZXF1ZXN0KTsK
KworcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiIik7CitkZWJ1ZygiQUxFUlQ6ICIg
KyByZXF1ZXN0KTsKKwordHJ5IHsKKwl2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Bl
bigpOworfSBjYXRjaCAoZSkgeworCWRlYnVnKCJBTEVSVDogIiArIGUpOworfQorCit0cnkgewor
CXZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJuYW1lIiwgMCk7Cit9IGNhdGNo
IChlKSB7CisJZGVidWcoIkFMRVJUOiAiICsgZSk7Cit9CisKK2RvbmUoKTsKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0
YWJhc2Utc3VjY2Vzcy1hZnRlci12ZXJzaW9uY2hhbmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9vcGVuZGF0YWJhc2Utc3VjY2Vzcy1hZnRlci12
ZXJzaW9uY2hhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MThi
ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL29wZW5kYXRhYmFzZS1zdWNjZXNzLWFmdGVyLXZlcnNpb25jaGFuZ2UuanMK
QEAgLTAsMCArMSw1NiBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0OiBc
CisgICAgLSBPcGVuaW5nIGEgbmV3IGRhdGFiYXNlIHJlc3VsdHMgaW4gdGhlIG9udXBncmFkZW5l
ZWRlZCBoYW5kbGVyIGJlaW5nIGNhbGxlZCBvbiB0aGUgSURCT3BlbkRCUmVxdWVzdC4gXAorICAg
IC0gVGhlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gcmVwcmVzZW50aW5nIHRoZSB1cGdyYWRl
IGNvbW1pdHMgc3VjY2Vzc2Z1bGx5LiBcCisgICAgLSBBZnRlciB0aGF0IHRyYW5zYWN0aW9uIGNv
bW1pdHMsIHRoZSBvbnN1Y2Nlc3MgaGFuZGxlciBvbiB0aGUgb3JpZ2luYWwgSURCT3BlbkRCUmVx
dWVzdCBpcyBjYWxsZWQuIik7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKwor
ZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIGRlYnVnKG1lc3NhZ2UpOworfQorCit2YXIgcmVxdWVzdCA9IHdp
bmRvdy5pbmRleGVkREIub3BlbigiT3BlbkRhdGFiYXNlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5n
ZURhdGFiYXNlIik7CisKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKQoreworICAgIGRl
YnVnKCJHb3QgdGhlIG9uc3VjY2VzcyBoYW5kbGVyIGFzIGV4cGVjdGVkLiIpOworCWRvbmUoKTsK
K30KK3JlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCit7CisgICAgZGVidWcoIlVuZXhwZWN0
ZWQgb25lcnJvciBoYW5kbGVyIGNhbGxlZCIpOworCWRvbmUoKTsKK30KKworcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQoreworICAgIGRlYnVnKCJ1cGdyYWRlbmVlZGVkOiBv
bGQgdmVyc2lvbiAtICIgKyBlLm9sZFZlcnNpb24gKyAiIG5ldyB2ZXJzaW9uIC0gIiArIGUubmV3
VmVyc2lvbik7CisgICAgZGVidWcocmVxdWVzdC50cmFuc2FjdGlvbik7CisgICAgCisgICAgcmVx
dWVzdC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
ZGVidWcoIlZlcnNpb24gY2hhbmdlIGNvbXBsZXRlIik7CisgICAgfQorICAgIAorICAgIHJlcXVl
c3QudHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVn
KCJWZXJzaW9uIGNoYW5nZSB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisgICAgCisgICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgZGVidWcoIlZlcnNpb24gY2hhbmdlIHVuZXhwZWN0ZWQgZXJyb3IiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL29wZW5kYXRhYmFzZS12ZXJzaW9ucy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvb3BlbmRh
dGFiYXNlLXZlcnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNh
NWFkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL29wZW5kYXRhYmFzZS12ZXJzaW9ucy5qcwpAQCAtMCwwICsxLDEzOCBA
QAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdpdGggdGhl
IGRlZmF1bHQgdmVyc2lvbiwgY29tbWl0cyB0aGF0IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24s
IGFuZCB0aGVuIHJlb3BlbnMgaXQgYXQgZGlmZmVyZW50IHZlcnNpb25zIHRvIG1ha2Ugc3VyZSB0
aGUgSURCT3BlbkRCUmVxdWVzdHMgYmVoYXZlIGFwcHJvcHJpYXRlbHkuIik7CisKKworCitmdW5j
dGlvbiBsb2cobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5p
bm5lckhUTUwgKz0gbXNnICsgIiI7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFy
IHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlZlcnNpb25UZXN0RGF0YWJhc2UiKTsK
K2RlYnVnKHJlcXVlc3QgKyAiIChmaXJzdFBoYXNlKSIpOworCityZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiRmlyc3QgdmVyc2lvbiBjaGFuZ2Ugc3VjY2Vzc2Z1
bCIpOworfQorcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKK3sKKyAgICBkZWJ1ZygiT3Bl
biByZXF1ZXN0IGVycm9yIChmaXJzdFBoYXNlKSAiICsgcmVxdWVzdC5lcnJvci5uYW1lKTsKK30K
KworcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQoreworICAgIHZhciBkYXRh
YmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBkZWJ1ZygidXBncmFkZW5lZWRlZCAo
Zmlyc3RQaGFzZSk6IG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIgbmV3IHZlcnNp
b24gLSAiICsgZS5uZXdWZXJzaW9uKTsKKyAgICBkZWJ1ZyhyZXF1ZXN0LnRyYW5zYWN0aW9uKTsK
KyAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBkZWJ1ZygiVmVyc2lvbiBjaGFuZ2UgY29tcGxldGUgKGZpcnN0UGhhc2UpLiBEYXRh
YmFzZSB2ZXJzaW9uIGlzIG5vdyAtICIgKyBkYXRhYmFzZS52ZXJzaW9uKTsKKyAgICAgICAgZGF0
YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgc2Vjb25kUGhhc2UoKTsKKyAgICB9CisgICAgcmVxdWVz
dC50cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWco
IlZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQhIChmaXJzdFBoYXNl
KSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25l
cnJvciA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCJWZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yISAoZmlyc3RQaGFzZSkiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gc2Vjb25kUGhhc2UoKQoreworICAgIHZhciByZXF1
ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9uVGVzdERhdGFiYXNlIiwgMSk7Cisg
ICAgZGVidWcocmVxdWVzdCArICIgKHNlY29uZFBoYXNlKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvcGVu
ZWQgZGF0YWJhc2UgYXQgdmVyc2lvbiAxIChzZWNvbmRQaGFzZSkiKTsKKyAgICAgICAgcmVxdWVz
dC5yZXN1bHQuY2xvc2UoKTsKKyAgICAgICAgcmVxdWVzdC5yZXN1bHQuY2xvc2UoKTsgLy8gQ2xv
c2UgaXQgdHdpY2UganVzdCBmb3IgdGhlIGhlY2sgb2YgaXQKKyAgICAgICAgdGhpcmRQaGFzZSgp
OworICAgIH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAg
ICAgZGVidWcoIlVuZXhwZWN0ZWQgZXJyb3IgKHNlY29uZFBoYXNlKSIgKyBlKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUp
CisgICAgeworICAgIAlkZWJ1ZygiVW5leHBlY3RlZCB1cGdyYWRlIG5lZWRlZCAoc2Vjb25kUGhh
c2UpIiArIGUpOworICAgIAlkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0aGlyZFBoYXNl
KCkKK3sKKyAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVmVyc2lvblRl
c3REYXRhYmFzZSIsIDIpOworICAgIGRlYnVnKHJlcXVlc3QgKyAiICh0aGlyZFBoYXNlKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWco
IlZlcnNpb24gY2hhbmdlIHRvIHZlcnNpb24gMiBzdWNjZXNzZnVsIik7CisgICAgfQorICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiT3BlbiBy
ZXF1ZXN0IGVycm9yICh0aGlyZFBoYXNlKSAiICsgcmVxdWVzdC5lcnJvci5uYW1lKTsKKyAgICB9
CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAg
ICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgICAgICBkZWJ1Zygi
dXBncmFkZW5lZWRlZCAodGhpcmRQaGFzZSk6IG9sZCB2ZXJzaW9uIC0gIiArIGUub2xkVmVyc2lv
biArICIgbmV3IHZlcnNpb24gLSAiICsgZS5uZXdWZXJzaW9uKTsKKyAgICAgICAgZGVidWcocmVx
dWVzdC50cmFuc2FjdGlvbik7CisgICAgICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlZlcnNpb24gY2hh
bmdlIGNvbXBsZXRlICh0aGlyZFBoYXNlKS4gRGF0YWJhc2UgdmVyc2lvbiBpcyBub3cgLSAiICsg
ZGF0YWJhc2UudmVyc2lvbik7CisgICAgICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgICAg
ICAgICAgZm91cnRoUGhhc2UoKTsKKyAgICAgICAgfQorICAgICAgICByZXF1ZXN0LnRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJW
ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ISAodGhpcmRQaGFzZSki
KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgICAgICByZXF1ZXN0LnRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJWZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yISAodGhpcmRQaGFz
ZSkiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0gCit9CisKK2Z1bmN0
aW9uIGZvdXJ0aFBoYXNlKCkKK3sKKyAgICAvLyBXZSd2ZSB1cGdyYWRlZCB0byB2ZXJzaW9uIDIs
IHNvIHZlcnNpb24gMSBzaG91bGQgbm90IGJlIG9wZW5hYmxlLgorICAgIHZhciByZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9uVGVzdERhdGFiYXNlIiwgMSk7CisgICAgZGVi
dWcocmVxdWVzdCArICIgKGZvdXJ0aFBoYXNlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVidWcoIlVuZXhwZWN0ZWQgc3VjY2VzcyAoZm91
cnRoUGhhc2UpIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCJFeHBlY3RlZCBlcnJvciAoZm91
cnRoUGhhc2UpIC0gIiArIHJlcXVlc3QuZXJyb3IubmFtZSk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQorICAgIHsKKyAg
ICAgICAgZGVidWcoIlVuZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAoZm91cnRoUGhhc2UpIik7Cisg
ICAgICAgIGRvbmUoKTsKKyAgICB9IAorfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvcmVxdWVzdC1yZWFkeXN0YXRlLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9yZXF1ZXN0LXJl
YWR5c3RhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVlZjFkYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9y
ZXNvdXJjZXMvcmVxdWVzdC1yZWFkeXN0YXRlLmpzCkBAIC0wLDAgKzEsNjAgQEAKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IElEQlJlcXVlc3QucmVhZHlTdGF0ZSByZXR1
cm5zIGV4cGVjdGVkIHZhbHVlcy4iKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
fQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgZGVidWcobWVzc2FnZSk7Cit9CisKK3ZhciBjcmVhdGVS
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJSZXF1ZXN0UmVhZHlTdGF0ZURhdGFiYXNl
IiwgMSk7CitkZWJ1ZygiQWZ0ZXIgY2FsbGluZyBpbmRleGVkREIub3BlbigpLCBjcmVhdGUgcmVx
dWVzdCByZWFkeVN0YXRlIGlzOiAiICsgY3JlYXRlUmVxdWVzdC5yZWFkeVN0YXRlKTsKKworY3Jl
YXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVn
KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJz
aW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKyAgICBkZWJ1Zygi
Q3JlYXRlIHJlcXVlc3QgcmVhZHlTdGF0ZSBpczogIiArIGNyZWF0ZVJlcXVlc3QucmVhZHlTdGF0
ZSk7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2Fj
dGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBv
YmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUi
KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKQorICAgICAgICBvYmplY3RTdG9y
ZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7CisgICAgCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKCk7CisgICAgZGVidWcoIkFmdGVyIGNhbGxpbmcgb3BlbkN1cnNvciwg
cmVxdWVzdCByZWFkeVN0YXRlIGlzOiAiICsgcmVxdWVzdC5yZWFkeVN0YXRlKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1ZygiQWZ0ZXIgc3VjY2Vz
c2Z1bCBvcGVuaW5nIG9mIHRoZSBjdXJzb3IsIHJlcXVlc3QgcmVhZHlTdGF0ZSBpczogIiArIHJl
cXVlc3QucmVhZHlTdGF0ZSk7CisKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBZnRlciBjb250aW51ZSgpIGNvbXBsZXRlZCwgcmVx
dWVzdCByZWFkeVN0YXRlIGlzOiAiICsgcmVxdWVzdC5yZWFkeVN0YXRlKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJlcXVlc3QucmVzdWx0LmNvbnRpbnVlKCk7CisgICAgICAgIGRlYnVnKCJBZnRl
ciBjYWxsaW5nIGNvbnRpbnVlKCksIHJlcXVlc3QgcmVhZHlTdGF0ZSBpczogIiArIHJlcXVlc3Qu
cmVhZHlTdGF0ZSk7CisgICAgfQorICAgICAgICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5v
bmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKwor
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tc2NoZWR1bGVyLTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0xLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzY2RmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNj
aGVkdWxlci0xLmpzCkBAIC0wLDAgKzEsMTE4IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCB0d28gcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB0byBhbiBvYmplY3Qgc3Rv
cmUgYXJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lLiIpOworCisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5z
YWN0aW9uU2NoZWR1bGVyMURhdGFiYXNlIik7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVXBncmFkZSBu
ZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9u
IC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9
IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImZvbyIsICJiYXIiKTsKKworICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJwdXQgRkFJTEVEIC0gIiArIGV2ZW50KTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0K
KworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29t
cGxldGVkIik7CisgICAgICAgIGNvbnRpbnVlVGVzdCgpOworICAgICAgICBkYXRhYmFzZS5jbG9z
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gZXJyb3InZWQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiBjb250aW51ZVRlc3QoKQoreworICAgIHZhciByZXF1ZXN0MSA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiVHJhbnNhY3Rpb25TY2hlZHVsZXIxRGF0YWJhc2UiLCAxKTsKKyAgICB2
YXIgcmVxdWVzdDIgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVy
MURhdGFiYXNlIiwgMSk7CisKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVzdDEsICJyZXF1ZXN0IDEi
KTsKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVzdDIsICJyZXF1ZXN0IDIiKTsKK30KKworZnVuY3Rp
b24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QsIHJlcU5hbWUpCit7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU3VjY2Vz
cyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSAiICsgcmVxTmFtZSk7CisgICAgICAgIHZh
ciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgCisgICAgICAgIHN0YXJ0VHJh
bnNhY3Rpb25Mb29wKGV2ZW50LnRhcmdldC5yZXN1bHQudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RT
dG9yZSIsICJyZWFkb25seSIpLCB0cnVlKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQg
ZXJyb3IgLSAiICsgcmVxTmFtZSArICIgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyByZXFOYW1lICsgIiAt
ICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
VW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIC0gIiArIHJlcU5hbWUgKyAiIC0gIiArIGV2ZW50KTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0gCit9CisKK3ZhciBudW1iZXJPZk9wZW5UcmFuc2FjdGlv
bnMgPSAwOworCitmdW5jdGlvbiBzdGFydFRyYW5zYWN0aW9uTG9vcCh0cmFuc2FjdGlvbiwgaXNG
aXJzdFRpbWUpCit7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0
KCJiYXIiKTsKKyAgICAKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGlmIChpc0ZpcnN0VGltZSkKKyAgICAgICAgICAgIG51bWJlck9mT3BlblRyYW5z
YWN0aW9ucysrOworICAgICAgICAKKyAgICAgICAgaWYgKG51bWJlck9mT3BlblRyYW5zYWN0aW9u
cyA9PSAyKSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVHdvIHRyYW5zYWN0aW9u
cyBvcGVuIGF0IG9uY2UuIFlheS4iKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQor
ICAgICAgICBzdGFydFRyYW5zYWN0aW9uTG9vcChldmVudC50YXJnZXQudHJhbnNhY3Rpb24sIGZh
bHNlKTsKKyAgICB9CisKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVW5leHBlY3RlZCByZXF1ZXN0IGVycm9yIC0gIiAr
IGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVW5leHBl
Y3RlZCB0cmFuc2FjdGlvbiBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgLS1udW1iZXJPZk9wZW5UcmFuc2FjdGlvbnM7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiAr
ICJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGFib3J0IC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAtLW51bWJlck9mT3BlblRyYW5zYWN0aW9uczsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQp
OworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVy
LTIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLXNjaGVkdWxlci0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgzNzg5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0yLmpzCkBAIC0wLDAg
KzEsMTI0IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0d28gcmVh
ZC1vbmx5IHRyYW5zYWN0aW9ucyB0byB0d28gZGlmZmVyZW50IG9iamVjdCBzdG9yZXMgYXJlIGFj
dGl2ZSBhdCB0aGUgc2FtZSB0aW1lLiIpOworCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2No
ZWR1bGVyMkRhdGFiYXNlIik7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVXBncmFkZSBuZWVkZWQ6IE9s
ZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2
ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJl
cXVlc3QudHJhbnNhY3Rpb247CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiT1Mx
Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImZvbzEiLCAiYmFyMSIpOwor
CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgInB1dDEgRkFJTEVEIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKyAgICAKKyAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3Jl
KCJPUzIiKTsKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJmb28yIiwgImJhcjIiKTsK
KworICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVn
KCJBTEVSVDogIiArICJwdXQyIEZBSUxFRCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsK
KyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJU
OiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAgICAgIGNv
bnRpbnVlVGVzdCgpOworICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgIH0KKworICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVi
dWcoIkFMRVJUOiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsg
ZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRl
c3QoKQoreworICAgIHZhciByZXF1ZXN0MSA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVHJhbnNh
Y3Rpb25TY2hlZHVsZXIyRGF0YWJhc2UiLCAxKTsKKyAgICB2YXIgcmVxdWVzdDIgPSB3aW5kb3cu
aW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyMkRhdGFiYXNlIiwgMSk7CisKKyAg
ICBzZXR1cFJlcXVlc3QocmVxdWVzdDEsICJPUzEiKTsKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVz
dDIsICJPUzIiKTsKK30KKworZnVuY3Rpb24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QsIG9zbmFtZSkK
K3sKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRl
YnVnKCJBTEVSVDogIiArICJTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbiAtIFN0
YXJ0aW5nIHRyYW5zYWN0aW9uIHRvIE9iamVjdFN0b3JlICIgKyBvc25hbWUpOworICAgICAgICBz
dGFydFRyYW5zYWN0aW9uTG9vcChldmVudC50YXJnZXQucmVzdWx0LnRyYW5zYWN0aW9uKG9zbmFt
ZSwgInJlYWRvbmx5IiksIG9zbmFtZSwgdHJ1ZSk7CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJVbmV4cGVj
dGVkIGVycm9yIC0gIiArIG9zbmFtZSArICIgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7
CisgICAgfQorICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyBvc25hbWUgKyAi
IC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiAr
ICJVbmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgb3NuYW1lICsgIiAtICIgKyBldmVudCk7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9IAorfQorCit2YXIgbnVtYmVyT2ZPcGVuVHJhbnNhY3Rp
b25zID0gMDsKKworZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbkxvb3AodHJhbnNhY3Rpb24sIG9z
bmFtZSwgaXNGaXJzdFRpbWUpCit7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUob3NuYW1lKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgi
YmFyIik7CisgICAgCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBpZiAoaXNGaXJzdFRpbWUpCisgICAgICAgICAgICBudW1iZXJPZk9wZW5UcmFuc2Fj
dGlvbnMrKzsKKyAgICAgICAgCisgICAgICAgIGlmIChudW1iZXJPZk9wZW5UcmFuc2FjdGlvbnMg
PT0gMikgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlR3byB0cmFuc2FjdGlvbnMg
b3BlbiBhdCBvbmNlLiBZYXkuIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAg
ICAgICAgc3RhcnRUcmFuc2FjdGlvbkxvb3AoZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLCBvc25h
bWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVW5leHBlY3RlZCByZXF1ZXN0IGVycm9y
IC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
VW5leHBlY3RlZCB0cmFuc2FjdGlvbiBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgLS1udW1iZXJPZk9wZW5UcmFuc2FjdGlvbnM7CisgICAgICAgIGRlYnVnKCJBTEVS
VDogIiArICJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGFib3J0IC0gIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAtLW51bWJlck9mT3BlblRyYW5zYWN0aW9uczsKKyAgICAgICAg
ZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gY29tcGxldGUgLSAiICsg
ZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2No
ZWR1bGVyLTMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQ5YTNmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0zLmpzCkBA
IC0wLDAgKzEsMTM5IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBh
IHdyaXRlIHRyYW5zYWN0aW9uIGlzIGJsb2NrZWQgYnkgYSByZWFkIHRyYW5zYWN0aW9uIHdpdGgg
b3ZlcmxhcHBpbmcgc2NvcGUuIEl0IGFsc28gbWFrZXMgc3VyZSB0aGUgd3JpdGUgdHJhbnNhY3Rp
b24gc3RhcnRzIGFmdGVyIHRoZSByZWFkIHRyYW5zYWN0aW9uIGNvbXBsZXRlcy4iKTsKKworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4
ZWREQi5vcGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjNEYXRhYmFzZSIpOworCitjcmVhdGVSZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoIkFMRVJU
OiAiICsgIlVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9u
ICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJz
aW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRh
YmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJh
c2UuY3JlYXRlT2JqZWN0U3RvcmUoIk9TIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5wdXQoImJhciIsICJmb28iKTsKKworICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJwdXQgRkFJTEVEIC0gIiArIGV2ZW50
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQor
CisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21w
bGV0ZWQiKTsKKyAgICAgICAgY29udGludWVUZXN0KCk7CisgICAgICAgIGRhdGFiYXNlLmNsb3Nl
KCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAidmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisK
K3ZhciBzZWNvbmREYXRhYmFzZUNvbm5lY3Rpb247CitmdW5jdGlvbiBjb250aW51ZVRlc3QoKQor
eworICAgIHZhciBsb25nUnVubmluZ1JlYWRSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVu
KCJUcmFuc2FjdGlvblNjaGVkdWxlcjNEYXRhYmFzZSIsIDEpOworICAgIGxvbmdSdW5uaW5nUmVh
ZFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRpbmcg
cmVhZG9ubHkgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgc2Vjb25kRGF0YWJhc2VDb25uZWN0aW9u
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgcmVhZFRyYW5zYWN0aW9uTG9vcChzZWNv
bmREYXRhYmFzZUNvbm5lY3Rpb24udHJhbnNhY3Rpb24oIk9TIiwgInJlYWRvbmx5IiksIHRydWUp
OworICAgIH0KKyAgICBsb25nUnVubmluZ1JlYWRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiTG9uZyBydW5uaW5nIHJlYWQgcmVx
dWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAg
IH0KKyAgICBsb25nUnVubmluZ1JlYWRSZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJMb25nIHJ1bm5pbmcgcmVhZCByZXF1ZXN0
IHVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9
CisgICAgbG9uZ1J1bm5pbmdSZWFkUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiTG9uZyBydW5uaW5nIHJlYWQgcmVx
dWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25l
KCk7CisgICAgfSAKK30KKwordmFyIHNob3VsZEVuZFJlYWRUcmFuc2FjdGlvbiA9IGZhbHNlOwor
CitmdW5jdGlvbiByZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBpc0ZpcnN0VGltZSkK
K3sKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiT1MiKTsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgiZm9vIik7CisgICAgCisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoIXNob3VsZEVu
ZFJlYWRUcmFuc2FjdGlvbikKKyAgICAgICAgICAgIHJlYWRUcmFuc2FjdGlvbkxvb3AoZXZlbnQu
dGFyZ2V0LnRyYW5zYWN0aW9uLCBmYWxzZSk7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhh
dCB0aGUgcmVhZCB0cmFuc2FjdGlvbiBpcyBvcGVuLCB0aGUgd3JpdGUgdHJhbnNhY3Rpb24gY2Fu
IGJlIHN0YXJ0ZWQsIGJ1dCBpdCB3aWxsIGJlIGJsb2NrZWQgdG8gc3RhcnQgd2l0aC4KKyAgICAg
ICAgaWYgKGlzRmlyc3RUaW1lKQorICAgICAgICAgICAgIHN0YXJ0V3JpdGVUcmFuc2FjdGlvbigp
CisgICAgfQorCisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQgcmVxdWVzdCBlcnJvciAtICIgKyBldmVu
dCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQg
dHJhbnNhY3Rpb24gZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQor
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRl
YnVnKCJBTEVSVDogIiArICJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGFib3J0IC0gIiArIGV2ZW50
KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiUmVhZCB0cmFu
c2FjdGlvbiBjb21wbGV0ZSAtICIgKyBldmVudCk7CisgICAgfQorfQorCitmdW5jdGlvbiBzdGFy
dFdyaXRlVHJhbnNhY3Rpb24oKQoreworICAgIGRlYnVnKCJBTEVSVDogIiArICJDcmVhdGluZyB3
cml0ZSB0cmFuc2FjdGlvbiIpOworICAgIHZhciB0cmFuc2FjdGlvbiA9IHNlY29uZERhdGFiYXNl
Q29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MiLCAicmVhZHdyaXRlIik7CisgICAgdmFyIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIk9TIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJheiIsICJmb28iKTsKKworICAgIHNldFRpbWVvdXQoInNob3Vs
ZEVuZFJlYWRUcmFuc2FjdGlvbiA9IHRydWU7IiwgMCk7CisKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJXcml0ZSB0
cmFuc2FjdGlvbiBwdXQgc3VjY2VzcyIpOworICAgIH0KKworICAgIHJlcXVlc3Qub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJXcml0ZSB0cmFu
c2FjdGlvbiBwdXQgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIldyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
ZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDog
IiArICJXcml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IC0gIiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiV3JpdGUgdHJhbnNhY3Rp
b24gY29tcGxldGUgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci01LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNmVmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXNjaGVkdWxlci01LmpzCkBAIC0wLDAgKzEsMTY0IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNyZWF0ZXMgdHdvIG9iamVjdCBzdG9yZXMuIFwKK0l0IHRoZW4gb3BlbnMgdHdvIGxvbmcgcnVu
bmluZyByZWFkLW9ubHkgdHJhbnNhY3Rpb25zLCBvbmUgcGVyIG9iamVjdCBzdG9yZS4gXAorSXQg
dGhlbiBvcGVucyBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gdG8gYm90aCBvYmplY3Qgc3RvcmVz
LiBcCitUaGUgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyBib3RoIG5lZWQgdG8gZmluaXNoIGJlZm9y
ZSB0aGUgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiBzdGFydHMuIik7CisKKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Blbigi
VHJhbnNhY3Rpb25TY2hlZHVsZXI1RGF0YWJhc2UiKTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJBTEVSVDogIiArICJVcGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVu
dC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9i
amVjdFN0b3JlKCJPUzEiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
IiwgImZvbyIpOworCisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgZGVidWcoIkFMRVJUOiAiICsgImZpcnN0IHB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgiT1MyIik7CisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
IiwgImZvbyIpOworICAgIAorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJzZWNvbmQgcHV0IEZBSUxFRCAtICIgKyBldmVu
dCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlZCIpOworICAgICAgICBjb250aW51ZVRlc3QoKTsKKyAgICAgICAgZGF0YWJhc2Uu
Y2xvc2UoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGVycm9yJ2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0K
K30KKwordmFyIHNlY29uZERhdGFiYXNlQ29ubmVjdGlvbjsKK3ZhciByZWFkV3JpdGVUcmFuc2Fj
dGlvbjsKKworZnVuY3Rpb24gc2V0dXBSZWFkVHJhbnNhY3Rpb25DYWxsYmFja3ModHJhbnNhY3Rp
b24pCit7CisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGVycm9yIC0gIiAr
IGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVW5leHBl
Y3RlZCB0cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlJlYWQgdHJhbnNhY3Rpb24gY29tcGxldGUgLSAiICsg
ZXZlbnQpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLmhhc0RvbmVGaXJzdFJlYWQgPSBmYWxz
ZTsKK30KKworZnVuY3Rpb24gY29udGludWVUZXN0KCkKK3sKKyAgICB2YXIgb3BlbkRCUmVxdWVz
dCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVHJhbnNhY3Rpb25TY2hlZHVsZXI1RGF0YWJhc2Ui
LCAxKTsKKyAgICBvcGVuREJSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVj
dGlvbiAtIFN0YXJ0aW5nIHRyYW5zYWN0aW9ucyIpOworICAgICAgICBzZWNvbmREYXRhYmFzZUNv
bm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAKKyAgICAgICAgdmFyIHRy
YW5zYWN0aW9uMSA9IHNlY29uZERhdGFiYXNlQ29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MxIiwg
InJlYWRvbmx5Iik7CisgICAgICAgIHNldHVwUmVhZFRyYW5zYWN0aW9uQ2FsbGJhY2tzKHRyYW5z
YWN0aW9uMSk7CisgICAgICAgIHZhciB0cmFuc2FjdGlvbjIgPSBzZWNvbmREYXRhYmFzZUNvbm5l
Y3Rpb24udHJhbnNhY3Rpb24oIk9TMiIsICJyZWFkb25seSIpOworICAgICAgICBzZXR1cFJlYWRU
cmFuc2FjdGlvbkNhbGxiYWNrcyh0cmFuc2FjdGlvbjIpOworCisgICAgICAgIHJlYWRUcmFuc2Fj
dGlvbkxvb3AodHJhbnNhY3Rpb24xLCAiT1MxIiwgZmFsc2UpOworICAgICAgICByZWFkVHJhbnNh
Y3Rpb25Mb29wKHRyYW5zYWN0aW9uMiwgIk9TMiIsIHRydWUpOworICAgIH0KKyAgICBvcGVuREJS
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAiTG9uZyBydW5uaW5nIHJlYWQgcmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2
ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVuREJSZXF1ZXN0Lm9uYmxvY2tl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJMb25nIHJ1
bm5pbmcgcmVhZCByZXF1ZXN0IHVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyBldmVudCk7CisgICAg
ICAgIGRvbmUoKTsKKyAgICB9CisgICAgb3BlbkRCUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiTG9uZyBydW5uaW5n
IHJlYWQgcmVxdWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfSAKK30KKwordmFyIHNob3VsZEVuZFJlYWRUcmFuc2FjdGlvbiA9
IGZhbHNlOworCitmdW5jdGlvbiByZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBvc25h
bWUsIHNob3VsZFN0YXJ0V3JpdGUpCit7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUob3NuYW1lKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdl
dCgiZm9vIik7CisgICAgCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICBpZiAoc2hvdWxkRW5kUmVhZFRyYW5zYWN0aW9uICYmIHRyYW5zYWN0aW9uLmhh
c0RvbmVGaXJzdFJlYWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdHJhbnNhY3Rp
b24uaGFzRG9uZUZpcnN0UmVhZCA9IHRydWU7CisgICAgICAgIHJlYWRUcmFuc2FjdGlvbkxvb3Ao
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLCBvc25hbWUsIGZhbHNlKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChzaG91bGRTdGFydFdyaXRlKQorICAgICAgICAgICAgIHN0YXJ0V3JpdGVUcmFuc2Fj
dGlvbigpOworICAgIH0KKworICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJVbmV4cGVjdGVkIHJlcXVlc3QgZXJyb3IgLSAi
ICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBzdGFydFdy
aXRlVHJhbnNhY3Rpb24oKQoreworICAgIGRlYnVnKCJBTEVSVDogIiArICJTdGFydGluZyB3cml0
ZSB0cmFuc2FjdGlvbiIpOworICAgIHZhciB0cmFuc2FjdGlvbiA9IHNlY29uZERhdGFiYXNlQ29u
bmVjdGlvbi50cmFuc2FjdGlvbihbIk9TMSIsICJPUzIiXSwgInJlYWR3cml0ZSIpOworICAgIHZh
ciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJPUzEiKTsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmF6IiwgImZvbyIpOworCisgICAgc2hvdWxkRW5k
UmVhZFRyYW5zYWN0aW9uID0gdHJ1ZTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIldyaXRlIHRvIE9TMSBzdWNj
ZXNzZnVsIik7CisgICAgfQorICAgIAorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJXcml0ZSB0cmFuc2FjdGlvbiBwdXQg
dW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisK
KyAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJPUzIiKTsKKyAgICBy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXoiLCAiZm9vIik7CisKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJX
cml0ZSB0byBPUzIgc3VjY2Vzc2Z1bCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIAor
ICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJXcml0ZSB0cmFuc2FjdGlvbiBwdXQgdW5leHBlY3RlZCBlcnJvciAtICIgKyBl
dmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY2hl
ZHVsZXItNi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjM1MzhiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTYuanMKQEAg
LTAsMCArMSwxMjIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc3RhcnRzIHR3byByZWFkLW9u
bHkgdHJhbnNhY3Rpb25zIHRvIGFuIG9iamVjdCBzdG9yZSBmb2xsb3dlZCBieSBhIHJlYWQtd3Jp
dGUgdHJhbnNhY3Rpb24uIFwKK0l0IHZlcmlmaWVzIHRoYXQgdGhlIHJlYWQtd3JpdGUgZG9lc24n
dCBzdGFydCB1bnRpbCBib3RoIHJlYWQtb25seXMgaGF2ZSBmaW5pc2hlZC4iKTsKKworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWRE
Qi5vcGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjZEYXRhYmFzZSIpOwordmFyIGRhdGFiYXNlOwor
CitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ZGVidWcoIkFMRVJUOiAiICsgIlVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVu
dC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKwor
ICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwor
ICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUg
PSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImZvbyIsICJiYXIiKTsKKworICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJw
dXQgRkFJTEVEIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICAKKyAg
ICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGRlYnVnKCJBTEVSVDogIiArICJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAgICAgIGNvbnRpbnVlVGVzdCgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gZXJyb3InZWQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitm
dW5jdGlvbiBjb250aW51ZVRlc3QoKQoreworICAgIHN0YXJ0VHJhbnNhY3Rpb25Mb29wKGRhdGFi
YXNlLnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKSwgdHJ1ZSk7Cisg
ICAgc3RhcnRUcmFuc2FjdGlvbkxvb3AoZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RT
dG9yZSIsICJyZWFkb25seSIpLCB0cnVlKTsKKyAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBk
YXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOworICAg
IHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmF6IiwgImZvbyIpOwor
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1
ZygiQUxFUlQ6ICIgKyAiV3JpdGUgaW4gcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHN1Y2NlZWRlZCIp
OworICAgIH0KKyAgICAKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiV3JpdGUgaW4gcmVhZHdyaXRlIHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWRseSBmYWlsZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICAKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWco
IkFMRVJUOiAiICsgInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBleHBlY3RlZGx5IGFib3J0ZWQiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAicmVhZHdyaXRlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJh
bnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVS
VDogIiArICJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorfQorCit2YXIgbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zID0g
MDsKKworZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbkxvb3AodHJhbnNhY3Rpb24sIGlzRmlyc3RU
aW1lKQoreworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJU
ZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgiYmFy
Iik7CisgICAgCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBpZiAoaXNGaXJzdFRpbWUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJT
dGFydGluZyBhIHJlYWRvbmx5IHRyYW5zYWN0aW9uIik7CisgICAgICAgICAgICBudW1iZXJPZk9w
ZW5UcmFuc2FjdGlvbnMrKzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG51bWJl
ck9mT3BlblRyYW5zYWN0aW9ucyA9PSAyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHN0YXJ0VHJhbnNhY3Rpb25Mb29wKGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiwgZmFsc2UpOwor
ICAgIH0KKworICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGRlYnVnKCJBTEVSVDogIiArICJVbmV4cGVjdGVkIHJlcXVlc3QgZXJyb3IgLSAiICsgZXZlbnQp
OworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJVbmV4cGVjdGVkIHRy
YW5zYWN0aW9uIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKwor
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAtLW51
bWJlck9mT3BlblRyYW5zYWN0aW9uczsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlVuZXhw
ZWN0ZWQgdHJhbnNhY3Rpb24gYWJvcnQgLSAiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIC0tbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zOworICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAgfQorfQorCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmln
YXRpb24tMi5odG1sCmluZGV4IGEyNTYxMWEuLmJhZTUzODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25zLXN0b3At
b24tbmF2aWdhdGlvbi0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLTIuaHRtbApA
QCAtMSwxMyArMSwxMyBAQAotTWFrZXMgc3VyZSB0cmFuc2FjdGlvbnMgc3RvcCBvbiBuYXZpZ2F0
aW9uIHRvIGEgbmV3IHBhZ2UuPGJyPgotSWYgdGhlIHByZXZpb3VzIHBhZ2UncyB0cmFuc2FjdGlv
biBpcyBibGluZGx5IGNoYXJnaW5nIGZvcndhcmQsIHRoaXMgdGVzdCB3aWxsIHByb2JhYmx5IHRp
bWVvdXQuPGJyPgotSWYgdGhlIHByZXZpb3VzIHBhZ2UncyBjb25uZWN0aW9uL3RyYW5zYWN0aW9u
cyBkaWQgbm90IGNsZWFuIHVwIHByb3Blcmx5LCB0aGUgZGVsZXRlIHJlcXVlc3QgaW4gdGhpcyB0
ZXN0IHdpbGwgaW5jb3JyZWN0bHkgYmUgYmxvY2tlZC48YnI+Ci1JZiBldmVyeSB0aGluZyBpcyBw
ZWFjaHkga2VlbiwgdGhlIGRlbGV0ZSByZXF1ZXN0IGluIHRoaXMgdGVzdCB3aWxsIGNvcnJlY3Rs
eSBzdWNjZWVkLjxicj4KK01ha2VzIHN1cmUgdHJhbnNhY3Rpb25zIHN0b3Agb24gbmF2aWdhdGlv
biB0byBhIG5ldyBwYWdlLgorSWYgdGhlIHByZXZpb3VzIHBhZ2UncyB0cmFuc2FjdGlvbiBpcyBi
bGluZGx5IGNoYXJnaW5nIGZvcndhcmQsIHRoaXMgdGVzdCB3aWxsIHByb2JhYmx5IHRpbWVvdXQu
CitJZiB0aGUgcHJldmlvdXMgcGFnZSdzIGNvbm5lY3Rpb24vdHJhbnNhY3Rpb25zIGRpZCBub3Qg
Y2xlYW4gdXAgcHJvcGVybHksIHRoZSBkZWxldGUgcmVxdWVzdCBpbiB0aGlzIHRlc3Qgd2lsbCBp
bmNvcnJlY3RseSBiZSBibG9ja2VkLgorSWYgZXZlcnkgdGhpbmcgaXMgcGVhY2h5IGtlZW4sIHRo
ZSBkZWxldGUgcmVxdWVzdCBpbiB0aGlzIHRlc3Qgd2lsbCBjb3JyZWN0bHkgc3VjY2VlZC4KIDxk
aXYgaWQ9ImxvZ2dlciI+PC9kaXY+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQogewot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbXNnICsg
Ijxicj4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwg
Kz0gbXNnICsgIiI7CiB9CiAKIGZ1bmN0aW9uIGRvbmUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0
LXRoZW4tcmVvcGVuLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LXRoZW4tcmVvcGVuLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYmQwMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtYWJv
cnQtdGhlbi1yZW9wZW4uanMKQEAgLTAsMCArMSwxMTEgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3Qgb3BlbnMgYSBuZXcgZGF0YWJhc2UsIHRoZW4gYWJvcnRzIHRoZSB2ZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbi4gXAorSXQgdGhlbiByZW9wZW5zIHRoZSBkYXRhYmFzZSwgbWFraW5nIHN1cmUg
aXQncyBhIGRlZmF1bHQsIGVtcHR5IGRhdGFiYXNlLCBhbmQgY2hhbmdlcyB0aGUgdmVyc2lvbiBz
dWNjZXNzZnVsbHkuIFwKK0l0IHRoZW4gcmVvcGVucyB0aGUgZGF0YWJhc2UsIHVwZ3JhZGluZyBp
dCdzIHZlcnNpb24uIEl0IGFib3J0cyB0aGlzIHZlcnNpb25jaGFuZ2UsIGFzIHdlbGwuIFwKK0Zp
bmFsbHkgaXQgcmVvcGVucyB0aGUgZGF0YWJhc2UgYWdhaW4sIHVwZ3JhZGluZyBpdHMgdmVyc2lv
biwgbWFraW5nIHN1cmUgdGhpbmdzIGhhZCByZXZlcnRlZCBiYWNrIHRvIGJlZm9yZSB0aGUgc2Vj
b25kIGFib3J0ZWQgdmVyc2lvbmNoYW5nZS4iKTsKKworCitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9uQ2hh
bmdlQWJvcnRUZXN0RGF0YWJhc2UiLCAxKTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJBTEVSVDogIiArICJJbml0aWFsIHVw
Z3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcg
dmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNh
Y3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24uYWJvcnQoKTsKKwor
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgICAgICBkYXRh
YmFzZS5jbG9zZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGVycm9yICIgKyBldmVudCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICBjcmVhdGVSZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9uQ2hhbmdlQWJvcnRUZXN0RGF0YWJhc2UiLCAx
KTsKKworICAgIGNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlNlY29uZCB1cGdyYWRlIG5lZWRlZDogT2xk
IHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZl
bnQubmV3VmVyc2lvbik7CisKKyAgICAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0
ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlNlY29uZCB1cGdyYWRl
IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFMRVJUOiAiICsg
IlNlY29uZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKKyAgICAgICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7
CisgICAgICAgIH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiU2Vjb25kIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsK
KyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gY29u
dGludWVUZXN0MigpCit7CisgICAgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3Bl
bigiVmVyc2lvbkNoYW5nZUFib3J0VGVzdERhdGFiYXNlIiwgMik7CisKKyAgICBjcmVhdGVSZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRlYnVnKCJB
TEVSVDogIiArICJUaGlyZCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQu
b2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAg
ICAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247
CisgICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICAgICAg
dmVyc2lvblRyYW5zYWN0aW9uLmFib3J0KCk7CisgICAgCisgICAgICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVS
VDogIiArICJUaGlyZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCIp
OworICAgICAgICAgICAgY29udGludWVUZXN0MygpOworICAgICAgICAgICAgZGF0YWJhc2UuY2xv
c2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGRlYnVnKCJBTEVSVDogIiArICJUaGly
ZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBjb21wbGV0ZSIp
OworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZGVidWcoIkFM
RVJUOiAiICsgIlRoaXJkIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvciIg
KyBldmVudCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDMo
KQoreworICAgIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlZlcnNpb25D
aGFuZ2VBYm9ydFRlc3REYXRhYmFzZSIsIDIpOworCisgICAgY3JlYXRlUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAi
Rm91cnRoIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9u
ICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKyAgICAgICAgdmFyIGRh
dGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVz
b3VyY2VzL3ZlcnNpb25jaGFuZ2UtZXZlbnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtZXZlbnQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1NjhkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1l
dmVudC5qcwpAQCAtMCwwICsxLDExNCBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdDogXAorLU9w
ZW5zIGEgY29ubmVjdGlvbiB0byBhIGRhdGFiYXNlIGF0IHZlcnNpb24gMSwgY3JlYXRpbmcgdGhl
IGRhdGFiYXNlIFwKKy1Db21taXRzIHRoZSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBmb3Ig
dGhhdCBkYXRhYmFzZSBcCistT3BlbnMgYSBzZWNvbmQgY29ubmVjdGlvbiB0byB0aGF0IGRhdGFi
YXNlLCByZXF1ZXN0aW5nIHZlcnNpb24gMSBcCistT3BlbnMgYSB0aGlyZCBjb25uZWN0aW9uIHRv
IHRoYXQgZGF0YWJhc2UsIHJlcXVlc3RpbmcgdmVyc2lvbiAyIFwKKy1NYWtlcyBzdXJlIHRoZSBm
aXJzdCBhbmQgc2Vjb25kIGNvbm5lY3Rpb25zIGdldCB0aGUgdmVyc2lvbmNoYW5nZSBldmVudCBc
CistQ2xvc2VzIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGNvbm5lY3Rpb25zIFwKKy1NYWtlcyBzdXJl
IHRoZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGZvciB0aGUgc2Vjb25kIGNvbm5lY3Rpb24g
c3RhcnRzIHN1Y2Nlc3NmdWxseSIpOworCisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFy
IHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlZlcnNpb25DaGFuZ2VUZXN0RGF0YWJh
c2UiKTsKK3ZhciBjb25uZWN0aW9uMTsKK3ZhciBjb25uZWN0aW9uMjsKKworcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIkZpcnN0IHZlcnNp
b24gY2hhbmdlIHN1Y2Nlc3NmdWwiKTsKK30KK3JlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUp
Cit7CisgICAgZGVidWcoIkFMRVJUOiAiICsgIlVuZXhwZWN0ZWQgZXJyb3IgKGZpcnN0UGhhc2Up
Iik7CisJZG9uZSgpOworfQorCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUp
Cit7CisgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRlYnVn
KCJBTEVSVDogIiArICJ1cGdyYWRlbmVlZGVkIChmaXJzdFBoYXNlKTogb2xkIHZlcnNpb24gLSAi
ICsgZS5vbGRWZXJzaW9uICsgIiBuZXcgdmVyc2lvbiAtICIgKyBlLm5ld1ZlcnNpb24pOworICAg
IHJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGRlYnVnKCJBTEVSVDogIiArICJWZXJzaW9uIGNoYW5nZSBjb21wbGV0ZSAoZmlyc3RQaGFz
ZSkuIERhdGFiYXNlIHZlcnNpb24gaXMgbm93IC0gIiArIGRhdGFiYXNlLnZlcnNpb24pOworCisg
ICAgICAgIGNvbm5lY3Rpb24xID0gZGF0YWJhc2U7CisgICAgICAgIGNvbm5lY3Rpb24xLm9udmVy
c2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbm5lY3Rp
b24xLm9sZFZlcnNpb24gPSBlLm9sZFZlcnNpb247CisgICAgICAgICAgICBjb25uZWN0aW9uMS5u
ZXdWZXJzaW9uID0gZS5uZXdWZXJzaW9uOworICAgICAgICAgICAgY29ubmVjdGlvbjEuY2xvc2Uo
KTsKKyAgICAgICAgfQorICAgICAgICBzZWNvbmRQaGFzZSgpOworICAgIH0KKyAgICByZXF1ZXN0
LnRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1Zygi
QUxFUlQ6ICIgKyAiVmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCAo
Zmlyc3RQaGFzZSkiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICByZXF1ZXN0LnRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6
ICIgKyAiVmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAoZmlyc3RQ
aGFzZSkiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gc2Vjb25kUGhh
c2UoKQoreworICAgIHZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9u
Q2hhbmdlVGVzdERhdGFiYXNlIiwgMSk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiT3BlbiBzdWNjZXNzIChzZWNv
bmRQaGFzZSkiKTsKKyAgICAgICAgY29ubmVjdGlvbjIgPSByZXF1ZXN0LnJlc3VsdDsKKyAgICAg
ICAgY29ubmVjdGlvbjIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29ubmVjdGlvbjIub2xkVmVyc2lvbiA9IGUub2xkVmVyc2lvbjsKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb24yLm5ld1ZlcnNpb24gPSBlLm5ld1ZlcnNpb247CisgICAgICAgICAg
ICBjb25uZWN0aW9uMi5jbG9zZSgpOworICAgICAgICB9CisgICAgICAgIHRoaXJkUGhhc2UoKTsK
KyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAg
IGRlYnVnKCJBTEVSVDogIiArICJVbmV4cGVjdGVkIG9wZW4gZXJyb3IgKHNlY29uZFBoYXNlKSIg
KyBlKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgIAlkZWJ1ZygiQUxFUlQ6ICIgKyAiVW5leHBlY3Rl
ZCB1cGdyYWRlIG5lZWRlZCAoc2Vjb25kUGhhc2UpIik7CisgICAgCWRvbmUoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRoaXJkUGhhc2UoKQoreworICAgIHZhciByZXF1ZXN0ID0gd2luZG93Lmlu
ZGV4ZWREQi5vcGVuKCJWZXJzaW9uQ2hhbmdlVGVzdERhdGFiYXNlIiwgMik7CisgICAgZGVidWco
IkFMRVJUOiAiICsgInRoaXJkUGhhc2UgLSBSZXF1ZXN0ZWQgZGF0YWJhc2UgY29ubmVjdGlvbiB3
aXRoIHZlcnNpb24gMiIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgZGVidWcoIkFMRVJUOiAiICsgIlZlcnNpb24gY2hhbmdlIHRvIHZlcnNpb24g
MiBzdWNjZXNzZnVsIik7CisgICAgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUp
CisgICAgeworICAgICAgICBkZWJ1ZygiQUxFUlQ6ICIgKyAiVW5leHBlY3RlZCBvcGVuIGVycm9y
ICh0aGlyZFBoYXNlKSIgKyBlKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICByZXF1ZXN0
Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgIAlkZWJ1ZygiQUxFUlQ6
ICIgKyAiRXhwZWN0ZWQgdXBncmFkZSBuZWVkZWQgKHRoaXJkUGhhc2UpIik7CisgICAgCWRlYnVn
KCJBTEVSVDogIiArICJmaXJzdFBoYXNlIGNvbm5lY3Rpb24gaGFkIHJlY2VpdmVkIG9sZFZlcnNp
b246ICIgKyBjb25uZWN0aW9uMS5vbGRWZXJzaW9uICsgIiwgbmV3VmVyc2lvbjogIiArIGNvbm5l
Y3Rpb24xLm5ld1ZlcnNpb24pOworICAgIAlkZWJ1ZygiQUxFUlQ6ICIgKyAic2Vjb25kUGhhc2Ug
Y29ubmVjdGlvbiBoYWQgcmVjZWl2ZWQgb2xkVmVyc2lvbjogIiArIGNvbm5lY3Rpb24yLm9sZFZl
cnNpb24gKyAiLCBuZXdWZXJzaW9uOiAiICsgY29ubmVjdGlvbjIubmV3VmVyc2lvbik7CisKKyAg
ICAJZG9uZSgpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0xLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXIt
MS1leHBlY3RlZC50eHQKaW5kZXggMjQ1NzFhZC4uYmRjYTI2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0xLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJh
bnNhY3Rpb24tc2NoZWR1bGVyLTEtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsMTQgQEAKK1RoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgdHdvIHJlYWQtb25seSB0cmFuc2FjdGlvbnMgdG8gYW4gb2Jq
ZWN0IHN0b3JlIGFyZSBhY3RpdmUgYXQgdGhlIHNhbWUgdGltZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKIEFMRVJUOiBVcGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5l
dyB2ZXJzaW9uIC0gMQogQUxFUlQ6IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGVk
CiBBTEVSVDogU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSByZXF1ZXN0IDEK
IEFMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbiAtIHJlcXVlc3QgMgog
QUxFUlQ6IFR3byB0cmFuc2FjdGlvbnMgb3BlbiBhdCBvbmNlLiBZYXkuCi1BTEVSVDogRG9uZQot
VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0d28gcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB0byBh
biBvYmplY3Qgc3RvcmUgYXJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNj
aGVkdWxlci0xLmh0bWwKaW5kZXggYjBjM2Q3ZS4uY2RkMjZlNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0xLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9u
LXNjaGVkdWxlci0xLmh0bWwKQEAgLTEsMTIwICsxLDkgQEAKLVRoaXMgdGVzdCBtYWtlcyBzdXJl
IHRoYXQgdHdvIHJlYWQtb25seSB0cmFuc2FjdGlvbnMgdG8gYW4gb2JqZWN0IHN0b3JlIGFyZSBh
Y3RpdmUgYXQgdGhlIHNhbWUgdGltZS4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBhbGVydCgiRG9uZSIpOwot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJUcmFu
c2FjdGlvblNjaGVkdWxlcjFEYXRhYmFzZSIpOwotCi1jcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgYWxlcnQoIlVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJmb28iLCAi
YmFyIik7Ci0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAg
ICBhbGVydCgicHV0IEZBSUxFRCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9
Ci0gICAgCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJ2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlZCIpOwotICAgICAgICBjb250aW51ZVRlc3QoKTsKLSAgICAgICAgZGF0
YWJhc2UuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGVycm9yJ2VkIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gY29udGludWVUZXN0KCkKLXsKLSAgICB2YXIgcmVxdWVzdDEgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyMURhdGFiYXNlIiwgMSk7Ci0gICAgdmFy
IHJlcXVlc3QyID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjFE
YXRhYmFzZSIsIDEpOwotCi0gICAgc2V0dXBSZXF1ZXN0KHJlcXVlc3QxLCAicmVxdWVzdCAxIik7
Ci0gICAgc2V0dXBSZXF1ZXN0KHJlcXVlc3QyLCAicmVxdWVzdCAyIik7Ci19Ci0KLWZ1bmN0aW9u
IHNldHVwUmVxdWVzdChyZXF1ZXN0LCByZXFOYW1lKQotewotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRh
YmFzZSBjb25uZWN0aW9uIC0gIiArIHJlcU5hbWUpOwotICAgICAgICB2YXIgZGF0YWJhc2UgPSBl
dmVudC50YXJnZXQucmVzdWx0OwotICAgIAotICAgICAgICBzdGFydFRyYW5zYWN0aW9uTG9vcChl
dmVudC50YXJnZXQucmVzdWx0LnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9u
bHkiKSwgdHJ1ZSk7Ci0gICAgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIGVycm9yIC0gIiArIHJlcU5hbWUgKyAiIC0g
IiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uYmxvY2tl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIGJsb2NrZWQg
LSAiICsgcmVxTmFtZSArICIgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoIlVuZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyByZXFOYW1lICsgIiAtICIgKyBl
dmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9IAotfQotCi12YXIgbnVtYmVyT2ZPcGVuVHJh
bnNhY3Rpb25zID0gMDsKLQotZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbkxvb3AodHJhbnNhY3Rp
b24sIGlzRmlyc3RUaW1lKQotewotICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLmdldCgiYmFyIik7Ci0gICAgCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBpZiAoaXNGaXJzdFRpbWUpCi0gICAgICAgICAgICBudW1iZXJPZk9w
ZW5UcmFuc2FjdGlvbnMrKzsKLSAgICAgICAgCi0gICAgICAgIGlmIChudW1iZXJPZk9wZW5UcmFu
c2FjdGlvbnMgPT0gMikgewotICAgICAgICAgICAgYWxlcnQoIlR3byB0cmFuc2FjdGlvbnMgb3Bl
biBhdCBvbmNlLiBZYXkuIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgc3RhcnRUcmFuc2FjdGlvbkxvb3AoZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLCBmYWxzZSk7
Ci0gICAgfQotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoIlVuZXhwZWN0ZWQgcmVxdWVzdCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAg
IGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gZXJyb3IgLSAiICsg
ZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIC0tbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25z
OwotICAgICAgICBhbGVydCgiVW5leHBlY3RlZCB0cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVu
dCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgLS1udW1iZXJPZk9wZW5UcmFuc2FjdGlvbnM7
Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGNvbXBsZXRlIC0gIiArIGV2
ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1zY2hlZHVsZXIt
MS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9u
LXNjaGVkdWxlci0yLWV4cGVjdGVkLnR4dAppbmRleCBkZDEzZmFlLi45MDU1MGIxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2No
ZWR1bGVyLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMi1leHBlY3RlZC50eHQKQEAgLTEsNyArMSwx
NCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0d28gcmVhZC1vbmx5IHRyYW5zYWN0aW9u
cyB0byB0d28gZGlmZmVyZW50IG9iamVjdCBzdG9yZXMgYXJlIGFjdGl2ZSBhdCB0aGUgc2FtZSB0
aW1lLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IFVwZ3JhZGUgbmVl
ZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBBTEVSVDogdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKIEFMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2Ug
Y29ubmVjdGlvbiAtIFN0YXJ0aW5nIHRyYW5zYWN0aW9uIHRvIE9iamVjdFN0b3JlIE9TMQogQUxF
UlQ6IFN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRpbmcgdHJhbnNh
Y3Rpb24gdG8gT2JqZWN0U3RvcmUgT1MyCiBBTEVSVDogVHdvIHRyYW5zYWN0aW9ucyBvcGVuIGF0
IG9uY2UuIFlheS4KLUFMRVJUOiBEb25lCi1UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHR3byBy
ZWFkLW9ubHkgdHJhbnNhY3Rpb25zIHRvIHR3byBkaWZmZXJlbnQgb2JqZWN0IHN0b3JlcyBhcmUg
YWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0yLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTIuaHRtbAppbmRl
eCAxODJhNTBlLi41ODgxNzIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTIuaHRtbApA
QCAtMSwxMjYgKzEsOSBAQAotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB0d28gcmVhZC1vbmx5
IHRyYW5zYWN0aW9ucyB0byB0d28gZGlmZmVyZW50IG9iamVjdCBzdG9yZXMgYXJlIGFjdGl2ZSBh
dCB0aGUgc2FtZSB0aW1lLgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0g
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0K
LQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9u
U2NoZWR1bGVyMkRhdGFiYXNlIik7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhbGVydCgiVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1Zl
cnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJh
bnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2
YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiT1MxIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImZvbzEiLCAiYmFyMSIpOwotCi0gICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInB1dDEgRkFJ
TEVEIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICAKLSAgICBvYmpl
Y3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJPUzIiKTsKLSAgICByZXF1ZXN0
ID0gb2JqZWN0U3RvcmUucHV0KCJmb28yIiwgImJhcjIiKTsKLQotICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJwdXQyIEZBSUxFRCAtICIgKyBl
dmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJ2ZXJzaW9uY2hhbmdl
IHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
YWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7Ci0gICAgICAgIGNv
bnRpbnVlVGVzdCgpOwotICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOwotICAgIH0KLQotICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QoKQotewotICAg
IHZhciByZXF1ZXN0MSA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVHJhbnNhY3Rpb25TY2hlZHVs
ZXIyRGF0YWJhc2UiLCAxKTsKLSAgICB2YXIgcmVxdWVzdDIgPSB3aW5kb3cuaW5kZXhlZERCLm9w
ZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyMkRhdGFiYXNlIiwgMSk7Ci0KLSAgICBzZXR1cFJlcXVl
c3QocmVxdWVzdDEsICJPUzEiKTsKLSAgICBzZXR1cFJlcXVlc3QocmVxdWVzdDIsICJPUzIiKTsK
LX0KLQotZnVuY3Rpb24gc2V0dXBSZXF1ZXN0KHJlcXVlc3QsIG9zbmFtZSkKLXsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJTdWNjZXNz
IG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbiAtIFN0YXJ0aW5nIHRyYW5zYWN0aW9uIHRvIE9i
amVjdFN0b3JlICIgKyBvc25hbWUpOwotICAgICAgICBzdGFydFRyYW5zYWN0aW9uTG9vcChldmVu
dC50YXJnZXQucmVzdWx0LnRyYW5zYWN0aW9uKG9zbmFtZSwgInJlYWRvbmx5IiksIG9zbmFtZSwg
dHJ1ZSk7Ci0gICAgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIGVycm9yIC0gIiArIG9zbmFtZSArICIgLSAiICsgZXZl
bnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyBv
c25hbWUgKyAiIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJV
bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgb3NuYW1lICsgIiAtICIgKyBldmVudCk7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9IAotfQotCi12YXIgbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25z
ID0gMDsKLQotZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbkxvb3AodHJhbnNhY3Rpb24sIG9zbmFt
ZSwgaXNGaXJzdFRpbWUpCi17Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUob3NuYW1lKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgiYmFy
Iik7Ci0gICAgCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBpZiAoaXNGaXJzdFRpbWUpCi0gICAgICAgICAgICBudW1iZXJPZk9wZW5UcmFuc2FjdGlv
bnMrKzsKLSAgICAgICAgCi0gICAgICAgIGlmIChudW1iZXJPZk9wZW5UcmFuc2FjdGlvbnMgPT0g
MikgewotICAgICAgICAgICAgYWxlcnQoIlR3byB0cmFuc2FjdGlvbnMgb3BlbiBhdCBvbmNlLiBZ
YXkuIik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhcnRUcmFu
c2FjdGlvbkxvb3AoZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLCBvc25hbWUsIGZhbHNlKTsKLSAg
ICB9Ci0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBh
bGVydCgiVW5leHBlY3RlZCByZXF1ZXN0IGVycm9yIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBhbGVydCgiVW5leHBlY3RlZCB0cmFuc2FjdGlvbiBlcnJvciAtICIgKyBldmVu
dCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgLS1udW1iZXJPZk9wZW5UcmFuc2FjdGlvbnM7Ci0g
ICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGFib3J0IC0gIiArIGV2ZW50KTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICAtLW51bWJlck9mT3BlblRyYW5zYWN0aW9uczsKLSAg
ICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy90cmFuc2FjdGlvbi1zY2hlZHVsZXItMi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNh
Y3Rpb24tc2NoZWR1bGVyLTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0zLWV4cGVjdGVkLnR4dAppbmRleCAz
MWM3YTk1Li5hYzgwY2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMy1l
eHBlY3RlZC50eHQKQEAgLTEsMyArMSw4IEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEg
d3JpdGUgdHJhbnNhY3Rpb24gaXMgYmxvY2tlZCBieSBhIHJlYWQgdHJhbnNhY3Rpb24gd2l0aCBv
dmVybGFwcGluZyBzY29wZS4gSXQgYWxzbyBtYWtlcyBzdXJlIHRoZSB3cml0ZSB0cmFuc2FjdGlv
biBzdGFydHMgYWZ0ZXIgdGhlIHJlYWQgdHJhbnNhY3Rpb24gY29tcGxldGVzLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IFVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCiBBTEVSVDogdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZWQKIEFMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbiAtIFN0
YXJ0aW5nIHJlYWRvbmx5IHRyYW5zYWN0aW9uCkBAIC01LDcgKzEwLDcgQEAgQUxFUlQ6IENyZWF0
aW5nIHdyaXRlIHRyYW5zYWN0aW9uCiBBTEVSVDogUmVhZCB0cmFuc2FjdGlvbiBjb21wbGV0ZSAt
IFtvYmplY3QgRXZlbnRdCiBBTEVSVDogV3JpdGUgdHJhbnNhY3Rpb24gcHV0IHN1Y2Nlc3MKIEFM
RVJUOiBXcml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSAtIFtvYmplY3QgRXZlbnRdCi1BTEVSVDog
RG9uZQotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIHdyaXRlIHRyYW5zYWN0aW9uIGlzIGJs
b2NrZWQgYnkgYSByZWFkIHRyYW5zYWN0aW9uIHdpdGggb3ZlcmxhcHBpbmcgc2NvcGUuCi1JdCBh
bHNvIG1ha2VzIHN1cmUgdGhlIHdyaXRlIHRyYW5zYWN0aW9uIHN0YXJ0cyBhZnRlciB0aGUgcmVh
ZCB0cmFuc2FjdGlvbiBjb21wbGV0ZXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0zLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMuaHRtbAppbmRl
eCAwYTcyODM1Li5hMzhhYTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMuaHRtbApA
QCAtMSwxNDIgKzEsOSBAQAotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIHdyaXRlIHRyYW5z
YWN0aW9uIGlzIGJsb2NrZWQgYnkgYSByZWFkIHRyYW5zYWN0aW9uIHdpdGggb3ZlcmxhcHBpbmcg
c2NvcGUuPGJyPgotSXQgYWxzbyBtYWtlcyBzdXJlIHRoZSB3cml0ZSB0cmFuc2FjdGlvbiBzdGFy
dHMgYWZ0ZXIgdGhlIHJlYWQgdHJhbnNhY3Rpb24gY29tcGxldGVzLjxicj4KLTxzY3JpcHQ+Ci0K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsK
LSAgICBhbGVydCgiRG9uZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjNEYXRhYmFzZSIpOwotCi1jcmVh
dGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgYWxlcnQo
IlVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBO
ZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKLQotICAgIHZhciB2ZXJzaW9uVHJh
bnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAgIHZhciBkYXRhYmFzZSA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3Jl
YXRlT2JqZWN0U3RvcmUoIk9TIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQo
ImJhciIsICJmb28iKTsKLQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGFsZXJ0KCJwdXQgRkFJTEVEIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgp
OwotICAgIH0KLQotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCIp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0KCk7Ci0gICAgICAg
IGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19
Ci0KLXZhciBzZWNvbmREYXRhYmFzZUNvbm5lY3Rpb247Ci1mdW5jdGlvbiBjb250aW51ZVRlc3Qo
KQotewotICAgIHZhciBsb25nUnVubmluZ1JlYWRSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5v
cGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjNEYXRhYmFzZSIsIDEpOwotICAgIGxvbmdSdW5uaW5n
UmVhZFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQo
IlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRpbmcgcmVhZG9ubHkg
dHJhbnNhY3Rpb24iKTsKLSAgICAgICAgc2Vjb25kRGF0YWJhc2VDb25uZWN0aW9uID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgcmVhZFRyYW5zYWN0aW9uTG9vcChzZWNvbmREYXRhYmFz
ZUNvbm5lY3Rpb24udHJhbnNhY3Rpb24oIk9TIiwgInJlYWRvbmx5IiksIHRydWUpOwotICAgIH0K
LSAgICBsb25nUnVubmluZ1JlYWRSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICBhbGVydCgiTG9uZyBydW5uaW5nIHJlYWQgcmVxdWVzdCB1bmV4cGVjdGVkIGVycm9y
IC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICBsb25nUnVubmluZ1Jl
YWRSZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJM
b25nIHJ1bm5pbmcgcmVhZCByZXF1ZXN0IHVuZXhwZWN0ZWQgYmxvY2tlZCAtICIgKyBldmVudCk7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgbG9uZ1J1bm5pbmdSZWFkUmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiTG9uZyBydW5u
aW5nIHJlYWQgcmVxdWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfSAKLX0KLQotdmFyIHNob3VsZEVuZFJlYWRUcmFuc2FjdGlv
biA9IGZhbHNlOwotCi1mdW5jdGlvbiByZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBp
c0ZpcnN0VGltZSkKLXsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgiT1MiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgiZm9vIik7Ci0g
ICAgCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBp
ZiAoIXNob3VsZEVuZFJlYWRUcmFuc2FjdGlvbikKLSAgICAgICAgICAgIHJlYWRUcmFuc2FjdGlv
bkxvb3AoZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLCBmYWxzZSk7Ci0gICAgICAgIAotICAgICAg
ICAvLyBOb3cgdGhhdCB0aGUgcmVhZCB0cmFuc2FjdGlvbiBpcyBvcGVuLCB0aGUgd3JpdGUgdHJh
bnNhY3Rpb24gY2FuIGJlIHN0YXJ0ZWQsIGJ1dCBpdCB3aWxsIGJlIGJsb2NrZWQgdG8gc3RhcnQg
d2l0aC4KLSAgICAgICAgaWYgKGlzRmlyc3RUaW1lKQotICAgICAgICAgICAgIHN0YXJ0V3JpdGVU
cmFuc2FjdGlvbigpCi0gICAgfQotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgcmVxdWVzdCBlcnJvciAtICIgKyBldmVu
dCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24g
ZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVj
dGVkIHRyYW5zYWN0aW9uIGFib3J0IC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAg
IH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBhbGVydCgiUmVhZCB0cmFuc2FjdGlvbiBjb21wbGV0ZSAtICIgKyBldmVudCk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRlVHJhbnNhY3Rpb24oKQotewotICAgIGFsZXJ0KCJD
cmVhdGluZyB3cml0ZSB0cmFuc2FjdGlvbiIpOwotICAgIHZhciB0cmFuc2FjdGlvbiA9IHNlY29u
ZERhdGFiYXNlQ29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MiLCAicmVhZHdyaXRlIik7Ci0gICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIk9TIik7Ci0gICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJheiIsICJmb28iKTsKLQotICAgIHNldFRpbWVv
dXQoInNob3VsZEVuZFJlYWRUcmFuc2FjdGlvbiA9IHRydWU7IiwgMCk7Ci0KLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFu
c2FjdGlvbiBwdXQgc3VjY2VzcyIpOwotICAgIH0KLQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFuc2FjdGlvbiBwdXQgdW5l
eHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAg
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQo
IldyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2
ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
IC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiV3JpdGUgdHJh
bnNhY3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQot
fQotCi08L3NjcmlwdD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0zLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFu
c2FjdGlvbi1zY2hlZHVsZXItNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTUtZXhwZWN0ZWQudHh0CmluZGV4
IGM3NDgxZDYuLjFjNDQyOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci01
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBjcmVhdGVzIHR3byBvYmpl
Y3Qgc3RvcmVzLiBJdCB0aGVuIG9wZW5zIHR3byBsb25nIHJ1bm5pbmcgcmVhZC1vbmx5IHRyYW5z
YWN0aW9ucywgb25lIHBlciBvYmplY3Qgc3RvcmUuIEl0IHRoZW4gb3BlbnMgYSByZWFkLXdyaXRl
IHRyYW5zYWN0aW9uIHRvIGJvdGggb2JqZWN0IHN0b3Jlcy4gVGhlIHJlYWQtb25seSB0cmFuc2Fj
dGlvbnMgYm90aCBuZWVkIHRvIGZpbmlzaCBiZWZvcmUgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rp
b24gc3RhcnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IFVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCiBBTEVSVDogdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKIEFMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0
YWJhc2UgY29ubmVjdGlvbiAtIFN0YXJ0aW5nIHRyYW5zYWN0aW9ucwpAQCAtNiw5ICsxMSw3IEBA
IEFMRVJUOiBSZWFkIHRyYW5zYWN0aW9uIGNvbXBsZXRlIC0gW29iamVjdCBFdmVudF0KIEFMRVJU
OiBSZWFkIHRyYW5zYWN0aW9uIGNvbXBsZXRlIC0gW29iamVjdCBFdmVudF0KIEFMRVJUOiBXcml0
ZSB0byBPUzEgc3VjY2Vzc2Z1bAogQUxFUlQ6IFdyaXRlIHRvIE9TMiBzdWNjZXNzZnVsCi1BTEVS
VDogRG9uZQotVGhpcyB0ZXN0IGNyZWF0ZXMgdHdvIG9iamVjdCBzdG9yZXMuCi1JdCB0aGVuIG9w
ZW5zIHR3byBsb25nIHJ1bm5pbmcgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucywgb25lIHBlciBvYmpl
Y3Qgc3RvcmUuCi1JdCB0aGVuIG9wZW5zIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiB0byBib3Ro
IG9iamVjdCBzdG9yZXMuCi1UaGUgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyBib3RoIG5lZWQgdG8g
ZmluaXNoIGJlZm9yZSB0aGUgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiBzdGFydHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxl
ci01Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rp
b24tc2NoZWR1bGVyLTUuaHRtbAppbmRleCBiNGVhNmJiLi42ZTEyYjg3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVy
LTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNh
Y3Rpb24tc2NoZWR1bGVyLTUuaHRtbApAQCAtMSwxNjYgKzEsOSBAQAotVGhpcyB0ZXN0IGNyZWF0
ZXMgdHdvIG9iamVjdCBzdG9yZXMuPGJyPgotSXQgdGhlbiBvcGVucyB0d28gbG9uZyBydW5uaW5n
IHJlYWQtb25seSB0cmFuc2FjdGlvbnMsIG9uZSBwZXIgb2JqZWN0IHN0b3JlLjxicj4KLUl0IHRo
ZW4gb3BlbnMgYSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIHRvIGJvdGggb2JqZWN0IHN0b3Jlcy48
YnI+Ci1UaGUgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyBib3RoIG5lZWQgdG8gZmluaXNoIGJlZm9y
ZSB0aGUgcmVhZC13cml0ZSB0cmFuc2FjdGlvbiBzdGFydHMuPGJyPgotPHNjcmlwdD4KLQotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAg
IGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyNURhdGFiYXNlIik7Ci0KLWNyZWF0ZVJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhbGVydCgiVXBn
cmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2
ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25UcmFuc2Fj
dGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVP
YmplY3RTdG9yZSgiT1MxIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJh
ciIsICJmb28iKTsKLQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIGFsZXJ0KCJmaXJzdCBwdXQgRkFJTEVEIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0KLQotICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3Rv
cmUoIk9TMiIpOwotICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsK
LSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBh
bGVydCgic2Vjb25kIHB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0g
ICAgfQotICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCIp
OwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0KCk7Ci0gICAgICAg
IGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0cmFu
c2FjdGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19
Ci0KLXZhciBzZWNvbmREYXRhYmFzZUNvbm5lY3Rpb247Ci12YXIgcmVhZFdyaXRlVHJhbnNhY3Rp
b247Ci0KLWZ1bmN0aW9uIHNldHVwUmVhZFRyYW5zYWN0aW9uQ2FsbGJhY2tzKHRyYW5zYWN0aW9u
KQotewotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAg
ICBhbGVydCgiVW5leHBlY3RlZCB0cmFuc2FjdGlvbiBlcnJvciAtICIgKyBldmVudCk7Ci0gICAg
ICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gYWJvcnQgLSAi
ICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJSZWFkIHRyYW5zYWN0
aW9uIGNvbXBsZXRlIC0gIiArIGV2ZW50KTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5oYXNE
b25lRmlyc3RSZWFkID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCi17Ci0g
ICAgdmFyIG9wZW5EQlJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9u
U2NoZWR1bGVyNURhdGFiYXNlIiwgMSk7Ci0gICAgb3BlbkRCUmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNl
IGNvbm5lY3Rpb24gLSBTdGFydGluZyB0cmFuc2FjdGlvbnMiKTsKLSAgICAgICAgc2Vjb25kRGF0
YWJhc2VDb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgCi0gICAgICAg
IHZhciB0cmFuc2FjdGlvbjEgPSBzZWNvbmREYXRhYmFzZUNvbm5lY3Rpb24udHJhbnNhY3Rpb24o
Ik9TMSIsICJyZWFkb25seSIpOwotICAgICAgICBzZXR1cFJlYWRUcmFuc2FjdGlvbkNhbGxiYWNr
cyh0cmFuc2FjdGlvbjEpOwotICAgICAgICB2YXIgdHJhbnNhY3Rpb24yID0gc2Vjb25kRGF0YWJh
c2VDb25uZWN0aW9uLnRyYW5zYWN0aW9uKCJPUzIiLCAicmVhZG9ubHkiKTsKLSAgICAgICAgc2V0
dXBSZWFkVHJhbnNhY3Rpb25DYWxsYmFja3ModHJhbnNhY3Rpb24yKTsKLQotICAgICAgICByZWFk
VHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uMSwgIk9TMSIsIGZhbHNlKTsKLSAgICAgICAgcmVh
ZFRyYW5zYWN0aW9uTG9vcCh0cmFuc2FjdGlvbjIsICJPUzIiLCB0cnVlKTsKLSAgICB9Ci0gICAg
b3BlbkRCUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQo
IkxvbmcgcnVubmluZyByZWFkIHJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgb3BlbkRCUmVxdWVzdC5vbmJsb2NrZWQgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiTG9uZyBydW5uaW5nIHJlYWQgcmVxdWVz
dCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAg
fQotICAgIG9wZW5EQlJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgYWxlcnQoIkxvbmcgcnVubmluZyByZWFkIHJlcXVlc3QgdW5leHBlY3RlZCB1cGdy
YWRlbmVlZGVkIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0gCi19Ci0KLXZh
ciBzaG91bGRFbmRSZWFkVHJhbnNhY3Rpb24gPSBmYWxzZTsKLQotZnVuY3Rpb24gcmVhZFRyYW5z
YWN0aW9uTG9vcCh0cmFuc2FjdGlvbiwgb3NuYW1lLCBzaG91bGRTdGFydFdyaXRlKQotewotICAg
IHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKG9zbmFtZSk7Ci0gICAg
dmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoImZvbyIpOwotICAgIAotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKHNob3VsZEVuZFJlYWRU
cmFuc2FjdGlvbiAmJiB0cmFuc2FjdGlvbi5oYXNEb25lRmlyc3RSZWFkKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHRyYW5zYWN0aW9uLmhhc0RvbmVGaXJzdFJlYWQgPSB0cnVlOwot
ICAgICAgICByZWFkVHJhbnNhY3Rpb25Mb29wKGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiwgb3Nu
YW1lLCBmYWxzZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoc2hvdWxkU3RhcnRXcml0ZSkKLSAg
ICAgICAgICAgICBzdGFydFdyaXRlVHJhbnNhY3Rpb24oKTsKLSAgICB9Ci0KLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBy
ZXF1ZXN0IGVycm9yIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gc3RhcnRXcml0ZVRyYW5zYWN0aW9uKCkKLXsKLSAgICBhbGVydCgiU3RhcnRpbmcg
d3JpdGUgdHJhbnNhY3Rpb24iKTsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBzZWNvbmREYXRhYmFz
ZUNvbm5lY3Rpb24udHJhbnNhY3Rpb24oWyJPUzEiLCAiT1MyIl0sICJyZWFkd3JpdGUiKTsKLSAg
ICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiT1MxIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJheiIsICJmb28iKTsKLQotICAgIHNob3Vs
ZEVuZFJlYWRUcmFuc2FjdGlvbiA9IHRydWU7Ci0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0byBPUzEgc3VjY2Vzc2Z1bCIp
OwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICBhbGVydCgiV3JpdGUgdHJhbnNhY3Rpb24gcHV0IHVuZXhwZWN0ZWQgZXJyb3IgLSAi
ICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgb2JqZWN0U3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiT1MyIik7Ci0gICAgcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LnB1dCgiYmF6IiwgImZvbyIpOwotCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBhbGVydCgiV3JpdGUgdG8gT1MyIHN1Y2Nlc3NmdWwiKTsKLSAgICAg
ICAgZG9uZSgpOwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBhbGVydCgiV3JpdGUgdHJhbnNhY3Rpb24gcHV0IHVuZXhwZWN0ZWQg
ZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi08L3Njcmlw
dD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0
aW9uLXNjaGVkdWxlci01LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hl
ZHVsZXItNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTYtZXhwZWN0ZWQudHh0CmluZGV4IGUzOGRmMGIuLjIx
MGQ1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90
cmFuc2FjdGlvbi1zY2hlZHVsZXItNi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02LWV4cGVjdGVkLnR4
dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBzdGFydHMgdHdvIHJlYWQtb25seSB0cmFuc2Fj
dGlvbnMgdG8gYW4gb2JqZWN0IHN0b3JlIGZvbGxvd2VkIGJ5IGEgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbi4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgcmVhZC13cml0ZSBkb2Vzbid0IHN0YXJ0IHVudGls
IGJvdGggcmVhZC1vbmx5cyBoYXZlIGZpbmlzaGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKwogQUxFUlQ6IFVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNp
b24gLSAxCiBBTEVSVDogdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKIEFMRVJU
OiBTdGFydGluZyBhIHJlYWRvbmx5IHRyYW5zYWN0aW9uCkBAIC02LDcgKzExLDcgQEAgQUxFUlQ6
IHJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlZAogQUxFUlQ6IHJlYWRvbmx5IHRyYW5zYWN0
aW9uIGNvbXBsZXRlZAogQUxFUlQ6IFdyaXRlIGluIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiBzdWNj
ZWVkZWQKIEFMRVJUOiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGVkCi1BTEVSVDogRG9u
ZQotVGhpcyB0ZXN0IHN0YXJ0cyB0d28gcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyB0byBhbiBvYmpl
Y3Qgc3RvcmUgZm9sbG93ZWQgYnkgYSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLgotSXQgdmVyaWZp
ZXMgdGhhdCB0aGUgcmVhZC13cml0ZSBkb2Vzbid0IHN0YXJ0IHVudGlsIGJvdGggcmVhZC1vbmx5
cyBoYXZlIGZpbmlzaGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02Lmh0bWwKaW5kZXggMDE2Nzcx
Ny4uNTBmZmU2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02Lmh0bWwKQEAgLTEsMTI0
ICsxLDkgQEAKLVRoaXMgdGVzdCBzdGFydHMgdHdvIHJlYWQtb25seSB0cmFuc2FjdGlvbnMgdG8g
YW4gb2JqZWN0IHN0b3JlIGZvbGxvd2VkIGJ5IGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbi48YnI+
Ci1JdCB2ZXJpZmllcyB0aGF0IHRoZSByZWFkLXdyaXRlIGRvZXNuJ3Qgc3RhcnQgdW50aWwgYm90
aCByZWFkLW9ubHlzIGhhdmUgZmluaXNoZWQuPGJyPgotPHNjcmlwdD4KLQotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGFsZXJ0KCJE
b25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9w
ZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyNkRhdGFiYXNlIik7Ci12YXIgZGF0YWJhc2U7Ci0KLWNy
ZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhbGVy
dCgiVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAi
IE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNpb25U
cmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgZGF0YWJhc2UgPSBl
dmVudC50YXJnZXQucmVzdWx0OwotICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCgiZm9vIiwgImJhciIpOwotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgi
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAgY29udGludWVU
ZXN0KCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJv
cidlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IGNvbnRpbnVlVGVzdCgpCi17Ci0gICAgc3RhcnRUcmFuc2FjdGlvbkxvb3AoZGF0YWJhc2UudHJh
bnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIpLCB0cnVlKTsKLSAgICBzdGFy
dFRyYW5zYWN0aW9uTG9vcChkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwg
InJlYWRvbmx5IiksIHRydWUpOwotICAgIAotICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNl
LnRyYW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7Ci0gICAgdmFyIG9i
amVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwot
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXoiLCAiZm9vIik7Ci0KLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0
ZSBpbiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gc3VjY2VlZGVkIik7Ci0gICAgfQotICAgIAotICAg
IHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0
ZSBpbiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZGx5IGZhaWxlZCIpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotICAgIAotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGV4cGVjdGVk
bHkgYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUg
dHJhbnNhY3Rpb24gY29tcGxldGVkIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInJl
YWR3cml0ZSB0cmFuc2FjdGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci19Ci0KLXZhciBudW1iZXJPZk9wZW5UcmFuc2FjdGlvbnMgPSAwOwotCi1mdW5j
dGlvbiBzdGFydFRyYW5zYWN0aW9uTG9vcCh0cmFuc2FjdGlvbiwgaXNGaXJzdFRpbWUpCi17Ci0g
ICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RT
dG9yZSIpOwotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KCJiYXIiKTsKLSAgICAK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGlmIChp
c0ZpcnN0VGltZSkgewotICAgICAgICAgICAgYWxlcnQoIlN0YXJ0aW5nIGEgcmVhZG9ubHkgdHJh
bnNhY3Rpb24iKTsKLSAgICAgICAgICAgIG51bWJlck9mT3BlblRyYW5zYWN0aW9ucysrOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zID09
IDIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3RhcnRUcmFuc2FjdGlvbkxvb3Ao
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgcmVx
dWVzdCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIlVu
ZXhwZWN0ZWQgdHJhbnNhY3Rpb24gZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7
Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIC0tbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zOwotICAgICAgICBhbGVydCgiVW5leHBl
Y3RlZCB0cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAg
ICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgLS1udW1iZXJPZk9wZW5UcmFuc2FjdGlvbnM7Ci0gICAgICAgIGFsZXJ0KCJyZWFkb25s
eSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1
bGVyLTYuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmln
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDhjZDY3
MmQuLmFkMGE3NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24t
bmF2aWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTEsNyArMSwyIEBACi1NYWtlcyBzdXJlIHRyYW5z
YWN0aW9ucyBzdG9wIG9uIG5hdmlnYXRpb24gdG8gYSBuZXcgcGFnZS4KLUlmIHRoZSBwcmV2aW91
cyBwYWdlJ3MgdHJhbnNhY3Rpb24gaXMgYmxpbmRseSBjaGFyZ2luZyBmb3J3YXJkLCB0aGlzIHRl
c3Qgd2lsbCBwcm9iYWJseSB0aW1lb3V0LgotSWYgdGhlIHByZXZpb3VzIHBhZ2UncyBjb25uZWN0
aW9uL3RyYW5zYWN0aW9ucyBkaWQgbm90IGNsZWFuIHVwIHByb3Blcmx5LCB0aGUgZGVsZXRlIHJl
cXVlc3QgaW4gdGhpcyB0ZXN0IHdpbGwgaW5jb3JyZWN0bHkgYmUgYmxvY2tlZC4KLUlmIGV2ZXJ5
IHRoaW5nIGlzIHBlYWNoeSBrZWVuLCB0aGUgZGVsZXRlIHJlcXVlc3QgaW4gdGhpcyB0ZXN0IHdp
bGwgY29ycmVjdGx5IHN1Y2NlZWQuCi1EZWxldGUgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bC4KLURv
bmUuCi0KK01ha2VzIHN1cmUgdHJhbnNhY3Rpb25zIHN0b3Agb24gbmF2aWdhdGlvbiB0byBhIG5l
dyBwYWdlLiBJZiB0aGUgcHJldmlvdXMgcGFnZSdzIHRyYW5zYWN0aW9uIGlzIGJsaW5kbHkgY2hh
cmdpbmcgZm9yd2FyZCwgdGhpcyB0ZXN0IHdpbGwgcHJvYmFibHkgdGltZW91dC4gSWYgdGhlIHBy
ZXZpb3VzIHBhZ2UncyBjb25uZWN0aW9uL3RyYW5zYWN0aW9ucyBkaWQgbm90IGNsZWFuIHVwIHBy
b3Blcmx5LCB0aGUgZGVsZXRlIHJlcXVlc3QgaW4gdGhpcyB0ZXN0IHdpbGwgaW5jb3JyZWN0bHkg
YmUgYmxvY2tlZC4gSWYgZXZlcnkgdGhpbmcgaXMgcGVhY2h5IGtlZW4sIHRoZSBkZWxldGUgcmVx
dWVzdCBpbiB0aGlzIHRlc3Qgd2lsbCBjb3JyZWN0bHkgc3VjY2VlZC4KK0RlbGV0ZSByZXF1ZXN0
IHdhcyBzdWNjZXNzZnVsLkRvbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1hYm9ydC10aGVuLXJlb3Blbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1h
Ym9ydC10aGVuLXJlb3Blbi1leHBlY3RlZC50eHQKaW5kZXggZmE2OTc4My4uZTI2MTUxZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25jaGFu
Z2UtYWJvcnQtdGhlbi1yZW9wZW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi92ZXJzaW9uY2hhbmdlLWFib3J0LXRoZW4tcmVvcGVuLWV4cGVj
dGVkLnR4dApAQCAtMSwzICsxLDggQEAKK1RoaXMgdGVzdCBvcGVucyBhIG5ldyBkYXRhYmFzZSwg
dGhlbiBhYm9ydHMgdGhlIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uLiBJdCB0aGVuIHJlb3Bl
bnMgdGhlIGRhdGFiYXNlLCBtYWtpbmcgc3VyZSBpdCdzIGEgZGVmYXVsdCwgZW1wdHkgZGF0YWJh
c2UsIGFuZCBjaGFuZ2VzIHRoZSB2ZXJzaW9uIHN1Y2Nlc3NmdWxseS4gSXQgdGhlbiByZW9wZW5z
IHRoZSBkYXRhYmFzZSwgdXBncmFkaW5nIGl0J3MgdmVyc2lvbi4gSXQgYWJvcnRzIHRoaXMgdmVy
c2lvbmNoYW5nZSwgYXMgd2VsbC4gRmluYWxseSBpdCByZW9wZW5zIHRoZSBkYXRhYmFzZSBhZ2Fp
biwgdXBncmFkaW5nIGl0cyB2ZXJzaW9uLCBtYWtpbmcgc3VyZSB0aGluZ3MgaGFkIHJldmVydGVk
IGJhY2sgdG8gYmVmb3JlIHRoZSBzZWNvbmQgYWJvcnRlZCB2ZXJzaW9uY2hhbmdlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwogQUxFUlQ6IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6
IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKIEFMRVJUOiBJbml0aWFsIHVwZ3JhZGUg
dmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkCiBBTEVSVDogU2Vjb25kIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCkBAIC01LDkgKzEwLDcgQEAg
QUxFUlQ6IFNlY29uZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUK
IEFMRVJUOiBUaGlyZCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAxIE5ldyB2ZXJzaW9u
IC0gMgogQUxFUlQ6IFRoaXJkIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9y
dGVkCiBBTEVSVDogRm91cnRoIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDEgTmV3IHZl
cnNpb24gLSAyCi1BTEVSVDogRG9uZQotVGhpcyB0ZXN0IG9wZW5zIGEgbmV3IGRhdGFiYXNlLCB0
aGVuIGFib3J0cyB0aGUgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24uCi1JdCB0aGVuIHJlb3Bl
bnMgdGhlIGRhdGFiYXNlLCBtYWtpbmcgc3VyZSBpdCdzIGEgZGVmYXVsdCwgZW1wdHkgZGF0YWJh
c2UsIGFuZCBjaGFuZ2VzIHRoZSB2ZXJzaW9uIHN1Y2Nlc3NmdWxseS4KLUl0IHRoZW4gcmVvcGVu
cyB0aGUgZGF0YWJhc2UsIHVwZ3JhZGluZyBpdCdzIHZlcnNpb24uIEl0IGFib3J0cyB0aGlzIHZl
cnNpb25jaGFuZ2UsIGFzIHdlbGwuCi1GaW5hbGx5IGl0IHJlb3BlbnMgdGhlIGRhdGFiYXNlIGFn
YWluLCB1cGdyYWRpbmcgaXRzIHZlcnNpb24sIG1ha2luZyBzdXJlIHRoaW5ncyBoYWQgcmV2ZXJ0
ZWQgYmFjayB0byBiZWZvcmUgdGhlIHNlY29uZCBhYm9ydGVkIHZlcnNpb25jaGFuZ2UuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25jaGFuZ2UtYWJv
cnQtdGhlbi1yZW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi92ZXJzaW9uY2hhbmdlLWFib3J0LXRoZW4tcmVvcGVuLmh0bWwKaW5kZXggNWU1YjNkZC4uOTll
ZWE3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Zl
cnNpb25jaGFuZ2UtYWJvcnQtdGhlbi1yZW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1hYm9ydC10aGVuLXJlb3Blbi5odG1s
CkBAIC0xLDExMyArMSw5IEBACi1UaGlzIHRlc3Qgb3BlbnMgYSBuZXcgZGF0YWJhc2UsIHRoZW4g
YWJvcnRzIHRoZSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbi48YnI+Ci1JdCB0aGVuIHJlb3Bl
bnMgdGhlIGRhdGFiYXNlLCBtYWtpbmcgc3VyZSBpdCdzIGEgZGVmYXVsdCwgZW1wdHkgZGF0YWJh
c2UsIGFuZCBjaGFuZ2VzIHRoZSB2ZXJzaW9uIHN1Y2Nlc3NmdWxseS48YnI+Ci1JdCB0aGVuIHJl
b3BlbnMgdGhlIGRhdGFiYXNlLCB1cGdyYWRpbmcgaXQncyB2ZXJzaW9uLiBJdCBhYm9ydHMgdGhp
cyB2ZXJzaW9uY2hhbmdlLCBhcyB3ZWxsLjxicj4KLUZpbmFsbHkgaXQgcmVvcGVucyB0aGUgZGF0
YWJhc2UgYWdhaW4sIHVwZ3JhZGluZyBpdHMgdmVyc2lvbiwgbWFraW5nIHN1cmUgdGhpbmdzIGhh
ZCByZXZlcnRlZCBiYWNrIHRvIGJlZm9yZSB0aGUgc2Vjb25kIGFib3J0ZWQgdmVyc2lvbmNoYW5n
ZS48YnI+Ci08c2NyaXB0PgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQot
ZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgYWxlcnQoIkRvbmUiKTsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi12YXIgY3Jl
YXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVmVyc2lvbkNoYW5nZUFib3J0VGVz
dERhdGFiYXNlIiwgMSk7Ci0KLWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNp
b24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3
VmVyc2lvbik7Ci0KLSAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50
cmFuc2FjdGlvbjsKLSAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0g
ICAgdmVyc2lvblRyYW5zYWN0aW9uLmFib3J0KCk7Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgICAgIGNvbnRpbnVl
VGVzdDEoKTsKLSAgICAgICAgZGF0YWJhc2UuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9u
VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0
KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNv
bXBsZXRlIik7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB2ZXJzaW9uVHJhbnNhY3Rp
b24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJJbml0aWFsIHVw
Z3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvciAiICsgZXZlbnQpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gY29udGludWVUZXN0MSgpCi17Ci0gICAgY3JlYXRlUmVxdWVzdCA9IHdp
bmRvdy5pbmRleGVkREIub3BlbigiVmVyc2lvbkNoYW5nZUFib3J0VGVzdERhdGFiYXNlIiwgMSk7
Ci0KLSAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGFsZXJ0KCJTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwotCi0gICAgICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5z
YWN0aW9uOwotICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0g
ICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgICAgIGFsZXJ0KCJTZWNvbmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IHVuZXhwZWN0ZWQgYWJvcnQiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgICAgIGFsZXJ0KCJTZWNvbmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlIik7Ci0gICAgICAgICAgICBjb250aW51ZVRlc3QyKCk7Ci0gICAgICAgICAg
ICBkYXRhYmFzZS5jbG9zZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgYWxlcnQoIlNlY29u
ZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBl
dmVudCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGNvbnRpbnVlVGVzdDIoKQotewotICAgIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhl
ZERCLm9wZW4oIlZlcnNpb25DaGFuZ2VBYm9ydFRlc3REYXRhYmFzZSIsIDIpOwotCi0gICAgY3Jl
YXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBh
bGVydCgiVGhpcmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZl
cnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgICAg
IHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOwotICAg
ICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0gICAgICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5hYm9ydCgpOwotICAgIAotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVydCgiVGhpcmQgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlVGVzdDMoKTsKLSAgICAgICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgICAgICBhbGVydCgiVGhpcmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJUaGlyZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gZXJyb3IiICsgZXZlbnQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlv
biBjb250aW51ZVRlc3QzKCkKLXsKLSAgICBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWRE
Qi5vcGVuKCJWZXJzaW9uQ2hhbmdlQWJvcnRUZXN0RGF0YWJhc2UiLCAyKTsKLQotICAgIGNyZWF0
ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIkZvdXJ0aCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVy
c2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7Ci0gICAgICAgIHZh
ciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9
Ci19Ci0KLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtYWJvcnQtdGhl
bi1yZW9wZW4uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25jaGFuZ2UtZXZlbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25j
aGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDU5ODFiMjQuLmRjNWIzNmMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi92ZXJzaW9uY2hhbmdlLWV2
ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vdmVyc2lvbmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw4IEBACitUaGlz
IHRlc3Q6IC1PcGVucyBhIGNvbm5lY3Rpb24gdG8gYSBkYXRhYmFzZSBhdCB2ZXJzaW9uIDEsIGNy
ZWF0aW5nIHRoZSBkYXRhYmFzZSAtQ29tbWl0cyB0aGUgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rp
b24gZm9yIHRoYXQgZGF0YWJhc2UgLU9wZW5zIGEgc2Vjb25kIGNvbm5lY3Rpb24gdG8gdGhhdCBk
YXRhYmFzZSwgcmVxdWVzdGluZyB2ZXJzaW9uIDEgLU9wZW5zIGEgdGhpcmQgY29ubmVjdGlvbiB0
byB0aGF0IGRhdGFiYXNlLCByZXF1ZXN0aW5nIHZlcnNpb24gMiAtTWFrZXMgc3VyZSB0aGUgZmly
c3QgYW5kIHNlY29uZCBjb25uZWN0aW9ucyBnZXQgdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQgLUNs
b3NlcyB0aGUgZmlyc3QgYW5kIHNlY29uZCBjb25uZWN0aW9ucyAtTWFrZXMgc3VyZSB0aGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBmb3IgdGhlIHNlY29uZCBjb25uZWN0aW9uIHN0YXJ0cyBz
dWNjZXNzZnVsbHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKIEFMRVJUOiB1cGdy
YWRlbmVlZGVkIChmaXJzdFBoYXNlKTogb2xkIHZlcnNpb24gLSAwIG5ldyB2ZXJzaW9uIC0gMQog
QUxFUlQ6IFZlcnNpb24gY2hhbmdlIGNvbXBsZXRlIChmaXJzdFBoYXNlKS4gRGF0YWJhc2UgdmVy
c2lvbiBpcyBub3cgLSAxCiBBTEVSVDogRmlyc3QgdmVyc2lvbiBjaGFuZ2Ugc3VjY2Vzc2Z1bApA
QCAtNiwxMyArMTEsNyBAQCBBTEVSVDogdGhpcmRQaGFzZSAtIFJlcXVlc3RlZCBkYXRhYmFzZSBj
b25uZWN0aW9uIHdpdGggdmVyc2lvbiAyCiBBTEVSVDogRXhwZWN0ZWQgdXBncmFkZSBuZWVkZWQg
KHRoaXJkUGhhc2UpCiBBTEVSVDogZmlyc3RQaGFzZSBjb25uZWN0aW9uIGhhZCByZWNlaXZlZCBv
bGRWZXJzaW9uOiAxLCBuZXdWZXJzaW9uOiAyCiBBTEVSVDogc2Vjb25kUGhhc2UgY29ubmVjdGlv
biBoYWQgcmVjZWl2ZWQgb2xkVmVyc2lvbjogMSwgbmV3VmVyc2lvbjogMgotQUxFUlQ6IERvbmUK
LVRoaXMgdGVzdDoKLS1PcGVucyBhIGNvbm5lY3Rpb24gdG8gYSBkYXRhYmFzZSBhdCB2ZXJzaW9u
IDEsIGNyZWF0aW5nIHRoZSBkYXRhYmFzZQotLUNvbW1pdHMgdGhlIHZlcnNpb24gY2hhbmdlIHRy
YW5zYWN0aW9uIGZvciB0aGF0IGRhdGFiYXNlCi0tT3BlbnMgYSBzZWNvbmQgY29ubmVjdGlvbiB0
byB0aGF0IGRhdGFiYXNlLCByZXF1ZXN0aW5nIHZlcnNpb24gMQotLU9wZW5zIGEgdGhpcmQgY29u
bmVjdGlvbiB0byB0aGF0IGRhdGFiYXNlLCByZXF1ZXN0aW5nIHZlcnNpb24gMgotLU1ha2VzIHN1
cmUgdGhlIGZpcnN0IGFuZCBzZWNvbmQgY29ubmVjdGlvbnMgZ2V0IHRoZSB2ZXJzaW9uY2hhbmdl
IGV2ZW50Ci0tQ2xvc2VzIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGNvbm5lY3Rpb25zCi0tTWFrZXMg
c3VyZSB0aGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBmb3IgdGhlIHNlY29uZCBjb25uZWN0
aW9uIHN0YXJ0cyBzdWNjZXNzZnVsbHkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25jaGFuZ2UtZXZlbnQuaHRtbAppbmRleCA2ZjQ3M2My
Li45MWU3ZjhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vdmVyc2lvbmNoYW5nZS1ldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi92ZXJzaW9uY2hhbmdlLWV2ZW50Lmh0bWwKQEAgLTEsMTE2ICsxLDkgQEAK
LVRoaXMgdGVzdDo8YnI+Ci0tT3BlbnMgYSBjb25uZWN0aW9uIHRvIGEgZGF0YWJhc2UgYXQgdmVy
c2lvbiAxLCBjcmVhdGluZyB0aGUgZGF0YWJhc2U8YnI+Ci0tQ29tbWl0cyB0aGUgdmVyc2lvbiBj
aGFuZ2UgdHJhbnNhY3Rpb24gZm9yIHRoYXQgZGF0YWJhc2U8YnI+Ci0tT3BlbnMgYSBzZWNvbmQg
Y29ubmVjdGlvbiB0byB0aGF0IGRhdGFiYXNlLCByZXF1ZXN0aW5nIHZlcnNpb24gMTxicj4KLS1P
cGVucyBhIHRoaXJkIGNvbm5lY3Rpb24gdG8gdGhhdCBkYXRhYmFzZSwgcmVxdWVzdGluZyB2ZXJz
aW9uIDI8YnI+Ci0tTWFrZXMgc3VyZSB0aGUgZmlyc3QgYW5kIHNlY29uZCBjb25uZWN0aW9ucyBn
ZXQgdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQ8YnI+Ci0tQ2xvc2VzIHRoZSBmaXJzdCBhbmQgc2Vj
b25kIGNvbm5lY3Rpb25zPGJyPgotLU1ha2VzIHN1cmUgdGhlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gZm9yIHRoZSBzZWNvbmQgY29ubmVjdGlvbiBzdGFydHMgc3VjY2Vzc2Z1bGx5PGJyPgot
PHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGRvbmUoKQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIHJlcXVlc3QgPSB3
aW5kb3cuaW5kZXhlZERCLm9wZW4oIlZlcnNpb25DaGFuZ2VUZXN0RGF0YWJhc2UiKTsKLXZhciBj
b25uZWN0aW9uMTsKLXZhciBjb25uZWN0aW9uMjsKLQotcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpCi17Ci0gICAgYWxlcnQoIkZpcnN0IHZlcnNpb24gY2hhbmdlIHN1Y2Nlc3NmdWwiKTsK
LX0KLXJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCi17Ci0gICAgYWxlcnQoIlVuZXhwZWN0
ZWQgZXJyb3IgKGZpcnN0UGhhc2UpIik7Ci0JZG9uZSgpOwotfQotCi1yZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi17Ci0gICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKLQotICAgIGFsZXJ0KCJ1cGdyYWRlbmVlZGVkIChmaXJzdFBoYXNlKTogb2xkIHZl
cnNpb24gLSAiICsgZS5vbGRWZXJzaW9uICsgIiBuZXcgdmVyc2lvbiAtICIgKyBlLm5ld1ZlcnNp
b24pOwotICAgIHJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGFsZXJ0KCJWZXJzaW9uIGNoYW5nZSBjb21wbGV0ZSAoZmlyc3RQaGFzZSku
IERhdGFiYXNlIHZlcnNpb24gaXMgbm93IC0gIiArIGRhdGFiYXNlLnZlcnNpb24pOwotCi0gICAg
ICAgIGNvbm5lY3Rpb24xID0gZGF0YWJhc2U7Ci0gICAgICAgIGNvbm5lY3Rpb24xLm9udmVyc2lv
bmNoYW5nZSA9IGZ1bmN0aW9uKGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24x
Lm9sZFZlcnNpb24gPSBlLm9sZFZlcnNpb247Ci0gICAgICAgICAgICBjb25uZWN0aW9uMS5uZXdW
ZXJzaW9uID0gZS5uZXdWZXJzaW9uOwotICAgICAgICAgICAgY29ubmVjdGlvbjEuY2xvc2UoKTsK
LSAgICAgICAgfQotICAgICAgICBzZWNvbmRQaGFzZSgpOwotICAgIH0KLSAgICByZXF1ZXN0LnRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBhbGVydCgiVmVy
c2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCAoZmlyc3RQaGFzZSkiKTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1ZXN0LnRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBhbGVydCgiVmVyc2lvbiBjaGFuZ2UgdHJhbnNh
Y3Rpb24gdW5leHBlY3RlZCBlcnJvciAoZmlyc3RQaGFzZSkiKTsKLSAgICAgICAgZG9uZSgpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gc2Vjb25kUGhhc2UoKQotewotICAgIHZhciByZXF1ZXN0ID0g
d2luZG93LmluZGV4ZWREQi5vcGVuKCJWZXJzaW9uQ2hhbmdlVGVzdERhdGFiYXNlIiwgMSk7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBhbGVydCgi
T3BlbiBzdWNjZXNzIChzZWNvbmRQaGFzZSkiKTsKLSAgICAgICAgY29ubmVjdGlvbjIgPSByZXF1
ZXN0LnJlc3VsdDsKLSAgICAgICAgY29ubmVjdGlvbjIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rp
b24oZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29ubmVjdGlvbjIub2xkVmVyc2lvbiA9IGUu
b2xkVmVyc2lvbjsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24yLm5ld1ZlcnNpb24gPSBlLm5ld1Zl
cnNpb247Ci0gICAgICAgICAgICBjb25uZWN0aW9uMi5jbG9zZSgpOwotICAgICAgICB9Ci0gICAg
ICAgIHRoaXJkUGhhc2UoKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZSkKLSAgICB7Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIG9wZW4gZXJyb3IgKHNlY29uZFBo
YXNlKSIgKyBlKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAgIAlhbGVydCgiVW5leHBlY3RlZCB1cGdy
YWRlIG5lZWRlZCAoc2Vjb25kUGhhc2UpIik7Ci0gICAgCWRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRoaXJkUGhhc2UoKQotewotICAgIHZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWRE
Qi5vcGVuKCJWZXJzaW9uQ2hhbmdlVGVzdERhdGFiYXNlIiwgMik7Ci0gICAgYWxlcnQoInRoaXJk
UGhhc2UgLSBSZXF1ZXN0ZWQgZGF0YWJhc2UgY29ubmVjdGlvbiB3aXRoIHZlcnNpb24gMiIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgYWxlcnQo
IlZlcnNpb24gY2hhbmdlIHRvIHZlcnNpb24gMiBzdWNjZXNzZnVsIik7Ci0gICAgfQotICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAgICBhbGVydCgiVW5leHBl
Y3RlZCBvcGVuIGVycm9yICh0aGlyZFBoYXNlKSIgKyBlKTsKLSAgICAgICAgZG9uZSgpOwotICAg
IH0KLSAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCi0gICAgewotICAg
IAlhbGVydCgiRXhwZWN0ZWQgdXBncmFkZSBuZWVkZWQgKHRoaXJkUGhhc2UpIik7Ci0gICAgCWFs
ZXJ0KCJmaXJzdFBoYXNlIGNvbm5lY3Rpb24gaGFkIHJlY2VpdmVkIG9sZFZlcnNpb246ICIgKyBj
b25uZWN0aW9uMS5vbGRWZXJzaW9uICsgIiwgbmV3VmVyc2lvbjogIiArIGNvbm5lY3Rpb24xLm5l
d1ZlcnNpb24pOwotICAgIAlhbGVydCgic2Vjb25kUGhhc2UgY29ubmVjdGlvbiBoYWQgcmVjZWl2
ZWQgb2xkVmVyc2lvbjogIiArIGNvbm5lY3Rpb24yLm9sZFZlcnNpb24gKyAiLCBuZXdWZXJzaW9u
OiAiICsgY29ubmVjdGlvbjIubmV3VmVyc2lvbik7Ci0KLSAgICAJZG9uZSgpOwotICAgIH0KLX0K
LTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dmVyc2lvbmNoYW5nZS1ldmVudC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>