<?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>153178</bug_id>
          
          <creation_ts>2016-01-15 20:35:10 -0800</creation_ts>
          <short_desc>Modern IDB: Split all storage/indexeddb tests into separate HTML + JS format</short_desc>
          <delta_ts>2016-01-19 11:32:22 -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>Other</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>1156105</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-15 20:35:10 -0800</bug_when>
    <thetext>Modern IDB: Split all IDB tests into separate HTML + JS format

This is because we&apos;ll have two separate backends (In-memory and SQLite) and will need to test both.

We can have a shared .JS file for the meat of the test, and then we&apos;ll have two separate HTML files: One for normal browsing and one for private browsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156627</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-19 10:20:05 -0800</bug_when>
    <thetext>Will do this a directory at a time.

For the first batch, retitling to:
Modern IDB: Split all storage/indexeddb tests into separate HTML + JS format</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156631</commentid>
    <comment_count>2</comment_count>
      <attachid>269269</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-19 10:28:18 -0800</bug_when>
    <thetext>Created attachment 269269
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156639</commentid>
    <comment_count>3</comment_count>
      <attachid>269269</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-01-19 10:40:48 -0800</bug_when>
    <thetext>Comment on attachment 269269
Patch v1

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156660</commentid>
    <comment_count>4</comment_count>
      <attachid>269269</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 11:32:18 -0800</bug_when>
    <thetext>Comment on attachment 269269
Patch v1

Clearing flags on attachment: 269269

Committed r195299: &lt;http://trac.webkit.org/changeset/195299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156661</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 11:32:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269269</attachid>
            <date>2016-01-19 10:28:18 -0800</date>
            <delta_ts>2016-01-19 11:32:18 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>151547</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNTgzZmFmLi4zYjczZDA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTYtMDEt
MTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFNwbGl0IGFsbCBzdG9yYWdlL2luZGV4ZWRkYiB0ZXN0cyBpbnRvIHNlcGFyYXRlIEhUTUwg
KyBKUyBmb3JtYXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTMxNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Nsb25lLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2Nsb3NlZC1jdXJzb3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jb25uZWN0aW9uLWxlYWsuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItY2FzdC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNv
ci1sZWFrLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLW92ZXJsb2Fk
cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXF1ZXN0LWN5Y2xl
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXgtYnVnMTEwNzky
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNh
Y3Rpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1yYWNlLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdC1sb29rdXBzLWluLXZlcnNpb25jaGFuZ2UuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWJhZC12ZXJzaW9ucy5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wdGlvbmFsLWFyZ3VtZW50cy5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWludmFsaWRhdGlvbi5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLXJhY2UuaHRtbDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9wcmltYXJ5LWtleS11bmlxdWUtdG8tb2JqZWN0c3RvcmUuaHRtbDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWxlYWsuaHRtbDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LXJlc3VsdC1jYWNoZS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jbG9uZS1leGNlcHRpb24uanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Nsb25lLWV4Y2VwdGlvbi5odG1sLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jbG9zZWQtY3Vyc29yLmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jbG9zZWQtY3Vyc29yLmh0bWwu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Nvbm5lY3Rpb24tbGVhay5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY29ubmVjdGlvbi1s
ZWFrLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1j
YXN0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
Y2FzdC5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
bGVhay5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWxlYWsuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LW92ZXJsb2Fkcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLW92ZXJsb2Fkcy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jdXJzb3ItcmVxdWVzdC1jeWNsZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLXJlcXVlc3QtY3ljbGUuaHRtbC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXgtYnVnMTEwNzkyLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC1idWcxMTA3OTIu
aHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJh
c2UtdHJhbnNhY3Rpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLXJhY2UuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLXJhY2UuaHRtbC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbm9ibG9icy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3QtbG9va3Vwcy1pbi12ZXJzaW9uY2hhbmdlLmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3QtbG9va3Vwcy1pbi12
ZXJzaW9uY2hhbmdlLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW4tYmFkLXZlcnNpb25zLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWJhZC12ZXJzaW9ucy5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vcHRpb25hbC1hcmd1bWVudHMuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wdGlvbmFsLWFyZ3VtZW50cy5odG1sLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1pbnZhbGlkYXRpb24uanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWludmFsaWRh
dGlvbi5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRj
aC1yYWNlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVm
ZXRjaC1yYWNlLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3By
aW1hcnkta2V5LXVuaXF1ZS10by1vYmplY3RzdG9yZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcHJpbWFyeS1rZXktdW5pcXVlLXRvLW9iamVjdHN0b3JlLmh0
bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtbGVhay5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1sZWFr
Lmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtcmVz
dWx0LWNhY2hlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXF1ZXN0LXJlc3VsdC1jYWNoZS5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zdHJ1Y3R1cmVkLWNsb25lLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9u
LWNyb3NzLWZyYW1lLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1s
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21w
bGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24uaHRtbC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gt
aW4tdGFza3MuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWNyYXNoLWluLXRhc2tzLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLW9yZGVyaW5nLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vcmRlcmluZy5odG1sLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1vdmVybGFwcGluZy5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
b3ZlcmxhcHBpbmcuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtZXZlbnQtYmFzaWMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV2ZW50LWJhc2ljLmh0bWwuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV2ZW50LmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1l
dmVudC5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13
aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtaW4tdGFza3MuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vcmRlcmluZy5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLW92ZXJsYXBwaW5nLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV2ZW50LWJhc2lj
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXZlbnQu
aHRtbDoKKwogMjAxNi0wMS0xOSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdW2Nzcy1hbGlnbl0ganVzdGlmeS1zZWxmIHN0cmV0
Y2ggaXMgbm90IGFwcGxpZWQgZm9yIGltZyBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY2xvbmUtZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jbG9uZS1leGNlcHRpb24uaHRtbAppbmRleCBhMzdkODM0Li45Yjc1
OTQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jbG9uZS1leGNl
cHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jbG9uZS1leGNl
cHRpb24uaHRtbApAQCAtMSw1MCArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIkVuc3VyZSBEYXRhQ2xvbmVFcnJvciBpcyBjb25zaXN0ZW50bHkgdGhyb3du
IGJ5IEluZGV4ZWREQiBtZXRob2RzIik7Ci0KLXZhciBOT05fQ0xPTkVBQkxFID0gc2VsZjsKLXZh
ciBJTlZBTElEX0tFWSA9IHt9OwotCi1zZXREQk5hbWVGcm9tUGF0aCgpOwotZG9GaXJzdE9wZW4o
KTsKLQotZnVuY3Rpb24gZG9GaXJzdE9wZW4oKQotewotICAgIHByZWFtYmxlKCk7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSArICcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIG9uVXBncmFkZU5lZWRlZChlKSB7Ci0g
ICAgICAgIHByZWFtYmxlKCk7Ci0gICAgICAgIGRiID0gZS50YXJnZXQucmVzdWx0OwotICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKS5w
dXQoTk9OX0NMT05FQUJMRSwgMCk7IiwgIjI1IiwgIidEYXRhQ2xvbmVFcnJvciciKTsKLSAgICAg
ICAgZG9TZWNvbmRPcGVuKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZG9TZWNvbmRPcGVuKCkK
LXsKLSAgICBwcmVhbWJsZSgpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihkYm5hbWUgKyAnMicpIik7Ci0gICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5j
dGlvbiBvblVwZ3JhZGVOZWVkZWQoZSkgewotICAgICAgICBwcmVhbWJsZSgpOwotICAgICAgICBk
YiA9IGUudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KE5PTl9DTE9ORUFCTEUsIDApOyIsICIyNSIs
ICInRGF0YUNsb25lRXJyb3InIik7Ci0gICAgICAgIGRvVGhpcmRPcGVuKCk7Ci0gICAgfTsKLX0K
LQotZnVuY3Rpb24gZG9UaGlyZE9wZW4oKQotewotICAgIHByZWFtYmxlKCk7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSArICczJykiKTsKLSAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIG9uVXBncmFkZU5lZWRlZChlKSB7Ci0gICAg
ICAgIHByZWFtYmxlKCk7Ci0gICAgICAgIGRiID0gZS50YXJnZXQucmVzdWx0OwotICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQo
Tk9OX0NMT05FQUJMRSwgSU5WQUxJRF9LRVkpOyIsICIyNSIsICInRGF0YUNsb25lRXJyb3InIik7
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci19Ci0KLTwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Nsb25lLWV4Y2VwdGlvbi5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jbG9zZWQtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jbG9zZWQtY3Vyc29yLmh0bWwKaW5kZXggYTMwNzYyMC4uY2ZkM2FiYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY2xvc2VkLWN1cnNvci5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Nsb3NlZC1jdXJzb3IuaHRtbApAQCAtMSwz
OCArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlm
eSB0aGF0IHRoYXQgY3Vyc29ycyBhY2Nlc3NlZCBhZnRlciBiZWluZyBjbG9zZWQgYXJlIHdlbGwg
YmVoYXZlZCIpOwotCi1pbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgb25PcGVuKTsKLWZ1
bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KHt2YWx1ZTogJ3ZhbHVlJ30sIFsna2V5J10pIik7Ci19Ci0KLWZ1bmN0aW9uIG9u
T3BlbihldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnc3Rv
cmUnKSIpOwotICAgIGV2YWxBbmRMb2coImN1cnNvclJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29y
KCkiKTsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9wZW5DdXJzb3JT
dWNjZXNzKGV2dCkgewotICAgICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICBkZWJ1ZygiRG9uJ3Qg
Y29udGludWUgdGhlIGN1cnNvciwgc28gaXQgcmV0YWlucyBpdHMga2V5L3ByaW1hcnlLZXkvdmFs
dWUiKTsKLSAgICB9OwotICAgIHR4Lm9uY29tcGxldGUgPSBmdW5jdGlvbiB0cmFuc2FjdGlvbkNv
bXBsZXRlKGV2dCkgewotICAgICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KGN1cnNvci5rZXkpIiwgJ1sia2V5Il0nKTsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3IucHJpbWFy
eUtleSkiLCAnWyJrZXkiXScpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04u
c3RyaW5naWZ5KGN1cnNvci52YWx1ZSkiLCAneyJ2YWx1ZSI6InZhbHVlIn0nKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLX0KLQotPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xvc2VkLWN1cnNvci5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
b25uZWN0aW9uLWxlYWsuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Nvbm5l
Y3Rpb24tbGVhay5odG1sCmluZGV4IDM4OTA2YTkuLmM2ZDg5NTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Nvbm5lY3Rpb24tbGVhay5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Nvbm5lY3Rpb24tbGVhay5odG1sCkBAIC0xLDc4ICsx
LDkgQEAKLTwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiUmVncmVzc2lv
biB0ZXN0IHRvIGVuc3VyZSB0aGF0IEluZGV4ZWREQiBjb25uZWN0aW9ucyBkb24ndCBsZWFrIik7
Ci0KLXNldERCTmFtZUZyb21QYXRoKCk7Ci1kb0ZpcnN0T3BlbigpOwotCi1mdW5jdGlvbiBkb0Zp
cnN0T3BlbigpCi17Ci0gICAgcHJlYW1ibGUoKTsKLQotICAgIGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7Ci0gICAgZXZhbEFuZExvZygic2F3VXBncmFk
ZU5lZWRlZDEgPSBmYWxzZSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIG9uVXBncmFkZU5l
ZWRlZDEoKSB7Ci0gICAgICAgIHByZWFtYmxlKCk7Ci0gICAgICAgIGV2YWxBbmRMb2coInNhd1Vw
Z3JhZGVOZWVkZWQxID0gdHJ1ZSIpOwotICAgIH07Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiBvbk9wZW5TdWNjZXNzMSgpIHsKLSAgICAgICAgcHJlYW1ibGUoKTsKLSAgICAgICAg
c2hvdWxkQmVUcnVlKCJzYXdVcGdyYWRlTmVlZGVkMSIpOwotICAgICAgICBldmFsQW5kTG9nKCJk
YiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsK
LQotICAgICAgICBkb1NlY29uZE9wZW4oKTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkb1NlY29u
ZE9wZW4oKQotewotICAgIHByZWFtYmxlKCk7Ci0KLSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJs
b2NrZWRDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRV
cGdyYWRlTmVlZGVkQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBv
bk9wZW5TdWNjZXNzMigpIHsKLSAgICAgICAgcHJlYW1ibGUoKTsKLSAgICAgICAgZXZhbEFuZExv
ZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImRiID0gbnVs
bCIpOwotICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gbnVsbCIpOwotCi0gICAgICAgIGRl
YnVnKCJSdW4gR0Mgb3V0c2lkZSBvZiByZXF1ZXN0J3MgY2FsbGJhY2sgdmlhIHNldFRpbWVvdXQo
KSIpOwotICAgICAgICBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGV2YWxB
bmRMb2coIndpbmRvdy5nYygpIik7Ci0gICAgICAgICAgICBkb1RoaXJkT3BlbigpOwotICAgICAg
ICB9LCAwKTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkb1RoaXJkT3BlbigpCi17Ci0gICAgcHJl
YW1ibGUoKTsKLQotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDIpIik7Ci0gICAgZXZhbEFuZExvZygic2F3VXBncmFkZU5lZWRlZDMgPSBmYWxzZSIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIG9uVXBncmFkZU5lZWRlZDIoKSB7Ci0gICAgICAgIHBy
ZWFtYmxlKCk7Ci0gICAgICAgIGV2YWxBbmRMb2coInNhd1VwZ3JhZGVOZWVkZWQzID0gdHJ1ZSIp
OwotICAgIH07Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBvbk9wZW5TdWNjZXNz
MygpIHsKLSAgICAgICAgcHJlYW1ibGUoKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJzYXdVcGdy
YWRlTmVlZGVkMyIpOwotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7
Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKLQotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9OwotfQotCi08L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jb25uZWN0aW9uLWxlYWsuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNh
c3QuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jYXN0Lmh0bWwK
aW5kZXggYmQ2MmEzYi4uMzRhYjgzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWNhc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItY2FzdC5odG1sCkBAIC0xLDQ0ICsxLDkgQEAKLTwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiRW5zdXJlIGN1cnNvciB3cmFwcGVycyBhcmUgY3JlYXRl
ZCBjb3JyZWN0bHkuIik7Ci0KLWluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCB2ZXJpZnlX
cmFwcGVycyk7Ci1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQotewotICAgIHByZWFtYmxl
KGV2dCk7Ci0gICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgwLCAwKSIpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlXcmFw
cGVycyhldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOwotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSB0eC5v
YmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKLQotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gb25PcGVuQ3Vyc29yU3VjY2VzcyhldnQpIHsKLSAgICAgICAgcHJlYW1i
bGUoZXZ0KTsKLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY3Vyc29yLnVwZGF0ZSgxKSIpOwot
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb25VcGRhdGVTdWNjZXNzKGV2
dCkgewotICAgICAgICAgICAgcHJlYW1ibGUoZXZ0KTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvciA9IG51bGwiKTsKLSAgICAgICAgICAgIGdjKCk7Ci0gICAgICAgICAgICBnYygpOyAv
LyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gY2FsbCB0d2ljZS4gaHR0cDovL2NyYnVnLmNvbS8y
ODgwNzIKLSAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tDdXJzb3JUeXBlLCAwKTsKLSAgICAg
ICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBjaGVja0N1cnNvclR5cGUoKSB7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJyZXF1ZXN0LnNvdXJjZS50b1N0cmluZygpIiwgIltvYmplY3Qg
SURCQ3Vyc29yV2l0aFZhbHVlXSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi08L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItY2FzdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItbGVhay5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWxlYWsuaHRtbAppbmRleCBhYmVhYmY4Li4zZGJiY2M5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItbGVhay5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1sZWFrLmh0bWwKQEAgLTEsNTYg
KzEsOSBAQAotPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkg
dGhhdCB0aGF0IGN1cnNvcnMgd2Vha2x5IGhvbGQgc2NyaXB0IHZhbHVlIHByb3BlcnRpZXMiKTsK
LQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICBpbmRleGVkREJUZXN0KHByZXBhcmVEYXRh
YmFzZSwgb25PcGVuKTsKLX0gZWxzZSB7Ci0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVp
cmVzIGFjY2VzcyB0byB0aGUgSW50ZXJuYWxzIG9iamVjdCcpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQotewotICAgIGRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKLSAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
OwotICAgIHN0b3JlLnB1dCh7dmFsdWU6ICd2YWx1ZSd9LCBbJ2tleSddKTsKLX0KLQotZnVuY3Rp
b24gb25PcGVuKGV2dCkKLXsKLSAgICAvLyBldmFsQW5kTG9nKCkgaXMgbm90IHVzZWQgYXMgdGhh
dCBnZW5lcmF0ZXMgbmV3IERPTSBub2Rlcy4KLQotICAgIGRiID0gZXZ0LnRhcmdldC5yZXN1bHQ7
Ci0gICAgdHggPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKTsKLSAgICBzdG9yZSA9IHR4Lm9iamVj
dFN0b3JlKCdzdG9yZScpOwotICAgIGN1cnNvclJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCk7
Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgY3Vy
c29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQ7Ci0gICAgfTsKLSAgICB0eC5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiLmNsb3NlKCk7Ci0KLSAgICAgICAgLy8gVHJ5IGFuZCBp
bmR1Y2UgYSBsZWFrIGJ5IGEgcmVmZXJlbmNlIGN5Y2xlIGZyb20gRE9NIHRvIFY4IGFuZCBiYWNr
LgotICAgICAgICAvLyBJZiB0aGUgdjggdmFsdWUgb2YgY3Vyc29yLmtleSAoZXRjKSBpcyBvbmx5
IGhlbGQgYnkgdGhlIGN1cnNvcidzCi0gICAgICAgIC8vIFY4IHdyYXBwZXIgdGhlbiB0aGVyZSB3
aWxsIGJlIG5vIGxlYWsuCi0gICAgICAgIGN1cnNvci5rZXkuY3Vyc29yID0gY3Vyc29yOwotICAg
ICAgICBjdXJzb3IucHJpbWFyeUtleS5jdXJzb3IgPSBjdXJzb3I7Ci0gICAgICAgIGN1cnNvci52
YWx1ZS5jdXJzb3IgPSBjdXJzb3I7Ci0KLSAgICAgICAgY3Vyc29yT2JzZXJ2ZXIgPSBpbnRlcm5h
bHMub2JzZXJ2ZUdDKGN1cnNvcik7Ci0KLSAgICAgICAgY3Vyc29yUmVxdWVzdCA9IG51bGw7Ci0g
ICAgICAgIGN1cnNvciA9IG51bGw7Ci0KLSAgICAgICAgZ2MoKTsKLQotICAgICAgICBzaG91bGRC
ZVRydWUoImN1cnNvck9ic2VydmVyLndhc0NvbGxlY3RlZCIpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9OwotfQotCi0KLTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2N1cnNvci1sZWFrLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1vdmVy
bG9hZHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1vdmVybG9h
ZHMuaHRtbAppbmRleCA3NGFlNTI2Li4xNWViNjEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itb3ZlcmxvYWRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLW92ZXJsb2Fkcy5odG1sCkBAIC0xLDc4ICsxLDkgQEAK
LTwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlZhbGlkYXRlIHRoZSBvdmVy
bG9hZHMgb2YgSURCT2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLCBJREJJbmRleC5vcGVuQ3Vyc29y
KCkgYW5kIElEQkluZGV4Lm9wZW5LZXlDdXJzb3IoKS4iKTsKLQotaW5kZXhlZERCVGVzdChwcmVw
YXJlRGF0YWJhc2UsIHZlcmlmeU92ZXJsb2Fkcyk7Ci1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2Uo
KQotewotICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBldmFsQW5k
TG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd2YWx1ZScpIik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHt2YWx1ZTogMH0sIDApIik7Ci19Ci0KLWZ1bmN0aW9uIHZl
cmlmeU92ZXJsb2FkcygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlPdmVy
bG9hZHMoKToiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOwotICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKLQot
ICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAibmV4dCIpOwot
ICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKDApIiwgIm5leHQiKTsK
LSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigic3RvcmUub3BlbkN1cnNvcigwLCAnbmV4dCcpIiwg
Im5leHQiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigic3RvcmUub3BlbkN1cnNvcigwLCAn
bmV4dHVuaXF1ZScpIiwgIm5leHR1bmlxdWUiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigi
c3RvcmUub3BlbkN1cnNvcigwLCAncHJldicpIiwgInByZXYiKTsKLSAgICBjaGVja0N1cnNvckRp
cmVjdGlvbigic3RvcmUub3BlbkN1cnNvcigwLCAncHJldnVuaXF1ZScpIiwgInByZXZ1bmlxdWUi
KTsKLQotICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLm9ubHkoMCkpIiwgIm5leHQiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigic3RvcmUu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIiwgIm5leHQiKTsKLSAgICBj
aGVja0N1cnNvckRpcmVjdGlvbigic3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDAp
LCAnbmV4dHVuaXF1ZScpIiwgIm5leHR1bmlxdWUiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlv
bigic3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAncHJldicpIiwgInByZXYi
KTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigic3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5n
ZS5vbmx5KDApLCAncHJldnVuaXF1ZScpIiwgInByZXZ1bmlxdWUiKTsKLQotICAgIGNoZWNrQ3Vy
c29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKCkiLCAibmV4dCIpOwotICAgIGNoZWNrQ3Vy
c29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKDApIiwgIm5leHQiKTsKLSAgICBjaGVja0N1
cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbkN1cnNvcigwLCAnbmV4dCcpIiwgIm5leHQiKTsKLSAg
ICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbkN1cnNvcigwLCAnbmV4dHVuaXF1ZScp
IiwgIm5leHR1bmlxdWUiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbkN1
cnNvcigwLCAncHJldicpIiwgInByZXYiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5k
ZXgub3BlbkN1cnNvcigwLCAncHJldnVuaXF1ZScpIiwgInByZXZ1bmlxdWUiKTsKLQotICAgIGNo
ZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkp
IiwgIm5leHQiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIiwgIm5leHQiKTsKLSAgICBjaGVja0N1cnNvckRp
cmVjdGlvbigiaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dHVuaXF1
ZScpIiwgIm5leHR1bmlxdWUiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3Bl
bkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAncHJldicpIiwgInByZXYiKTsKLSAgICBjaGVj
a0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAn
cHJldnVuaXF1ZScpIiwgInByZXZ1bmlxdWUiKTsKLQotICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9u
KCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLCAibmV4dCIpOwotICAgIGNoZWNrQ3Vyc29yRGlyZWN0
aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKDApIiwgIm5leHQiKTsKLSAgICBjaGVja0N1cnNvckRp
cmVjdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcpIiwgIm5leHQiKTsKLSAgICBj
aGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dHVuaXF1ZScp
IiwgIm5leHR1bmlxdWUiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3Blbktl
eUN1cnNvcigwLCAncHJldicpIiwgInByZXYiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigi
aW5kZXgub3BlbktleUN1cnNvcigwLCAncHJldnVuaXF1ZScpIiwgInByZXZ1bmlxdWUiKTsKLQot
ICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdl
Lm9ubHkoMCkpIiwgIm5leHQiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIiwgIm5leHQiKTsKLSAgICBj
aGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5
KDApLCAnbmV4dHVuaXF1ZScpIiwgIm5leHR1bmlxdWUiKTsKLSAgICBjaGVja0N1cnNvckRpcmVj
dGlvbigiaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAncHJldicpIiwg
InByZXYiKTsKLSAgICBjaGVja0N1cnNvckRpcmVjdGlvbigiaW5kZXgub3BlbktleUN1cnNvcihJ
REJLZXlSYW5nZS5vbmx5KDApLCAncHJldnVuaXF1ZScpIiwgInByZXZ1bmlxdWUiKTsKLQotICAg
IHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vy
c29yRGlyZWN0aW9uKHN0YXRlbWVudCwgZGlyZWN0aW9uKQotewotICAgIHJlcXVlc3QgPSBldmFs
KHN0YXRlbWVudCk7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZGVidWco
c3RhdGVtZW50KTsKLSAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJldmVudC50YXJnZXQucmVzdWx0
IikKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmRp
cmVjdGlvbiIsIGRpcmVjdGlvbik7Ci0gICAgfTsKLX0KLQotPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLW92ZXJsb2Fkcy5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jdXJzb3ItcmVxdWVzdC1jeWNsZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLXJlcXVlc3QtY3ljbGUuaHRtbAppbmRleCA0ZjY1ODQzLi5kZjk2YzI4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmVxdWVz
dC1jeWNsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1y
ZXF1ZXN0LWN5Y2xlLmh0bWwKQEAgLTEsODggKzEsOSBAQAotPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCB0aGF0IGN1cnNvcnMgd2Vha2x5IGhvbGQg
cmVxdWVzdCwgYW5kIHdvcmsgaWYgcmVxdWVzdCBpcyBHQydkIik7Ci0KLWluZGV4ZWREQlRlc3Qo
cHJlcGFyZURhdGFiYXNlLCBvbk9wZW4pOwotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0
KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnKSIpOwotICAgIHN0b3JlLnB1dCgidmFsdWUxIiwgImtleTEiKTsKLSAgICBzdG9y
ZS5wdXQoInZhbHVlMiIsICJrZXkyIik7Ci19Ci0KLWZ1bmN0aW9uIG9uT3BlbihldnQpCi17Ci0g
ICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBldmFsQW5kTG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7Ci0g
ICAgZXZhbEFuZExvZygic3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotCi0gICAg
ZXZhbEFuZExvZygiY3Vyc29yUmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1
cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb3BlbkN1cnNvclJlcXVlc3RTdWNjZXNz
KGV2dCkgewotICAgICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICBkZWJ1ZygiUmVzdWx0IHdp
bGwgYmUgY2hlY2tlZCBsYXRlciwgdG8gZW5zdXJlIHRoYXQgbGF6eSBhY2Nlc3MgaXMgc2FmZSIp
OwotICAgIH07Ci0KLSAgICBldmFsQW5kTG9nKCJvdGhlclJlcXVlc3QgPSBzdG9yZS5nZXQoMCki
KTsKLSAgICBvdGhlclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb3RoZXJSZXF1ZXN0U3Vj
Y2VzcyhldnQpIHsKLSAgICAgICAgcHJlYW1ibGUoZXZ0KTsKLQotICAgICAgICBkZWJ1ZygiVmVy
aWZ5IHRoYXQgdGhlIHJlcXVlc3QncyByZXN1bHQgY2FuIGJlIGFjY2Vzc2VkIGxhemlseToiKTsK
LSAgICAgICAgZXZhbEFuZExvZygiZ2MoKSIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY3Vy
c29yIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLmtleSIsICJrZXkx
Iik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlIiwgInZhbHVl
MSIpOwotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0LmV4dHJhID0gMTIzIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5leHRyYSA9IDQ1NiIpOwotCi0gICAgICAgIC8vIEFz
c2lnbiBhIG5ldyBoYW5kbGVyIHRvIGluc3BlY3QgdGhlIHJlcXVlc3QgYW5kIGN1cnNvciBpbmRp
cmVjdGx5LgotICAgICAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGN1cnNv
ckNvbnRpbnVlU3VjY2VzcyhldnQpIHsKLSAgICAgICAgICAgIHByZWFtYmxlKGV2dCk7Ci0gICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
ICAgICAgICBzaG91bGRCZU5vbk51bGwoImN1cnNvciIpOwotICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjdXJzb3Iua2V5IiwgImtleTIiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlIiwgInZhbHVlMiIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5leHRyYSIsICIxMjMiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IuZXh0cmEiLCAiNDU2Iik7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZGVidWcoIkVu
c3VyZSByZXF1ZXN0IGlzIG5vdCByZWxlYXNlZCBpZiBjdXJzb3IgaXMgc3RpbGwgYXJvdW5kLiIp
OwotICAgICAgICBjdXJzb3JSZXF1ZXN0T2JzZXJ2YXRpb24gPSBpbnRlcm5hbHMub2JzZXJ2ZUdD
KGN1cnNvclJlcXVlc3QpOwotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gbnVs
bCIpOwotICAgICAgICBldmFsQW5kTG9nKCJnYygpIik7Ci0gICAgICAgIHNob3VsZEJlRmFsc2Uo
ImN1cnNvclJlcXVlc3RPYnNlcnZhdGlvbi53YXNDb2xsZWN0ZWQiKTsKLQotICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotCi0gICAgICAgIGN1cnNvck9ic2VydmF0aW9u
ID0gaW50ZXJuYWxzLm9ic2VydmVHQyhjdXJzb3IpOwotICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IgPSBudWxsIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImdjKCkiKTsKLSAgICAgICAgc2hvdWxk
QmVGYWxzZSgiY3Vyc29yT2JzZXJ2YXRpb24ud2FzQ29sbGVjdGVkIik7Ci0KLSAgICAgICAgZXZh
bEFuZExvZygiZmluYWxSZXF1ZXN0ID0gc3RvcmUuZ2V0KDApIik7Ci0gICAgICAgIGZpbmFsUmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBmaW5hbFJlcXVlc3RTdWNjZXNzKGV2dCkgewotICAg
ICAgICAgICAgcHJlYW1ibGUoZXZ0KTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiY3Vyc29yLmtleSIsICJrZXkyIik7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImN1cnNvci52YWx1ZSIsICJ2YWx1ZTIiKTsKLQotICAgICAgICAgICAgY3Vyc29yT2JzZXJ2
YXRpb24gPSBpbnRlcm5hbHMub2JzZXJ2ZUdDKGN1cnNvcik7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IgPSBudWxsIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJnYygpIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZVRydWUoImN1cnNvclJlcXVlc3RPYnNlcnZhdGlvbi53YXNDb2xs
ZWN0ZWQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY3Vyc29yT2JzZXJ2YXRpb24ud2Fz
Q29sbGVjdGVkIik7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHR4Lm9uY29tcGxldGUgPSBm
aW5pc2hKU1Rlc3Q7Ci19Ci0KLQotPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3Vyc29yLXJlcXVlc3QtY3ljbGUuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlSW5kZXgtYnVnMTEwNzkyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
ZWxldGVJbmRleC1idWcxMTA3OTIuaHRtbAppbmRleCA4MWFmM2NkLi4zZThkMTcyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC1idWcxMTA3OTIu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC1idWcx
MTA3OTIuaHRtbApAQCAtMSw0MSArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIkVuc3VyZSBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGVJbmRl
eCgpIHdvcmtzIGlmIElEQkluZGV4IG9iamVjdCBoYXMgbm90IGJlZW4gZmV0Y2hlZCAtIHJlZ3Jl
c3Npb24gdGVzdCBmb3IgYnVnIDExMDc5Mi4iKTsKLQotaW5kZXhlZERCVGVzdChvbkZpcnN0VXBn
cmFkZU5lZWRlZCwgY2xvc2VBbmRSZU9wZW4sIHt2ZXJzaW9uOiAxfSk7Ci0KLWZ1bmN0aW9uIG9u
Rmlyc3RVcGdyYWRlTmVlZGVkKGV2dCkKLXsKLSAgICBwcmVhbWJsZShldnQpOwotICAgIGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAna2V5UGF0aCcpIik7Ci19Ci0KLWZ1bmN0aW9uIGNsb3Nl
QW5kUmVPcGVuKCkKLXsKLSAgICBwcmVhbWJsZSgpOwotICAgIGV2YWxBbmRMb2coImRiLmNsb3Nl
KCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKGRibmFtZSwgMikiKTsKLSAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRC
bG9ja2VkQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBvblNlY29uZFVwZ3JhZGVOZWVk
ZWQ7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5pc2hKU1Rlc3Q7Ci19Ci0KLWZ1bmN0aW9u
IG9uU2Vjb25kVXBncmFkZU5lZWRlZChldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwot
ICAgIC8vIERvIE5PVCBhZGQgYSBjYWxsIHRvIHN0b3JlLmluZGV4KCdpbmRleCcpIGhlcmUgKGUu
Zy4gdG8gYXNzZXJ0IGl0IGV4aXN0cykKLSAgICAvLyBvciB0aGUgYnVnIGRpc2FwcGVhcnMuCi0g
ICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiKTsKLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgnKSIsICJET01FeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKLX0KLQotPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlSW5kZXgtYnVnMTEwNzkyLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi5odG1sCmlu
ZGV4IDY3YjRhZjYuLjcyMzgyNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24uaHRtbApAQCAtMSwz
MyArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJFbnN1cmUg
ZGVsZXRlRGF0YWJhc2UoKSBjYW4gcnVuIGNvbmN1cnJlbnRseSB3aXRoIHRyYW5zYWN0aW9ucyBp
biBvdGhlciBkYXRhYmFzZXMiKTsKLQotaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHN0
YXJ0VHJhbnNhY3Rpb24pOwotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpIHsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoIlN0YXJ0IGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB0aGUgZmly
c3QgZGF0YWJhc2U6Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnLCAncmVhZG9ubHknKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZScpLmdldCgwKSIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJEZWxldGUg
YSBkaWZmZXJlbnQgZGF0YWJhc2U6Iik7Ci0gICAgZXZhbEFuZExvZygiZGJuYW1lMiA9IGRibmFt
ZSArICcyJyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lMikiKTsKLSAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFBh
c3NlZCgic3VjY2VzcyBldmVudCB3YXMgZmlyZWQgYXQgZGVsZXRlIHJlcXVlc3QiKTsKLSAgICB9
OwotCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLX0KLQotPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2Ut
dHJhbnNhY3Rpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtcmFjZS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtcmFjZS5odG1sCmluZGV4IDM4MWU0MTIu
LjcwNDc4ZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFk
YXRhLXJhY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0
YS1yYWNlLmh0bWwKQEAgLTEsMzkgKzEsOSBAQAotPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJFbnN1cmUgSW5kZXhlZERCIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGJlZm9y
ZSBvcGVuIG9uc3VjY2VzcyBoYXZlIGNvcnJlY3QgbWV0YWRhdGEiKTsKLQotaW5kZXhlZERCVGVz
dChwcmVwYXJlRGF0YWJhc2UsIG9uT3BlblN1Y2Nlc3MpOwotZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKGV2dCkKLXsKLSAgICBwcmVhbWJsZShldnQpOwotICAgIGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXgnLCAna2V5UGF0aCcpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24iKTsKLSAgICBzaG91bGROb3RUaHJvdygiaW5kZXggPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnaW5kZXgnKSIpOwotICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9u
IG9uVHJhbnNhY3Rpb25Db21wbGV0ZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBk
ZWJ1ZygiSW4gbXVsdGlwcm9jZXNzIG1vZGUsICdjb21wbGV0ZScgZXZlbnQgbWF5IGJlIGRpc3Bh
dGNoZWQgYmVmb3JlXG4iICsKLSAgICAgICAgICAidGhlICdzdWNjZXNzJyBhcnJpdmVzIHdpdGgg
dXBkYXRlZCBtZXRhZGF0YS4gRW5zdXJlIHRoZSBuZXcgbWV0YWRhdGFcbiIgKwotICAgICAgICAg
ICJpcyBzdGlsbCB1c2VkIGZvciB0cmFuc2FjdGlvbnMuIik7Ci0gICAgZXZhbEFuZExvZygic3Rv
cmUgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKS5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAg
IHNob3VsZE5vdFRocm93KCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpIik7Ci19Ci0KLWZ1
bmN0aW9uIG9uT3BlblN1Y2Nlc3MoZXZ0KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygic3Rv
cmUgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKS5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAg
IHNob3VsZE5vdFRocm93KCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL21ldGFkYXRhLXJhY2UuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sCmluZGV4IGZhNzY3
ZmUuLjQyODE3NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25v
YmxvYnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0
bWwKQEAgLTUsODIgKzUsNiBAQAogPC9oZWFkPgogPGJvZHk+CiA8aW5wdXQgdHlwZT0iZmlsZSIg
aWQ9ImZpbGVJbnB1dCIgbXVsdGlwbGU+PC9pbnB1dD4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBsaW1pdGF0aW9ucyBvZiBXZWJLaXQncyBJbmRl
eGVkREIgaW1wbGVtZW50YXRpb24uIik7Ci0vLyBGSVhNRTogVGhpcyB2ZXJpZmllcyB0aGF0IGJs
b2ItdHlwZSBkYXRhIGlzIHJlamVjdGVkIGZvciBub3csIHJhdGhlciB0aGFuIHNpbGVudGx5IGZh
aWxpbmcuCi0vLyBUcmFja2VkIGZvciB0aGUgQ2hyb21pdW0gcG9ydCBhczogaHR0cDovL2NyYnVn
LmNvbS8xMDgwMTIKLQotZmlsZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVJ
bnB1dCIpOwotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIHZhciBmaWxlUmVjdCA9IGZp
bGVJbnB1dC5nZXRDbGllbnRSZWN0cygpWzBdOwotICAgIHZhciB0YXJnZXRYID0gZmlsZVJlY3Qu
bGVmdCArIGZpbGVSZWN0LndpZHRoIC8gMjsKLSAgICB2YXIgdGFyZ2V0WSA9IGZpbGVSZWN0LnRv
cCArIGZpbGVSZWN0LmhlaWdodCAvIDI7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKFsncmVzb3VyY2VzL3Rlc3QtZGF0YS5odG1sJywgJ3Jlc291cmNlcy90ZXN0LWRhdGEudHh0
J10pOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldFgsIHRhcmdldFkpOwotICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkK
LXsKLSAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgdmFyIHRyYW5zID0gZXZlbnQu
dGFyZ2V0LnRyYW5zYWN0aW9uOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd2YWx1
ZScsICdrZXknKSIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RCbG9iKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RCbG9i
KCk6Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoIkZpbGVSZWFkZXIgIT0gbnVsbCIpOwotICAgIGV2
YWxBbmRMb2coInRlc3RfY29udGVudCA9ICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyBvbmx5IGEg
dGVzdC4nIik7Ci0gICAgZXZhbEFuZExvZygiYmxvYiA9IG5ldyBCbG9iKFt0ZXN0X2NvbnRlbnRd
KSIpOwotICAgIHZhbGlkYXRlRXhjZXB0aW9ucygiYmxvYiIsIHRlc3RGaWxlKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdEZpbGUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdEZpbGUo
KToiKTsKLSAgICBldmFsQW5kTG9nKCJmaWxlID0gZmlsZUlucHV0LmZpbGVzWzBdIik7Ci0gICAg
dmFsaWRhdGVFeGNlcHRpb25zKCJmaWxlIiwgdGVzdEZpbGVMaXN0KTsKLX0KLQotZnVuY3Rpb24g
dGVzdEZpbGVMaXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RGaWxlTGlz
dCgpOiIpOwotICAgIGV2YWxBbmRMb2coImZpbGVsaXN0ID0gZmlsZUlucHV0LmZpbGVzIik7Ci0g
ICAgdmFsaWRhdGVFeGNlcHRpb25zKCJmaWxlbGlzdCIsIGZpbmlzaEpTVGVzdCk7Ci19Ci0KLWZ1
bmN0aW9uIHZhbGlkYXRlRXhjZXB0aW9ucyh2YXJpYWJsZSwgb25Db21wbGV0ZSkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoInZhbGlkYXRlRXhjZXB0aW9ucygiICsgdmFyaWFibGUgKyAi
KToiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCAncmVhZHdyaXRlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLnB1dCgiICsgdmFyaWFibGUgKyAiLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRB
VEFfQ0xPTkVfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKCIg
KyB2YXJpYWJsZSArICIsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsK
LSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ciA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1
cnNvci51cGRhdGUoIiArIHZhcmlhYmxlICsgIikiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVf
RVJSIik7Ci0gICAgfTsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25Db21wbGV0ZTsK
LX0KLQotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIGluZGV4ZWREQlRlc3QocHJlcGFy
ZURhdGFiYXNlLCB0ZXN0QmxvYik7Ci19IGVsc2UgewotICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShz
KSB1c2luZyB0aGUgaW5wdXQgY29udHJvbCBhYm92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOwot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IGZ1bmN0
aW9uKCkgeyBpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgdGVzdEJsb2IpOyB9OwotfQot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbm9ibG9icy5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3QtbG9va3Vwcy1pbi12ZXJzaW9uY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3QtbG9va3Vwcy1pbi12ZXJzaW9uY2hhbmdlLmh0bWwKaW5k
ZXggN2ZkNGFmMS4uYjIwYTAyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0LWxvb2t1cHMtaW4tdmVyc2lvbmNoYW5nZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdC1sb29rdXBzLWluLXZlcnNpb25jaGFuZ2UuaHRt
bApAQCAtMSwyMCArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDI1NDciKTsKLQot
aW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIGZpbmlzaEpTVGVzdCk7Ci0KLWZ1bmN0aW9u
IHByZXBhcmVEYXRhYmFzZSgpIHsKLSAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbiIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ25vLXN1Y2gtc3RvcmUnKSIsICJET01FeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuaW5kZXgoJ25vLXN1Y2gtaW5kZXgnKSIsICJE
T01FeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKLX0KLQotPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0LWxv
b2t1cHMtaW4tdmVyc2lvbmNoYW5nZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWJhZC12ZXJzaW9u
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1iYWQtdmVyc2lvbnMu
aHRtbAppbmRleCA5NjM5MjFiLi4xYWNiYzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vcGVuLWJhZC12ZXJzaW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29wZW4tYmFkLXZlcnNpb25zLmh0bWwKQEAgLTQsMzAgKzQsNiBAQAog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiTm8gY3Jhc2hlcyB3aGVuIG9wZW5pbmcgYW5k
IHJlbG9hZGluZyB3aXRoIGJhZCB2ZXJzaW9uIG51bWJlcnMiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gIGV2YWxBbmRMb2coImRibmFtZSA9IFN0
cmluZyh3aW5kb3cubG9jYXRpb24pIik7Ci0KLSAgdHJ5IHsgaW5kZXhlZERCLm9wZW4oZGJuYW1l
LCAtMSk7IH0gY2F0Y2ggKGUpIHsgfQotICBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpOwotICB0
cnkgeyBpbmRleGVkREIub3BlbihkYm5hbWUsIC0xKTsgfSBjYXRjaCAoZSkgeyB9Ci0KLSAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpIHsK
LSAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbiArICI/MiI7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLSAgfSwgNTAwKTsKLX0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1iYWQtdmVyc2lv
bnMuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb3B0aW9uYWwtYXJndW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vcHRpb25hbC1hcmd1bWVudHMuaHRtbAppbmRleCAzM2FkYmUy
Li43OGVmZTU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcHRp
b25hbC1hcmd1bWVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cHRpb25hbC1hcmd1bWVudHMuaHRtbApAQCAtMSwxMzEgKzEsOSBAQAotPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFeGVyY2lzZSBvcHRpb25hbCBhcmd1bWVudHMgd2l0
aCBtaXNzaW5nIHZzLiB1bmRlZmluZWQgaW4gSW5kZXhlZERCIG1ldGhvZHMuIik7Ci0KLWluZGV4
ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBjaGVja09wdGlvbmFsQXJndW1lbnRzKTsKLWZ1bmN0
aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnYnlfbmFtZScsICduYW1lJywge3VuaXF1
ZTogdHJ1ZX0pIik7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2lkOiAxLCBuYW1lOiAn
YSd9KSIpOwotfQotCi1mdW5jdGlvbiBjaGVja09wdGlvbmFsQXJndW1lbnRzKGV2ZW50KQotewot
ICAgIGV2YWxBbmRMb2coInR4ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScp
Iik7Ci0gICAgdHgub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLQotICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHgub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlLmluZGV4KCdieV9uYW1lJykiKTsKLQotICAgIHNob3VsZEJlKCJJREJLZXlSYW5n
ZS5sb3dlckJvdW5kKDApLmxvd2VyT3BlbiIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJJREJL
ZXlSYW5nZS51cHBlckJvdW5kKDApLnVwcGVyT3BlbiIsICJmYWxzZSIpOwotICAgIHNob3VsZEJl
KCJJREJLZXlSYW5nZS5ib3VuZCgwLCAxKS5sb3dlck9wZW4iLCAiZmFsc2UiKTsKLSAgICBzaG91
bGRCZSgiSURCS2V5UmFuZ2UuYm91bmQoMCwgMSkudXBwZXJPcGVuIiwgImZhbHNlIik7Ci0KLSAg
ICBzaG91bGRCZSgiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwLCB1bmRlZmluZWQpLmxvd2VyT3Bl
biIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJJREJLZXlSYW5nZS51cHBlckJvdW5kKDAsIHVu
ZGVmaW5lZCkudXBwZXJPcGVuIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoIklEQktleVJhbmdl
LmJvdW5kKDAsIDEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKS5sb3dlck9wZW4iLCAiZmFsc2UiKTsK
LSAgICBzaG91bGRCZSgiSURCS2V5UmFuZ2UuYm91bmQoMCwgMSwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWQpLnVwcGVyT3BlbiIsICJmYWxzZSIpOwotCi0gICAgc2hvdWxkTm90VGhyb3coInN0b3JlLmFk
ZCh7aWQ6IDIsIG5hbWU6ICdiJ30pIik7Ci0gICAgc2hvdWxkTm90VGhyb3coInN0b3JlLnB1dCh7
aWQ6IDMsIG5hbWU6ICdjJ30pIik7Ci0gICAgc2hvdWxkTm90VGhyb3coInN0b3JlLmFkZCh7aWQ6
IDQsIG5hbWU6ICdkJ30sIHVuZGVmaW5lZCkiKTsKLSAgICBzaG91bGROb3RUaHJvdygic3RvcmUu
cHV0KHtpZDogNSwgbmFtZTogJ2UnfSwgdW5kZWZpbmVkKSIpOwotCi0gICAgdGFza3MgPSBbCi0g
ICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigic3RvcmUub3BlbkN1cnNv
cigpIiwgIm5leHQiLCA1LCBjYWxsYmFjayk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNr
KSB7IHZlcmlmeUN1cnNvcigic3RvcmUub3BlbkN1cnNvcihudWxsKSIsICJuZXh0IiwgNSwgY2Fs
bGJhY2spOyB9LAotICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykgeyB2ZXJpZnlDdXJzb3IoInN0
b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCg0KSkiLCAibmV4dCIsIDIsIGNh
bGxiYWNrKTsgfSwKLSAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsgdmVyaWZ5Q3Vyc29yKCJz
dG9yZS5vcGVuQ3Vyc29yKDMpIiwgIm5leHQiLCAxLCBjYWxsYmFjayk7IH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oY2FsbGJhY2spIHsgdmVyaWZ5Q3Vyc29yKCJpbmRleC5vcGVuQ3Vyc29yKCkiLCAi
bmV4dCIsIDUsIGNhbGxiYWNrKTsgfSwKLSAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsgdmVy
aWZ5Q3Vyc29yKCJpbmRleC5vcGVuQ3Vyc29yKG51bGwpIiwgIm5leHQiLCA1LCBjYWxsYmFjayk7
IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigiaW5kZXgub3Bl
bkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdiJykpIiwgIm5leHQiLCA0LCBjYWxsYmFj
ayk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigiaW5kZXgu
b3BlbkN1cnNvcignYycpIiwgIm5leHQiLCAxLCBjYWxsYmFjayk7IH0sCi0KLSAgICAgICAgZnVu
Y3Rpb24oY2FsbGJhY2spIHsgdmVyaWZ5Q3Vyc29yKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLCAi
bmV4dCIsIDUsIGNhbGxiYWNrKTsgfSwKLSAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsgdmVy
aWZ5Q3Vyc29yKCJpbmRleC5vcGVuS2V5Q3Vyc29yKG51bGwpIiwgIm5leHQiLCA1LCBjYWxsYmFj
ayk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigiaW5kZXgu
b3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdiJykpIiwgIm5leHQiLCA0LCBj
YWxsYmFjayk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigi
aW5kZXgub3BlbktleUN1cnNvcignYycpIiwgIm5leHQiLCAxLCBjYWxsYmFjayk7IH0sCi0KLSAg
ICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsgdmVyaWZ5Q291bnQoInN0b3JlLmNvdW50KCkiLCA1
LCBjYWxsYmFjayk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUNvdW50
KCJzdG9yZS5jb3VudChudWxsKSIsIDUsIGNhbGxiYWNrKTsgfSwKLSAgICAgICAgZnVuY3Rpb24o
Y2FsbGJhY2spIHsgdmVyaWZ5Q291bnQoInN0b3JlLmNvdW50KElEQktleVJhbmdlLmxvd2VyQm91
bmQoMikpIiwgNCwgY2FsbGJhY2spOyB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7
IHZlcmlmeUNvdW50KCJpbmRleC5jb3VudCgpIiwgNSwgY2FsbGJhY2spOyB9LAotICAgICAgICBm
dW5jdGlvbihjYWxsYmFjaykgeyB2ZXJpZnlDb3VudCgiaW5kZXguY291bnQobnVsbCkiLCA1LCBj
YWxsYmFjayk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUNvdW50KCJp
bmRleC5jb3VudChJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdiJykpIiwgNCwgY2FsbGJhY2spOyB9
LAotCi0gICAgICAgIGNvbnRpbnVlVW5kZWZpbmVkLAotCi0gICAgXTsKLSAgICBmdW5jdGlvbiBk
b05leHRUYXNrKCkgewotICAgICAgICB2YXIgdGFzayA9IHRhc2tzLnNoaWZ0KCk7Ci0gICAgICAg
IGlmICh0YXNrKSB7Ci0gICAgICAgICAgICB0YXNrKGRvTmV4dFRhc2spOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGRvTmV4dFRhc2soKTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Q3Vyc29yKGV4cHIs
IGRpcmVjdGlvbiwgZXhwZWN0ZWQsIGNhbGxiYWNrKQotewotICAgIHByZWFtYmxlKCk7Ci0gICAg
Y3Vyc29yID0gbnVsbDsKLSAgICBjb250aW51ZXMgPSAwOwotICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSAiICsgZXhwcik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAocmVxdWVzdC5yZXN1bHQpIHsKLSAgICAgICAgICAgIGlmICghY3Vyc29yKSB7Ci0gICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci5kaXJlY3Rpb24iLCBkaXJlY3Rp
b24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKytjb250aW51ZXM7Ci0gICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjb250aW51ZXMiLCBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpOwotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50
KGV4cHIsIGV4cGVjdGVkLCBjYWxsYmFjaykKLXsKLSAgICBwcmVhbWJsZSgpOwotICAgIGV2YWxB
bmRMb2coInJlcXVlc3QgPSAiICsgZXhwcik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBKU09OLnN0cmluZ2lmeShleHBl
Y3RlZCkpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNvbnRp
bnVlVW5kZWZpbmVkKGNhbGxiYWNrKQotewotICAgIHByZWFtYmxlKCk7Ci0gICAgZmlyc3QgPSB0
cnVlOwotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLQotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChmaXJzdCkgewotICAgICAg
ICAgICAgZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJl
cXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoInJlcXVlc3QucmVz
dWx0Iik7Ci0gICAgICAgICAgICBzaG91bGROb3RUaHJvdygiY3Vyc29yLmNvbnRpbnVlKHVuZGVm
aW5lZCkiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfQot
Ci08L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcHRp
b25hbC1hcmd1bWVudHMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gtaW52YWxpZGF0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1pbnZhbGlkYXRpb24u
aHRtbAppbmRleCBlZjJjODQzLi5kZmZlZmRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1pbnZhbGlkYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1pbnZhbGlkYXRpb24uaHRtbApAQCAtMSw5MCAr
MSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVuc3VyZSBJ
bmRleGVkREIncyB3cml0ZSBvcGVyYXRpb25zIGludmFsaWRhdGUgY3Vyc29yIHByZWZldGNoIGNh
Y2hlcyIpOwotCi1pbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgb25PcGVuU3VjY2Vzcyk7
Ci1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0g
ICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotfQotCi1mdW5jdGlv
biBvbk9wZW5TdWNjZXNzKGV2dCkKLXsKLSAgICBwcmVhbWJsZShldnQpOwotICAgIGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgdmFyIHN0ZXBzID0gWwotICAg
ICAgICBkZWxldGVSYW5nZSwKLSAgICAgICAgY2xlYXJTdG9yZQotICAgIF07Ci0KLSAgICAoZnVu
Y3Rpb24gbmV4dFN0ZXAoKSB7Ci0gICAgICAgIHZhciBzdGVwID0gc3RlcHMuc2hpZnQoKTsKLSAg
ICAgICAgaWYgKHN0ZXApIHsKLSAgICAgICAgICAgIGRvUHJlZmV0Y2hJbnZhbGlkYXRpb25UZXN0
KHN0ZXAsIG5leHRTdGVwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSgpKTsKLX0KLQot
ZnVuY3Rpb24gZG9QcmVmZXRjaEludmFsaWRhdGlvblRlc3Qob3BlcmF0aW9uLCBjYWxsYmFjaykK
LXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0iKTsKLSAgICBwcmVhbWJsZSgpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpLm9iamVjdFN0b3JlKCdz
dG9yZScpIik7Ci0gICAgZGVidWcoIlBvcHVsYXRlIHRoZSBzdG9yZSB3aXRoIDIwMCByZWNvcmRz
LiIpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCi0gICAgICAgIHN0b3JlLnB1
dChpLCBpKTsKLSAgICBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNv
cigpIik7Ci0gICAgY29udGludWUxMDBUaW1lcyhvcGVyYXRpb24sIGNhbGxiYWNrKTsKLX0KLQot
ZnVuY3Rpb24gY29udGludWUxMDBUaW1lcyhvcGVyYXRpb24sIGNhbGxiYWNrKQotewotICAgIHBy
ZWFtYmxlKCk7Ci0gICAgdmFyIGNvdW50ID0gMDsKLQotICAgIGN1cnNvclJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJl
c3VsdDsKLSAgICAgICAgKytjb3VudDsKLSAgICAgICAgaWYgKGNvdW50IDwgMTAwKSB7Ci0gICAg
ICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBzaG91bGRCZU5vbk51bGwoImN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAg
ICAgIGRvT3BlcmF0aW9uQW5kQ29udGludWUob3BlcmF0aW9uLCBjYWxsYmFjayk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBkb09wZXJhdGlvbkFuZENvbnRpbnVlKG9wZXJhdGlvbiwgY2FsbGJhY2sp
Ci17Ci0gICAgcHJlYW1ibGUoKTsKLSAgICBvcGVyYXRpb24oKTsKLSAgICBldmFsQW5kTG9nKCJj
dXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpIikKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9uQ29u
dGludWVTdWNjZXNzKCkgewotICAgICAgICBwcmVhbWJsZSgpOwotICAgICAgICBzaG91bGRCZU51
bGwoImN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfTsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlUmFuZ2UoKQotewotICAgIHJldHVybiBldmFsQW5kTG9nKCJz
dG9yZS5kZWxldGUoSURCS2V5UmFuZ2UuYm91bmQoLUluZmluaXR5LCArSW5maW5pdHkpKSIpOwot
fQotCi1mdW5jdGlvbiBjbGVhclN0b3JlKCkKLXsKLSAgICByZXR1cm4gZXZhbEFuZExvZygic3Rv
cmUuY2xlYXIoKSIpOwotfQotCi08L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wcmVmZXRjaC1pbnZhbGlkYXRpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJl
ZmV0Y2gtcmFjZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gt
cmFjZS5odG1sCmluZGV4IGVjMWI3YWYuLjcyN2ZmMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLXJhY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1yYWNlLmh0bWwKQEAgLTEsNTUgKzEsOSBAQAotPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgSW5kZXhlZERCJ3Mg
Y3Vyc29yIHByZWZldGNoIGNhY2hlIHJlcXVlc3RzIGFyZSBpbnZhbGlkYXRlZCIpOwotCi1pbmRl
eGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgb25PcGVuU3VjY2Vzcyk7Ci1mdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoZXZ0KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCJQb3B1bGF0ZSB3aXRoIGV2
ZW4gcmVjb3Jkcy4uLiIpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkgKz0gMikKLSAg
ICAgICAgc3RvcmUucHV0KGksIGkpOwotfQotCi1mdW5jdGlvbiBvbk9wZW5TdWNjZXNzKGV2dCkK
LXsKLSAgICBwcmVhbWJsZShldnQpOwotICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgZXZhbEFuZExvZygidHggPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
LCAncmVhZHdyaXRlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHR4Lm9iamVjdFN0b3Jl
KCdzdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3Io
KSIpOwotCi0gICAga1ByZWZldGNoVGhyZXNob2xkID0gMzsKLQotICAgIGV4cGVjdGVkID0gWyIw
IiwgIjIiLCAiNCIsICI2IiwgIjciLCAiOCIsICI5Il07Ci0gICAgY29udGludWVDb3VudCA9IDA7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkgewotICAg
ICAgICBwcmVhbWJsZSgpOwotICAgICAgICBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKLSAgICAg
ICAgaWYgKCFjdXJzb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICsrY29udGludWVD
b3VudDsKLQotICAgICAgICBleHBlY3QgPSBleHBlY3RlZC5zaGlmdCgpOwotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsIGV4cGVjdCk7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpIik7Ci0KLSAgICAgICAgaWYgKGNvbnRpbnVlQ291bnQgPT09IGtQcmVmZXRjaFRo
cmVzaG9sZCkgewotICAgICAgICAgICAgZGVidWcoIlxuVGhhdCBzaG91bGQgaGF2ZSB0cmlnZ2Vy
ZWQgYSBwcmVmZXRjaCwgaW5qZWN0aW5nIG9kZCByZWNvcmRzLi4uIik7Ci0gICAgICAgICAgICBm
b3IgKHZhciBpID0gMTsgaSA8IDEwOyBpICs9IDIpCi0gICAgICAgICAgICAgICAgc3RvcmUucHV0
KGksIGkpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHR4Lm9uY29tcGxldGUgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvbnRpbnVlQ291bnQiLCAiNyIpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9OwotfQotPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJlZmV0Y2gtcmFjZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmlt
YXJ5LWtleS11bmlxdWUtdG8tb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ByaW1hcnkta2V5LXVuaXF1ZS10by1vYmplY3RzdG9yZS5odG1sCmluZGV4IDU0
ZmJhZjYxLi44OWE2YWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9wcmltYXJ5LWtleS11bmlxdWUtdG8tb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmltYXJ5LWtleS11bmlxdWUtdG8tb2JqZWN0c3RvcmUuaHRt
bApAQCAtMSwxNDcgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJsb2dnZXIiPjwv
ZGl2PgotPHNjcmlwdD4KLWlmICh0ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxv
Zyhtc2cpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1M
ICs9IG1zZyArICI8YnI+IjsKLX0KLQotdmFyIG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
InBrdXRvcyIsIDEpOwotCi1vcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
KSB7Ci0gICAgdmFyIHRoaXNEQiA9IGUudGFyZ2V0LnJlc3VsdDsKLQotICAgIGlmKCF0aGlzREIu
b2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygicGVvcGxlIikpIHsKLSAgICAgICAgdGhpc0RCLmNy
ZWF0ZU9iamVjdFN0b3JlKCJwZW9wbGUiLCB7a2V5UGF0aDoiaWQifSk7Ci0gICAgfQotCi0gICAg
aWYoIXRoaXNEQi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJub3RlcyIpKSB7Ci0gICAgICAg
IHRoaXNEQi5jcmVhdGVPYmplY3RTdG9yZSgibm90ZXMiLCB7a2V5UGF0aDoidWlkIn0pOwotICAg
IH0KLX0KLQotb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgIGRiID0g
ZS50YXJnZXQucmVzdWx0OwotICAgIGFkZFBlcnNvbigpOwotfSAgICAKLQotb3BlblJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICBsb2coIm9wZW5SZXF1ZXN0IGVycm9yIC0gIiAr
IGUpOwotfQotCi12YXIgc2hhcmVkSUQgPSAwOwotCi1mdW5jdGlvbiBhZGRQZXJzb24oKSB7Ci0g
ICAgbG9nKCJBYm91dCB0byBhZGQgcGVyc29uIGFuZCBub3RlIik7Ci0KLSAgICAvL0dldCBhIHRy
YW5zYWN0aW9uCi0gICAgLy9kZWZhdWx0IGZvciBPUyBsaXN0IGlzIGFsbCwgZGVmYXVsdCBmb3Ig
dHlwZSBpcyByZWFkCi0gICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWyJwZW9w
bGUiXSwgInJlYWR3cml0ZSIpOwotCi0gICAgLy9Bc2sgZm9yIHRoZSBvYmplY3RTdG9yZQotICAg
IHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJwZW9wbGUiKTsKLQotICAgIC8v
RGVmaW5lIGEgcGVyc29uCi0gICAgdmFyIHBlcnNvbiA9IHsKLSAgICAgICAgbmFtZTogIlBlcnNv
biIsCi0gICAgICAgIGlkOiBzaGFyZWRJRAotICAgIH0KLQotICAgIC8vUGVyZm9ybSB0aGUgYWRk
Ci0gICAgdmFyIHJlcXVlc3QgPSBzdG9yZS5hZGQocGVyc29uKTsKLQotICAgIHJlcXVlc3Qub25l
cnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgbG9nKCJFcnJvciBhZGRpbmcgcGVyc29uIC0g
IiwgZSk7Ci0gICAgfQotCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0g
ICAgICAgIGxvZygiU3VjY2Vzc2Z1bGx5IGFkZGVkIHBlcnNvbiIpOwotICAgICAgICBzZXRUaW1l
b3V0KCJhZGRDb21wbGV0ZSgpOyIsIDApOwotICAgIH0KLSAgICAKLSAgICAvL0RlZmluZSBhIG5v
dGUKLSAgICB2YXIgbm90ZSA9IHsKLSAgICAgICAgbm90ZTogIk5vdGUiLAotICAgICAgICB1aWQ6
IHNoYXJlZElECi0gICAgfQotCi0gICAgdmFyIHRyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9u
KFsibm90ZXMiXSwgInJlYWR3cml0ZSIpOwotCi0gICAgLy9Bc2sgZm9yIHRoZSBvYmplY3RTdG9y
ZQotICAgIHZhciBzdG9yZTIgPSB0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoIm5vdGVzIik7Ci0K
LSAgICAvL1BlcmZvcm0gdGhlIGFkZAotICAgIHZhciByZXF1ZXN0MiA9IHN0b3JlMi5hZGQobm90
ZSk7Ci0KLSAgICByZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICBsb2co
IkVycm9yIGFkZGluZyBub3RlIC0gIiwgZSk7Ci0gICAgfQotCi0gICAgcmVxdWVzdDIub25zdWNj
ZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICBsb2coIlN1Y2Nlc3NmdWxseSBhZGRlZCBub3Rl
Iik7Ci0gICAgICAgIHNldFRpbWVvdXQoImFkZENvbXBsZXRlKCk7IiwgMCk7Ci0gICAgfQotICAg
IAotfQotCi12YXIgY29tcGxldGVkQWRkcyA9IDA7Ci1mdW5jdGlvbiBhZGRDb21wbGV0ZSgpCi17
Ci0gICAgaWYgKCsrY29tcGxldGVkQWRkcyA8IDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
R2V0IGEgdHJhbnNhY3Rpb24KLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
InBlb3BsZSJdLCAicmVhZHdyaXRlIik7Ci0KLSAgICAvL0FzayBmb3IgdGhlIG9iamVjdFN0b3Jl
Ci0gICAgdmFyIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInBlb3BsZSIpOwotCi0g
ICAgLy9QZXJmb3JtIHRoZSBhZGQKLSAgICB2YXIgcmVxdWVzdCA9IHN0b3JlLmdldChzaGFyZWRJ
RCk7Ci0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGxvZygi
RXJyb3IgZ2V0dGluZyBwZXJzb24gLSAiLCBlKTsKLSAgICB9Ci0KLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgbG9nKCJTdWNjZXNzZnVsbHkgZ290IHBlcnNv
biIpOwotICAgICAgICBmb3IgKG4gaW4gZS50YXJnZXQucmVzdWx0KSB7Ci0gICAgICAgICAgICBs
b2cobik7Ci0gICAgICAgIH0KLSAgICAgICAgZ2V0Q29tcGxldGUoKTsKLSAgICB9Ci0KLSAgICB2
YXIgdHJhbnNhY3Rpb24yID0gZGIudHJhbnNhY3Rpb24oWyJub3RlcyJdLCAicmVhZHdyaXRlIik7
Ci0KLSAgICAvL0FzayBmb3IgdGhlIG9iamVjdFN0b3JlCi0gICAgdmFyIHN0b3JlMiA9IHRyYW5z
YWN0aW9uMi5vYmplY3RTdG9yZSgibm90ZXMiKTsKLQotICAgIC8vUGVyZm9ybSB0aGUgYWRkCi0g
ICAgdmFyIHJlcXVlc3QyID0gc3RvcmUyLmdldChzaGFyZWRJRCk7Ci0KLSAgICByZXF1ZXN0Mi5v
bmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICBsb2coIkVycm9yIGdldHRpbmcgbm90ZSAt
ICIsIGUpOwotICAgIH0KLQotICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgbG9nKCJTdWNjZXNzZnVsbHkgZ290IG5vdGUiKTsKLSAgICAgICAgZm9yIChuIGlu
IGUudGFyZ2V0LnJlc3VsdCkgewotICAgICAgICAgICAgbG9nKG4pOwotICAgICAgICB9Ci0gICAg
ICAgIGdldENvbXBsZXRlKCk7Ci0gICAgfQotfQotCi12YXIgY29tcGxldGVkR2V0cyA9IDA7Ci1m
dW5jdGlvbiBnZXRDb21wbGV0ZSgpCi17Ci0gICAgaWYgKCsrY29tcGxldGVkR2V0cyA9PSAyICYm
IHRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ByaW1hcnkta2V5LXVuaXF1ZS10by1vYmplY3Rz
dG9yZS5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVxdWVzdC1sZWFrLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1
ZXN0LWxlYWsuaHRtbAppbmRleCA4ZDI4ZmI0Li5iY2RmYTE3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWxlYWsuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWxlYWsuaHRtbApAQCAtMSw1MiArMSw5IEBACi08
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHRoYXQg
cmVxdWVzdHMgd2Vha2x5IGhvbGQgc2NyaXB0IHZhbHVlIHByb3BlcnRpZXMiKTsKLQotaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKLSAgICBpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgb25P
cGVuKTsKLX0gZWxzZSB7Ci0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIGFjY2Vz
cyB0byB0aGUgSW50ZXJuYWxzIG9iamVjdCcpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAg
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7dmFsdWU6ICd2YWx1ZSd9LCAna2V5JykiKTsKLX0KLQotZnVuY3Rpb24gb25P
cGVuKGV2dCkKLXsKLSAgICBwcmVhbWJsZShldnQpOwotICAgIGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInR4ID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmdldCgna2V5JykiKTsKLSAg
ICB0eC5vbmNvbXBsZXRlID0gZnVuY3Rpb24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKCkgewotICAg
ICAgICBwcmVhbWJsZSgpOwotICAgICAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHJlcXVlc3QucmVzdWx0IiwgIm9iamVj
dCIpOwotCi0gICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBzYW1lIG9iamVjdCBpcyByZXR1cm5l
ZCBvbiBlYWNoIGFjY2VzcyB0byByZXF1ZXN0LnJlc3VsdC4KLSAgICAgICAgZXZhbEFuZExvZygi
cmVxdWVzdC5yZXN1bHQueCA9IDEyMyIpOwotICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1
bHQueCIsICIxMjMiKTsKLQotICAgICAgICAvLyBUcnkgYW5kIGluZHVjZSBhIGxlYWsgYnkgYSBy
ZWZlcmVuY2UgY3ljbGUgZnJvbSBET00gdG8gVjggYW5kIGJhY2suCi0gICAgICAgIC8vIElmIHRo
ZSB2OCB2YWx1ZSBvZiByZXF1ZXN0LnJlc3VsdCAoZXRjKSBpcyBvbmx5IGhlbGQgYnkgdGhlIHJl
cXVlc3RzJ3MKLSAgICAgICAgLy8gVjggd3JhcHBlciB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gbGVh
ay4KLSAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdC5yZXN1bHQubGVhayA9IHJlcXVlc3QiKTsK
LSAgICAgICAgZXZhbEFuZExvZygib2JzZXJ2ZXIgPSBpbnRlcm5hbHMub2JzZXJ2ZUdDKHJlcXVl
c3QpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBudWxsIik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImdjKCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJvYnNlcnZlci53YXNDb2xs
ZWN0ZWQiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLX0KLQotCi08L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXF1ZXN0LWxlYWsu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1yZXN1bHQtY2FjaGUuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtcmVzdWx0LWNhY2hlLmh0bWwKaW5kZXggODY1MmNh
OC4uYzM4MjAwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVx
dWVzdC1yZXN1bHQtY2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXF1ZXN0LXJlc3VsdC1jYWNoZS5odG1sCkBAIC0xLDM3ICsxLDkgQEAKLTwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgYSByZXF1ZXN0J3MgcmVz
dWx0IGlzIGRpcnRpZWQgd2hlbiBhIGN1cnNvciBpcyBjb250aW51ZWQiKTsKLQotaW5kZXhlZERC
VGVzdChwcmVwYXJlRGF0YWJhc2UsIG9uT3Blbik7Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFz
ZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpIik7Ci0gICAgc3RvcmUucHV0KCJ2YWx1ZSIsICJrZXkiKTsKLX0KLQot
ZnVuY3Rpb24gb25PcGVuKGV2dCkKLXsKLSAgICBwcmVhbWJsZShldnQpOwotICAgIGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInR4ID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHR4Lm9iamVj
dFN0b3JlKCdzdG9yZScpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gc3Rv
cmUub3BlbkN1cnNvcigpIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biBjdXJzb3JSZXF1ZXN0U3VjY2VzcyhldnQpIHsKLSAgICAgICAgcHJlYW1ibGUoZXZ0KTsKLSAg
ICAgICAgaWYgKCFjdXJzb3JSZXF1ZXN0LnJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOwotICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJjdXJzb3JSZXF1ZXN0LnJlc3VsdCIsICJET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOyAgICB9OwotCi0gICAgdHgub25j
b21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLX0KLTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcXVlc3QtcmVzdWx0LWNhY2hlLmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jbG9uZS1leGNlcHRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY2xvbmUtZXhjZXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRlZWNlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY2xvbmUtZXhjZXB0aW9uLmpzCkBAIC0wLDAgKzEs
NDggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIERhdGFDbG9uZUVycm9yIGlzIGNvbnNpc3Rl
bnRseSB0aHJvd24gYnkgSW5kZXhlZERCIG1ldGhvZHMiKTsKKwordmFyIE5PTl9DTE9ORUFCTEUg
PSBzZWxmOwordmFyIElOVkFMSURfS0VZID0ge307CisKK3NldERCTmFtZUZyb21QYXRoKCk7Citk
b0ZpcnN0T3BlbigpOworCitmdW5jdGlvbiBkb0ZpcnN0T3BlbigpCit7CisgICAgcHJlYW1ibGUo
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lICsgJzEn
KSIpOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb25VcGdyYWRlTmVl
ZGVkKGUpIHsKKyAgICAgICAgcHJlYW1ibGUoKTsKKyAgICAgICAgZGIgPSBlLnRhcmdldC5yZXN1
bHQ7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpLnB1dChOT05fQ0xPTkVBQkxFLCAwKTsiLCAiMjUiLCAiJ0RhdGFDbG9uZUVycm9y
JyIpOworICAgICAgICBkb1NlY29uZE9wZW4oKTsKKyAgICB9OworfQorCitmdW5jdGlvbiBkb1Nl
Y29uZE9wZW4oKQoreworICAgIHByZWFtYmxlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKGRibmFtZSArICcyJykiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uIG9uVXBncmFkZU5lZWRlZChlKSB7CisgICAgICAgIHByZWFtYmxlKCk7
CisgICAgICAgIGRiID0gZS50YXJnZXQucmVzdWx0OworICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoTk9OX0NMT05FQUJMRSwg
MCk7IiwgIjI1IiwgIidEYXRhQ2xvbmVFcnJvciciKTsKKyAgICAgICAgZG9UaGlyZE9wZW4oKTsK
KyAgICB9OworfQorCitmdW5jdGlvbiBkb1RoaXJkT3BlbigpCit7CisgICAgcHJlYW1ibGUoKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lICsgJzMnKSIp
OworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb25VcGdyYWRlTmVlZGVk
KGUpIHsKKyAgICAgICAgcHJlYW1ibGUoKTsKKyAgICAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7
CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZScpLnB1dChOT05fQ0xPTkVBQkxFLCBJTlZBTElEX0tFWSk7IiwgIjI1IiwgIidEYXRhQ2xv
bmVFcnJvciciKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jbG9zZWQtY3Vyc29y
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Nsb3NlZC1jdXJz
b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMwNjYxNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jbG9z
ZWQtY3Vyc29yLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVmVyaWZ5IHRo
YXQgdGhhdCBjdXJzb3JzIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGNsb3NlZCBhcmUgd2VsbCBiZWhh
dmVkIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvbk9wZW4pOworZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe3ZhbHVlOiAndmFsdWUnfSwgWydrZXknXSkiKTsKK30KKworZnVuY3Rpb24gb25PcGVu
KGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInR4ID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdzdG9yZScp
Iik7CisgICAgZXZhbEFuZExvZygiY3Vyc29yUmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIp
OworICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nl
c3MoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGRlYnVnKCJEb24ndCBjb250
aW51ZSB0aGUgY3Vyc29yLCBzbyBpdCByZXRhaW5zIGl0cyBrZXkvcHJpbWFyeUtleS92YWx1ZSIp
OworICAgIH07CisgICAgdHgub25jb21wbGV0ZSA9IGZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxl
dGUoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiSlNPTi5zdHJpbmdpZnkoY3Vyc29yLmtleSkiLCAnWyJrZXkiXScpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KGN1cnNvci5wcmltYXJ5S2V5
KSIsICdbImtleSJdJyk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJp
bmdpZnkoY3Vyc29yLnZhbHVlKSIsICd7InZhbHVlIjoidmFsdWUifScpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2Nvbm5lY3Rpb24tbGVhay5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jb25uZWN0aW9uLWxlYWsuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNTZiZjQxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jb25uZWN0aW9uLWxlYWsuanMKQEAgLTAs
MCArMSw3NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJSZWdyZXNzaW9uIHRlc3QgdG8gZW5zdXJlIHRo
YXQgSW5kZXhlZERCIGNvbm5lY3Rpb25zIGRvbid0IGxlYWsiKTsKKworc2V0REJOYW1lRnJvbVBh
dGgoKTsKK2RvRmlyc3RPcGVuKCk7CisKK2Z1bmN0aW9uIGRvRmlyc3RPcGVuKCkKK3sKKyAgICBw
cmVhbWJsZSgpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
bmFtZSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzYXdVcGdyYWRlTmVlZGVkMSA9IGZhbHNlIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb25VcGdyYWRlTmVlZGVkMSgpIHsKKyAgICAgICAg
cHJlYW1ibGUoKTsKKyAgICAgICAgZXZhbEFuZExvZygic2F3VXBncmFkZU5lZWRlZDEgPSB0cnVl
Iik7CisgICAgfTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9uT3BlblN1Y2Nl
c3MxKCkgeworICAgICAgICBwcmVhbWJsZSgpOworICAgICAgICBzaG91bGRCZVRydWUoInNhd1Vw
Z3JhZGVOZWVkZWQxIik7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworCisgICAgICAgIGRvU2Vjb25k
T3BlbigpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRvU2Vjb25kT3BlbigpCit7CisgICAgcHJl
YW1ibGUoKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDEpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAg
IHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9uT3BlblN1Y2Nlc3MyKCkgewor
ICAgICAgICBwcmVhbWJsZSgpOworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVz
dWx0Iik7CisKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSBudWxsIik7CisgICAgICAgIGV2YWxB
bmRMb2coInJlcXVlc3QgPSBudWxsIik7CisKKyAgICAgICAgZGVidWcoIlJ1biBHQyBvdXRzaWRl
IG9mIHJlcXVlc3QncyBjYWxsYmFjayB2aWEgc2V0VGltZW91dCgpIik7CisgICAgICAgIHNldFRp
bWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygid2luZG93LmdjKCki
KTsKKyAgICAgICAgICAgIGRvVGhpcmRPcGVuKCk7CisgICAgICAgIH0sIDApOworICAgIH07Cit9
CisKK2Z1bmN0aW9uIGRvVGhpcmRPcGVuKCkKK3sKKyAgICBwcmVhbWJsZSgpOworCisgICAgZXZh
bEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICBldmFs
QW5kTG9nKCJzYXdVcGdyYWRlTmVlZGVkMyA9IGZhbHNlIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4
cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24gb25VcGdyYWRlTmVlZGVkMigpIHsKKyAgICAgICAgcHJlYW1ibGUoKTsKKyAgICAgICAg
ZXZhbEFuZExvZygic2F3VXBncmFkZU5lZWRlZDMgPSB0cnVlIik7CisgICAgfTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9uT3BlblN1Y2Nlc3MzKCkgeworICAgICAgICBwcmVh
bWJsZSgpOworICAgICAgICBzaG91bGRCZVRydWUoInNhd1VwZ3JhZGVOZWVkZWQzIik7CisgICAg
ICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZGIuY2xvc2UoKSIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LWNhc3QuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LWNhc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3ODUxNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItY2FzdC5qcwpAQCAtMCwwICsxLDQyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSBj
dXJzb3Igd3JhcHBlcnMgYXJlIGNyZWF0ZWQgY29ycmVjdGx5LiIpOworCitpbmRleGVkREJUZXN0
KHByZXBhcmVEYXRhYmFzZSwgdmVyaWZ5V3JhcHBlcnMpOworZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMCwgMCkiKTsK
K30KKworZnVuY3Rpb24gdmVyaWZ5V3JhcHBlcnMoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7
CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFu
ZExvZygidHggPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKyAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHgub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigp
Iik7CisKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9uT3BlbkN1cnNvclN1Y2Nl
c3MoZXZ0KSB7CisgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGN1cnNvci51cGRhdGUoMSkiKTsKKworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIG9uVXBkYXRlU3VjY2VzcyhldnQpIHsKKyAgICAgICAgICAgIHByZWFtYmxlKGV2dCk7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBudWxsIik7CisgICAgICAgICAgICBn
YygpOworICAgICAgICAgICAgZ2MoKTsgLy8gRklYTUU6IFNob3VsZG4ndCBuZWVkIHRvIGNhbGwg
dHdpY2UuIGh0dHA6Ly9jcmJ1Zy5jb20vMjg4MDcyCisgICAgICAgICAgICBzZXRUaW1lb3V0KGNo
ZWNrQ3Vyc29yVHlwZSwgMCk7CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gY2hl
Y2tDdXJzb3JUeXBlKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVxdWVzdC5zb3Vy
Y2UudG9TdHJpbmcoKSIsICJbb2JqZWN0IElEQkN1cnNvcldpdGhWYWx1ZV0iKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItbGVhay5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItbGVhay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kOTA1MjExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2N1cnNvci1sZWFrLmpzCkBAIC0wLDAgKzEsNTMgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVmVyaWZ5IHRoYXQgdGhhdCBjdXJzb3JzIHdlYWtseSBob2xkIHNjcmlwdCB2YWx1
ZSBwcm9wZXJ0aWVzIik7CisKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgaW5kZXhlZERC
VGVzdChwcmVwYXJlRGF0YWJhc2UsIG9uT3Blbik7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQo
J1RoaXMgdGVzdCByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIEludGVybmFscyBvYmplY3QnKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sK
KyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKTsKKyAgICBzdG9yZS5wdXQoe3ZhbHVlOiAndmFsdWUnfSwgWydrZXkn
XSk7Cit9CisKK2Z1bmN0aW9uIG9uT3BlbihldnQpCit7CisgICAgLy8gZXZhbEFuZExvZygpIGlz
IG5vdCB1c2VkIGFzIHRoYXQgZ2VuZXJhdGVzIG5ldyBET00gbm9kZXMuCisKKyAgICBkYiA9IGV2
dC50YXJnZXQucmVzdWx0OworICAgIHR4ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJyk7CisgICAg
c3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBjdXJzb3JSZXF1ZXN0ID0gc3Rv
cmUub3BlbkN1cnNvcigpOworICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0OworICAgIH07CisgICAg
dHgub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkYi5jbG9zZSgpOworCisgICAg
ICAgIC8vIFRyeSBhbmQgaW5kdWNlIGEgbGVhayBieSBhIHJlZmVyZW5jZSBjeWNsZSBmcm9tIERP
TSB0byBWOCBhbmQgYmFjay4KKyAgICAgICAgLy8gSWYgdGhlIHY4IHZhbHVlIG9mIGN1cnNvci5r
ZXkgKGV0YykgaXMgb25seSBoZWxkIGJ5IHRoZSBjdXJzb3IncworICAgICAgICAvLyBWOCB3cmFw
cGVyIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBsZWFrLgorICAgICAgICBjdXJzb3Iua2V5LmN1cnNv
ciA9IGN1cnNvcjsKKyAgICAgICAgY3Vyc29yLnByaW1hcnlLZXkuY3Vyc29yID0gY3Vyc29yOwor
ICAgICAgICBjdXJzb3IudmFsdWUuY3Vyc29yID0gY3Vyc29yOworCisgICAgICAgIGN1cnNvck9i
c2VydmVyID0gaW50ZXJuYWxzLm9ic2VydmVHQyhjdXJzb3IpOworCisgICAgICAgIGN1cnNvclJl
cXVlc3QgPSBudWxsOworICAgICAgICBjdXJzb3IgPSBudWxsOworCisgICAgICAgIGdjKCk7CisK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJjdXJzb3JPYnNlcnZlci53YXNDb2xsZWN0ZWQiKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itb3ZlcmxvYWRzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1vdmVybG9hZHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUwM2I0NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itb3Zlcmxv
YWRzLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVmFsaWRhdGUgdGhlIG92
ZXJsb2FkcyBvZiBJREJPYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCksIElEQkluZGV4Lm9wZW5DdXJz
b3IoKSBhbmQgSURCSW5kZXgub3BlbktleUN1cnNvcigpLiIpOworCitpbmRleGVkREJUZXN0KHBy
ZXBhcmVEYXRhYmFzZSwgdmVyaWZ5T3ZlcmxvYWRzKTsKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFz
ZSgpCit7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxB
bmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3ZhbHVlJykiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3ZhbHVlOiAwfSwgMCkiKTsKK30KKworZnVuY3Rpb24g
dmVyaWZ5T3ZlcmxvYWRzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeU92
ZXJsb2FkcygpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKSIpOwor
CisgICAgY2hlY2tDdXJzb3JEaXJlY3Rpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJuZXh0Iik7
CisgICAgY2hlY2tDdXJzb3JEaXJlY3Rpb24oInN0b3JlLm9wZW5DdXJzb3IoMCkiLCAibmV4dCIp
OworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKDAsICduZXh0Jyki
LCAibmV4dCIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKDAs
ICduZXh0dW5pcXVlJykiLCAibmV4dHVuaXF1ZSIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9u
KCJzdG9yZS5vcGVuQ3Vyc29yKDAsICdwcmV2JykiLCAicHJldiIpOworICAgIGNoZWNrQ3Vyc29y
RGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKDAsICdwcmV2dW5pcXVlJykiLCAicHJldnVuaXF1
ZSIpOworCisgICAgY2hlY2tDdXJzb3JEaXJlY3Rpb24oInN0b3JlLm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2Uub25seSgwKSkiLCAibmV4dCIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykiLCAibmV4dCIpOworICAg
IGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHko
MCksICduZXh0dW5pcXVlJykiLCAibmV4dHVuaXF1ZSIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0
aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICdwcmV2JykiLCAicHJl
diIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLm9ubHkoMCksICdwcmV2dW5pcXVlJykiLCAicHJldnVuaXF1ZSIpOworCisgICAgY2hlY2tD
dXJzb3JEaXJlY3Rpb24oImluZGV4Lm9wZW5DdXJzb3IoKSIsICJuZXh0Iik7CisgICAgY2hlY2tD
dXJzb3JEaXJlY3Rpb24oImluZGV4Lm9wZW5DdXJzb3IoMCkiLCAibmV4dCIpOworICAgIGNoZWNr
Q3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKDAsICduZXh0JykiLCAibmV4dCIpOwor
ICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKDAsICduZXh0dW5pcXVl
JykiLCAibmV4dHVuaXF1ZSIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVu
Q3Vyc29yKDAsICdwcmV2JykiLCAicHJldiIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJp
bmRleC5vcGVuQ3Vyc29yKDAsICdwcmV2dW5pcXVlJykiLCAicHJldnVuaXF1ZSIpOworCisgICAg
Y2hlY2tDdXJzb3JEaXJlY3Rpb24oImluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgw
KSkiLCAibmV4dCIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29y
KElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykiLCAibmV4dCIpOworICAgIGNoZWNrQ3Vyc29y
RGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0dW5p
cXVlJykiLCAibmV4dHVuaXF1ZSIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5v
cGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICdwcmV2JykiLCAicHJldiIpOworICAgIGNo
ZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCks
ICdwcmV2dW5pcXVlJykiLCAicHJldnVuaXF1ZSIpOworCisgICAgY2hlY2tDdXJzb3JEaXJlY3Rp
b24oImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsICJuZXh0Iik7CisgICAgY2hlY2tDdXJzb3JEaXJl
Y3Rpb24oImluZGV4Lm9wZW5LZXlDdXJzb3IoMCkiLCAibmV4dCIpOworICAgIGNoZWNrQ3Vyc29y
RGlyZWN0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKDAsICduZXh0JykiLCAibmV4dCIpOworICAg
IGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKDAsICduZXh0dW5pcXVl
JykiLCAibmV4dHVuaXF1ZSIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVu
S2V5Q3Vyc29yKDAsICdwcmV2JykiLCAicHJldiIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9u
KCJpbmRleC5vcGVuS2V5Q3Vyc29yKDAsICdwcmV2dW5pcXVlJykiLCAicHJldnVuaXF1ZSIpOwor
CisgICAgY2hlY2tDdXJzb3JEaXJlY3Rpb24oImluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFu
Z2Uub25seSgwKSkiLCAibmV4dCIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5v
cGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykiLCAibmV4dCIpOworICAg
IGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLm9u
bHkoMCksICduZXh0dW5pcXVlJykiLCAibmV4dHVuaXF1ZSIpOworICAgIGNoZWNrQ3Vyc29yRGly
ZWN0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICdwcmV2Jyki
LCAicHJldiIpOworICAgIGNoZWNrQ3Vyc29yRGlyZWN0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29y
KElEQktleVJhbmdlLm9ubHkoMCksICdwcmV2dW5pcXVlJykiLCAicHJldnVuaXF1ZSIpOworCisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKK30KKworZnVuY3Rpb24gY2hlY2tD
dXJzb3JEaXJlY3Rpb24oc3RhdGVtZW50LCBkaXJlY3Rpb24pCit7CisgICAgcmVxdWVzdCA9IGV2
YWwoc3RhdGVtZW50KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1
ZyhzdGF0ZW1lbnQpOworICAgICAgICBzaG91bGRCZU5vbk51bGwoImV2ZW50LnRhcmdldC5yZXN1
bHQiKQorICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
ZGlyZWN0aW9uIiwgZGlyZWN0aW9uKTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXF1ZXN0LWN5Y2xlLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXF1ZXN0LWN5
Y2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYmVjOGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLXJlcXVlc3QtY3ljbGUuanMKQEAgLTAsMCArMSw4NSBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJW
ZXJpZnkgdGhhdCB0aGF0IGN1cnNvcnMgd2Vha2x5IGhvbGQgcmVxdWVzdCwgYW5kIHdvcmsgaWYg
cmVxdWVzdCBpcyBHQydkIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvbk9w
ZW4pOworCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQoreworICAgIHByZWFtYmxlKGV2
dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIHN0
b3JlLnB1dCgidmFsdWUxIiwgImtleTEiKTsKKyAgICBzdG9yZS5wdXQoInZhbHVlMiIsICJrZXky
Iik7Cit9CisKK2Z1bmN0aW9uIG9uT3BlbihldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAg
ICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9n
KCJ0eCA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUg
PSB0eC5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworCisgICAgZXZhbEFuZExvZygiY3Vyc29yUmVx
dWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gb3BlbkN1cnNvclJlcXVlc3RTdWNjZXNzKGV2dCkgeworICAgICAgICBwcmVh
bWJsZShldnQpOworICAgICAgICBkZWJ1ZygiUmVzdWx0IHdpbGwgYmUgY2hlY2tlZCBsYXRlciwg
dG8gZW5zdXJlIHRoYXQgbGF6eSBhY2Nlc3MgaXMgc2FmZSIpOworICAgIH07CisKKyAgICBldmFs
QW5kTG9nKCJvdGhlclJlcXVlc3QgPSBzdG9yZS5nZXQoMCkiKTsKKyAgICBvdGhlclJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gb3RoZXJSZXF1ZXN0U3VjY2VzcyhldnQpIHsKKyAgICAgICAg
cHJlYW1ibGUoZXZ0KTsKKworICAgICAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgdGhlIHJlcXVlc3Qn
cyByZXN1bHQgY2FuIGJlIGFjY2Vzc2VkIGxhemlseToiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
Z2MoKSIpOworCisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVz
dWx0Iik7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY3Vyc29yIik7CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLmtleSIsICJrZXkxIik7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlIiwgInZhbHVlMSIpOworICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3JSZXF1ZXN0LmV4dHJhID0gMTIzIik7CisgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5leHRyYSA9IDQ1NiIpOworCisgICAgICAgIC8vIEFzc2lnbiBhIG5ldyBoYW5kbGVyIHRv
IGluc3BlY3QgdGhlIHJlcXVlc3QgYW5kIGN1cnNvciBpbmRpcmVjdGx5LgorICAgICAgICBjdXJz
b3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGN1cnNvckNvbnRpbnVlU3VjY2VzcyhldnQp
IHsKKyAgICAgICAgICAgIHByZWFtYmxlKGV2dCk7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZU5vbk51
bGwoImN1cnNvciIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3Iu
a2V5IiwgImtleTIiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29y
LnZhbHVlIiwgInZhbHVlMiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5l
eHRyYSIsICIxMjMiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IuZXh0cmEiLCAiNDU2
Iik7CisgICAgICAgIH07CisKKyAgICAgICAgZGVidWcoIkVuc3VyZSByZXF1ZXN0IGlzIG5vdCBy
ZWxlYXNlZCBpZiBjdXJzb3IgaXMgc3RpbGwgYXJvdW5kLiIpOworICAgICAgICBjdXJzb3JSZXF1
ZXN0T2JzZXJ2YXRpb24gPSBpbnRlcm5hbHMub2JzZXJ2ZUdDKGN1cnNvclJlcXVlc3QpOworICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gbnVsbCIpOworICAgICAgICBldmFsQW5k
TG9nKCJnYygpIik7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImN1cnNvclJlcXVlc3RPYnNlcnZh
dGlvbi53YXNDb2xsZWN0ZWQiKTsKKworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKSIpOworCisgICAgICAgIGN1cnNvck9ic2VydmF0aW9uID0gaW50ZXJuYWxzLm9ic2VydmVH
QyhjdXJzb3IpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBudWxsIik7CisgICAgICAg
IGV2YWxBbmRMb2coImdjKCkiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yT2JzZXJ2
YXRpb24ud2FzQ29sbGVjdGVkIik7CisKKyAgICAgICAgZXZhbEFuZExvZygiZmluYWxSZXF1ZXN0
ID0gc3RvcmUuZ2V0KDApIik7CisgICAgICAgIGZpbmFsUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiBmaW5hbFJlcXVlc3RTdWNjZXNzKGV2dCkgeworICAgICAgICAgICAgcHJlYW1ibGUoZXZ0
KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLmtleSIsICJrZXky
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci52YWx1ZSIsICJ2
YWx1ZTIiKTsKKworICAgICAgICAgICAgY3Vyc29yT2JzZXJ2YXRpb24gPSBpbnRlcm5hbHMub2Jz
ZXJ2ZUdDKGN1cnNvcik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBudWxsIik7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJnYygpIik7CisgICAgICAgICAgICBzaG91bGRCZVRy
dWUoImN1cnNvclJlcXVlc3RPYnNlcnZhdGlvbi53YXNDb2xsZWN0ZWQiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgiY3Vyc29yT2JzZXJ2YXRpb24ud2FzQ29sbGVjdGVkIik7CisgICAgICAg
IH07CisgICAgfTsKKworICAgIHR4Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5k
ZXgtYnVnMTEwNzkyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RlbGV0ZUluZGV4LWJ1ZzExMDc5Mi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kMjlhNjBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4LWJ1ZzExMDc5Mi5qcwpAQCAtMCwwICsxLDM5IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIkVuc3VyZSBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxl
dGVJbmRleCgpIHdvcmtzIGlmIElEQkluZGV4IG9iamVjdCBoYXMgbm90IGJlZW4gZmV0Y2hlZCAt
IHJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVnIDExMDc5Mi4iKTsKKworaW5kZXhlZERCVGVzdChvbkZp
cnN0VXBncmFkZU5lZWRlZCwgY2xvc2VBbmRSZU9wZW4sIHt2ZXJzaW9uOiAxfSk7CisKK2Z1bmN0
aW9uIG9uRmlyc3RVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAg
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAna2V5UGF0aCcpIik7Cit9CisKK2Z1bmN0aW9u
IGNsb3NlQW5kUmVPcGVuKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coImRi
LmNsb3NlKCkiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBvblNlY29uZFVwZ3Jh
ZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5pc2hKU1Rlc3Q7Cit9CisKK2Z1
bmN0aW9uIG9uU2Vjb25kVXBncmFkZU5lZWRlZChldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsK
KyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIC8vIERvIE5PVCBhZGQgYSBjYWxsIHRvIHN0b3JlLmluZGV4KCdpbmRleCcpIGhl
cmUgKGUuZy4gdG8gYXNzZXJ0IGl0IGV4aXN0cykKKyAgICAvLyBvciB0aGUgYnVnIGRpc2FwcGVh
cnMuCisgICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgnKSIsICJET01FeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS10cmFu
c2FjdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxl
dGVkYXRhYmFzZS10cmFuc2FjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jMDFmNjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLmpzCkBAIC0wLDAgKzEs
MzIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIGRlbGV0ZURhdGFiYXNlKCkgY2FuIHJ1biBj
b25jdXJyZW50bHkgd2l0aCB0cmFuc2FjdGlvbnMgaW4gb3RoZXIgZGF0YWJhc2VzIik7CisKK2lu
ZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBzdGFydFRyYW5zYWN0aW9uKTsKK2Z1bmN0aW9u
IHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Cit9CisKK2Z1bmN0
aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJTdGFy
dCBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIGZpcnN0IGRhdGFiYXNlOiIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoMCkiKTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiRGVsZXRlIGEgZGlmZmVyZW50IGRhdGFiYXNlOiIpOwor
ICAgIGV2YWxBbmRMb2coImRibmFtZTIgPSBkYm5hbWUgKyAnMiciKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZTIpIik7CisgICAgcmVx
dWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInN1Y2Nlc3MgZXZlbnQgd2FzIGZp
cmVkIGF0IGRlbGV0ZSByZXF1ZXN0Iik7CisgICAgfTsKKworICAgIHRyYW5zLm9uY29tcGxldGUg
PSBmaW5pc2hKU1Rlc3Q7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvbWV0YWRhdGEtcmFjZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS1yYWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRmNzVjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0YWRhdGEtcmFjZS5qcwpAQCAtMCwwICsxLDM3IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIkVuc3VyZSBJbmRleGVkREIgdHJhbnNhY3Rpb25zIGNyZWF0ZWQg
YmVmb3JlIG9wZW4gb25zdWNjZXNzIGhhdmUgY29ycmVjdCBtZXRhZGF0YSIpOworCitpbmRleGVk
REJUZXN0KHByZXBhcmVEYXRhYmFzZSwgb25PcGVuU3VjY2Vzcyk7CitmdW5jdGlvbiBwcmVwYXJl
RGF0YWJhc2UoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleCcsICdrZXlQYXRoJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOworICAgIHNob3VsZE5vdFRocm93KCJpbmRleCA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpIik7CisgICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKK30KKworZnVu
Y3Rpb24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOwor
ICAgIGRlYnVnKCJJbiBtdWx0aXByb2Nlc3MgbW9kZSwgJ2NvbXBsZXRlJyBldmVudCBtYXkgYmUg
ZGlzcGF0Y2hlZCBiZWZvcmVcbiIgKworICAgICAgICAgICJ0aGUgJ3N1Y2Nlc3MnIGFycml2ZXMg
d2l0aCB1cGRhdGVkIG1ldGFkYXRhLiBFbnN1cmUgdGhlIG5ldyBtZXRhZGF0YVxuIiArCisgICAg
ICAgICAgImlzIHN0aWxsIHVzZWQgZm9yIHRyYW5zYWN0aW9ucy4iKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpLm9iamVjdFN0b3JlKCdzdG9yZScpIik7
CisgICAgc2hvdWxkTm90VGhyb3coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKK30K
KworZnVuY3Rpb24gb25PcGVuU3VjY2VzcyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAg
ICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpLm9iamVjdFN0b3JlKCdzdG9yZScpIik7
CisgICAgc2hvdWxkTm90VGhyb3coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9ub2Jsb2JzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL25vYmxvYnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNmQ0NzY1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9ub2Jsb2JzLmpzCkBAIC0wLDAgKzEsNzggQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiQ29uZmlybSBCbG9iL0ZpbGUvRmlsZUxpc3QgbGltaXRhdGlvbnMgb2YgV2ViS2l0J3MgSW5k
ZXhlZERCIGltcGxlbWVudGF0aW9uLiIpOworLy8gRklYTUU6IFRoaXMgdmVyaWZpZXMgdGhhdCBi
bG9iLXR5cGUgZGF0YSBpcyByZWplY3RlZCBmb3Igbm93LCByYXRoZXIgdGhhbiBzaWxlbnRseSBm
YWlsaW5nLgorLy8gVHJhY2tlZCBmb3IgdGhlIENocm9taXVtIHBvcnQgYXM6IGh0dHA6Ly9jcmJ1
Zy5jb20vMTA4MDEyCisKK2ZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxl
SW5wdXQiKTsKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB2YXIgZmlsZVJlY3QgPSBm
aWxlSW5wdXQuZ2V0Q2xpZW50UmVjdHMoKVswXTsKKyAgICB2YXIgdGFyZ2V0WCA9IGZpbGVSZWN0
LmxlZnQgKyBmaWxlUmVjdC53aWR0aCAvIDI7CisgICAgdmFyIHRhcmdldFkgPSBmaWxlUmVjdC50
b3AgKyBmaWxlUmVjdC5oZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhG
aWxlcyhbJ3Jlc291cmNlcy90ZXN0LWRhdGEuaHRtbCcsICdyZXNvdXJjZXMvdGVzdC1kYXRhLnR4
dCddKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0YXJnZXRYLCB0YXJnZXRZKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgp
Cit7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciB0cmFucyA9IGV2ZW50
LnRhcmdldC50cmFuc2FjdGlvbjsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgndmFs
dWUnLCAna2V5JykiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitm
dW5jdGlvbiB0ZXN0QmxvYigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0Qmxv
YigpOiIpOworCisgICAgc2hvdWxkQmVUcnVlKCJGaWxlUmVhZGVyICE9IG51bGwiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgb25seSBh
IHRlc3QuJyIpOworICAgIGV2YWxBbmRMb2coImJsb2IgPSBuZXcgQmxvYihbdGVzdF9jb250ZW50
XSkiKTsKKyAgICB2YWxpZGF0ZUV4Y2VwdGlvbnMoImJsb2IiLCB0ZXN0RmlsZSk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RGaWxlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RGaWxl
KCk6Iik7CisgICAgZXZhbEFuZExvZygiZmlsZSA9IGZpbGVJbnB1dC5maWxlc1swXSIpOworICAg
IHZhbGlkYXRlRXhjZXB0aW9ucygiZmlsZSIsIHRlc3RGaWxlTGlzdCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RGaWxlTGlzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0RmlsZUxp
c3QoKToiKTsKKyAgICBldmFsQW5kTG9nKCJmaWxlbGlzdCA9IGZpbGVJbnB1dC5maWxlcyIpOwor
ICAgIHZhbGlkYXRlRXhjZXB0aW9ucygiZmlsZWxpc3QiLCBmaW5pc2hKU1Rlc3QpOworfQorCitm
dW5jdGlvbiB2YWxpZGF0ZUV4Y2VwdGlvbnModmFyaWFibGUsIG9uQ29tcGxldGUpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ2YWxpZGF0ZUV4Y2VwdGlvbnMoIiArIHZhcmlhYmxlICsg
Iik6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmVOYW1lJywgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5wdXQoIiArIHZhcmlhYmxlICsgIiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5E
QVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgi
ICsgdmFyaWFibGUgKyAiLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7
CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJj
dXJzb3IudXBkYXRlKCIgKyB2YXJpYWJsZSArICIpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05F
X0VSUiIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IG9uQ29tcGxldGU7
Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBpbmRleGVkREJUZXN0KHByZXBh
cmVEYXRhYmFzZSwgdGVzdEJsb2IpOworfSBlbHNlIHsKKyAgICBhbGVydCgiU2VsZWN0IGZpbGUo
cykgdXNpbmcgdGhlIGlucHV0IGNvbnRyb2wgYWJvdmUgdG8gaW5pdGlhdGUgdGhlIHRlc3QiKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iikub25jaGFuZ2UgPSBmdW5j
dGlvbigpIHsgaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHRlc3RCbG9iKTsgfTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmpl
Y3QtbG9va3Vwcy1pbi12ZXJzaW9uY2hhbmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL29iamVjdC1sb29rdXBzLWluLXZlcnNpb25jaGFuZ2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIxYjEzNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3QtbG9va3Vwcy1p
bi12ZXJzaW9uY2hhbmdlLmpzCkBAIC0wLDAgKzEsMTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiUmVn
cmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMjU0NyIpOworCitpbmRleGVk
REJUZXN0KHByZXBhcmVEYXRhYmFzZSwgZmluaXNoSlNUZXN0KTsKKworZnVuY3Rpb24gcHJlcGFy
ZURhdGFiYXNlKCkgeworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnbm8tc3VjaC1zdG9yZScpIiwgIkRPTUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSIiwgIidOb3RGb3VuZEVycm9yJyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgnbm8tc3VjaC1pbmRleCcpIiwgIkRPTUV4Y2Vw
dGlvbi5OT1RfRk9VTkRfRVJSIiwgIidOb3RGb3VuZEVycm9yJyIpOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tYmFkLXZlcnNpb25z
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tYmFkLXZl
cnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYTExNTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
b3Blbi1iYWQtdmVyc2lvbnMuanMKQEAgLTAsMCArMSwyNiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJO
byBjcmFzaGVzIHdoZW4gb3BlbmluZyBhbmQgcmVsb2FkaW5nIHdpdGggYmFkIHZlcnNpb24gbnVt
YmVycyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KyAgZXZhbEFuZExvZygiZGJuYW1lID0gU3RyaW5nKHdpbmRvdy5sb2NhdGlvbikiKTsKKworICB0
cnkgeyBpbmRleGVkREIub3BlbihkYm5hbWUsIC0xKTsgfSBjYXRjaCAoZSkgeyB9CisgIGluZGV4
ZWREQi5vcGVuKGRibmFtZSwgMik7CisgIHRyeSB7IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgLTEp
OyB9IGNhdGNoIChlKSB7IH0KKworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGlmICgh
d2luZG93LmxvY2F0aW9uLnNlYXJjaCkgeworICAgICAgd2luZG93LmxvY2F0aW9uID0gd2luZG93
LmxvY2F0aW9uICsgIj8yIjsKKyAgICB9IGVsc2UgeworICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfQorICB9LCA1MDApOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3B0aW9uYWwtYXJndW1lbnRzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wdGlvbmFsLWFyZ3VtZW50cy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWY0MDJkZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcHRpb25hbC1h
cmd1bWVudHMuanMKQEAgLTAsMCArMSwxMjkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRXhlcmNpc2Ug
b3B0aW9uYWwgYXJndW1lbnRzIHdpdGggbWlzc2luZyB2cy4gdW5kZWZpbmVkIGluIEluZGV4ZWRE
QiBtZXRob2RzLiIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgY2hlY2tPcHRp
b25hbEFyZ3VtZW50cyk7CitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQoreworICAgIHBy
ZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7
a2V5UGF0aDogJ2lkJ30pIik7CisgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2J5
X25hbWUnLCAnbmFtZScsIHt1bmlxdWU6IHRydWV9KSIpOworCisgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KHtpZDogMSwgbmFtZTogJ2EnfSkiKTsKK30KKworZnVuY3Rpb24gY2hlY2tPcHRpb25h
bEFyZ3VtZW50cyhldmVudCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOworICAgIHR4Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rl
c3Q7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdzdG9yZScpIik7
CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYnlfbmFtZScpIik7CisKKyAg
ICBzaG91bGRCZSgiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKS5sb3dlck9wZW4iLCAiZmFsc2Ui
KTsKKyAgICBzaG91bGRCZSgiSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgwKS51cHBlck9wZW4iLCAi
ZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiSURCS2V5UmFuZ2UuYm91bmQoMCwgMSkubG93ZXJPcGVu
IiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoIklEQktleVJhbmdlLmJvdW5kKDAsIDEpLnVwcGVy
T3BlbiIsICJmYWxzZSIpOworCisgICAgc2hvdWxkQmUoIklEQktleVJhbmdlLmxvd2VyQm91bmQo
MCwgdW5kZWZpbmVkKS5sb3dlck9wZW4iLCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCgwLCB1bmRlZmluZWQpLnVwcGVyT3BlbiIsICJmYWxzZSIpOworICAg
IHNob3VsZEJlKCJJREJLZXlSYW5nZS5ib3VuZCgwLCAxLCB1bmRlZmluZWQsIHVuZGVmaW5lZCku
bG93ZXJPcGVuIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoIklEQktleVJhbmdlLmJvdW5kKDAs
IDEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKS51cHBlck9wZW4iLCAiZmFsc2UiKTsKKworICAgIHNo
b3VsZE5vdFRocm93KCJzdG9yZS5hZGQoe2lkOiAyLCBuYW1lOiAnYid9KSIpOworICAgIHNob3Vs
ZE5vdFRocm93KCJzdG9yZS5wdXQoe2lkOiAzLCBuYW1lOiAnYyd9KSIpOworICAgIHNob3VsZE5v
dFRocm93KCJzdG9yZS5hZGQoe2lkOiA0LCBuYW1lOiAnZCd9LCB1bmRlZmluZWQpIik7CisgICAg
c2hvdWxkTm90VGhyb3coInN0b3JlLnB1dCh7aWQ6IDUsIG5hbWU6ICdlJ30sIHVuZGVmaW5lZCki
KTsKKworICAgIHRhc2tzID0gWworICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykgeyB2ZXJpZnlD
dXJzb3IoInN0b3JlLm9wZW5DdXJzb3IoKSIsICJuZXh0IiwgNSwgY2FsbGJhY2spOyB9LAorICAg
ICAgICBmdW5jdGlvbihjYWxsYmFjaykgeyB2ZXJpZnlDdXJzb3IoInN0b3JlLm9wZW5DdXJzb3Io
bnVsbCkiLCAibmV4dCIsIDUsIGNhbGxiYWNrKTsgfSwKKyAgICAgICAgZnVuY3Rpb24oY2FsbGJh
Y2spIHsgdmVyaWZ5Q3Vyc29yKCJzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91
bmQoNCkpIiwgIm5leHQiLCAyLCBjYWxsYmFjayk7IH0sCisgICAgICAgIGZ1bmN0aW9uKGNhbGxi
YWNrKSB7IHZlcmlmeUN1cnNvcigic3RvcmUub3BlbkN1cnNvcigzKSIsICJuZXh0IiwgMSwgY2Fs
bGJhY2spOyB9LAorCisgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigi
aW5kZXgub3BlbkN1cnNvcigpIiwgIm5leHQiLCA1LCBjYWxsYmFjayk7IH0sCisgICAgICAgIGZ1
bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigiaW5kZXgub3BlbkN1cnNvcihudWxsKSIs
ICJuZXh0IiwgNSwgY2FsbGJhY2spOyB9LAorICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykgeyB2
ZXJpZnlDdXJzb3IoImluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnYicp
KSIsICJuZXh0IiwgNCwgY2FsbGJhY2spOyB9LAorICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykg
eyB2ZXJpZnlDdXJzb3IoImluZGV4Lm9wZW5DdXJzb3IoJ2MnKSIsICJuZXh0IiwgMSwgY2FsbGJh
Y2spOyB9LAorCisgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigiaW5k
ZXgub3BlbktleUN1cnNvcigpIiwgIm5leHQiLCA1LCBjYWxsYmFjayk7IH0sCisgICAgICAgIGZ1
bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUN1cnNvcigiaW5kZXgub3BlbktleUN1cnNvcihudWxs
KSIsICJuZXh0IiwgNSwgY2FsbGJhY2spOyB9LAorICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykg
eyB2ZXJpZnlDdXJzb3IoImluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgnYicpKSIsICJuZXh0IiwgNCwgY2FsbGJhY2spOyB9LAorICAgICAgICBmdW5jdGlvbihjYWxs
YmFjaykgeyB2ZXJpZnlDdXJzb3IoImluZGV4Lm9wZW5LZXlDdXJzb3IoJ2MnKSIsICJuZXh0Iiwg
MSwgY2FsbGJhY2spOyB9LAorCisgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUNv
dW50KCJzdG9yZS5jb3VudCgpIiwgNSwgY2FsbGJhY2spOyB9LAorICAgICAgICBmdW5jdGlvbihj
YWxsYmFjaykgeyB2ZXJpZnlDb3VudCgic3RvcmUuY291bnQobnVsbCkiLCA1LCBjYWxsYmFjayk7
IH0sCisgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHZlcmlmeUNvdW50KCJzdG9yZS5jb3Vu
dChJREJLZXlSYW5nZS5sb3dlckJvdW5kKDIpKSIsIDQsIGNhbGxiYWNrKTsgfSwKKworICAgICAg
ICBmdW5jdGlvbihjYWxsYmFjaykgeyB2ZXJpZnlDb3VudCgiaW5kZXguY291bnQoKSIsIDUsIGNh
bGxiYWNrKTsgfSwKKyAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsgdmVyaWZ5Q291bnQoImlu
ZGV4LmNvdW50KG51bGwpIiwgNSwgY2FsbGJhY2spOyB9LAorICAgICAgICBmdW5jdGlvbihjYWxs
YmFjaykgeyB2ZXJpZnlDb3VudCgiaW5kZXguY291bnQoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgn
YicpKSIsIDQsIGNhbGxiYWNrKTsgfSwKKworICAgICAgICBjb250aW51ZVVuZGVmaW5lZCwKKwor
ICAgIF07CisgICAgZnVuY3Rpb24gZG9OZXh0VGFzaygpIHsKKyAgICAgICAgdmFyIHRhc2sgPSB0
YXNrcy5zaGlmdCgpOworICAgICAgICBpZiAodGFzaykgeworICAgICAgICAgICAgdGFzayhkb05l
eHRUYXNrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb05leHRUYXNrKCk7Cit9CisKK2Z1bmN0
aW9uIHZlcmlmeUN1cnNvcihleHByLCBkaXJlY3Rpb24sIGV4cGVjdGVkLCBjYWxsYmFjaykKK3sK
KyAgICBwcmVhbWJsZSgpOworICAgIGN1cnNvciA9IG51bGw7CisgICAgY29udGludWVzID0gMDsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gIiArIGV4cHIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHJlcXVlc3QucmVzdWx0KSB7CisgICAgICAgICAgICBp
ZiAoIWN1cnNvcikgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVl
c3QucmVzdWx0Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJz
b3IuZGlyZWN0aW9uIiwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsr
Y29udGludWVzOworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY29udGludWVzIiwgSlNPTi5zdHJpbmdpZnkoZXhw
ZWN0ZWQpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9OworfQor
CitmdW5jdGlvbiB2ZXJpZnlDb3VudChleHByLCBleHBlY3RlZCwgY2FsbGJhY2spCit7CisgICAg
cHJlYW1ibGUoKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gIiArIGV4cHIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0
IiwgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9
OworfQorCitmdW5jdGlvbiBjb250aW51ZVVuZGVmaW5lZChjYWxsYmFjaykKK3sKKyAgICBwcmVh
bWJsZSgpOworICAgIGZpcnN0ID0gdHJ1ZTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3Rv
cmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAoZmlyc3QpIHsKKyAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxk
QmVOb25OdWxsKCJyZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkTm90VGhyb3co
ImN1cnNvci5jb250aW51ZSh1bmRlZmluZWQpIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1pbnZhbGlkYXRpb24uanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtaW52YWxpZGF0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MGNkYTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtaW52YWxp
ZGF0aW9uLmpzCkBAIC0wLDAgKzEsODggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIEluZGV4
ZWREQidzIHdyaXRlIG9wZXJhdGlvbnMgaW52YWxpZGF0ZSBjdXJzb3IgcHJlZmV0Y2ggY2FjaGVz
Iik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvbk9wZW5TdWNjZXNzKTsKK2Z1
bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Cit9CisKK2Z1bmN0aW9uIG9u
T3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICB2YXIgc3RlcHMgPSBbCisgICAgICAg
IGRlbGV0ZVJhbmdlLAorICAgICAgICBjbGVhclN0b3JlCisgICAgXTsKKworICAgIChmdW5jdGlv
biBuZXh0U3RlcCgpIHsKKyAgICAgICAgdmFyIHN0ZXAgPSBzdGVwcy5zaGlmdCgpOworICAgICAg
ICBpZiAoc3RlcCkgeworICAgICAgICAgICAgZG9QcmVmZXRjaEludmFsaWRhdGlvblRlc3Qoc3Rl
cCwgbmV4dFN0ZXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KCkpOworfQorCitmdW5j
dGlvbiBkb1ByZWZldGNoSW52YWxpZGF0aW9uVGVzdChvcGVyYXRpb24sIGNhbGxiYWNrKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSIpOworICAgIHByZWFtYmxlKCk7CisgICAgZXZhbEFuZExvZygic3RvcmUg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICBkZWJ1ZygiUG9wdWxhdGUgdGhlIHN0b3JlIHdpdGggMjAwIHJlY29yZHMuIik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgICAgICAgc3RvcmUucHV0KGks
IGkpOworICAgIGV2YWxBbmRMb2coImN1cnNvclJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCki
KTsKKyAgICBjb250aW51ZTEwMFRpbWVzKG9wZXJhdGlvbiwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiBjb250aW51ZTEwMFRpbWVzKG9wZXJhdGlvbiwgY2FsbGJhY2spCit7CisgICAgcHJlYW1i
bGUoKTsKKyAgICB2YXIgY291bnQgPSAwOworCisgICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0
OworICAgICAgICArK2NvdW50OworICAgICAgICBpZiAoY291bnQgPCAxMDApIHsKKyAgICAgICAg
ICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY3Vyc29yUmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAg
ZG9PcGVyYXRpb25BbmRDb250aW51ZShvcGVyYXRpb24sIGNhbGxiYWNrKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGRvT3BlcmF0aW9uQW5kQ29udGludWUob3BlcmF0aW9uLCBjYWxsYmFjaykKK3sK
KyAgICBwcmVhbWJsZSgpOworICAgIG9wZXJhdGlvbigpOworICAgIGV2YWxBbmRMb2coImN1cnNv
ciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCkiKQorICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb25Db250aW51
ZVN1Y2Nlc3MoKSB7CisgICAgICAgIHByZWFtYmxlKCk7CisgICAgICAgIHNob3VsZEJlTnVsbCgi
Y3Vyc29yUmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9OworfQor
CitmdW5jdGlvbiBkZWxldGVSYW5nZSgpCit7CisgICAgcmV0dXJuIGV2YWxBbmRMb2coInN0b3Jl
LmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgtSW5maW5pdHksICtJbmZpbml0eSkpIik7Cit9CisK
K2Z1bmN0aW9uIGNsZWFyU3RvcmUoKQoreworICAgIHJldHVybiBldmFsQW5kTG9nKCJzdG9yZS5j
bGVhcigpIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvcHJlZmV0Y2gtcmFjZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9wcmVmZXRjaC1yYWNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYwMDg2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtcmFjZS5qcwpAQCAtMCwwICsxLDU0IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIkVuc3VyZSBJbmRleGVkREIncyBjdXJzb3IgcHJlZmV0Y2ggY2FjaGUgcmVx
dWVzdHMgYXJlIGludmFsaWRhdGVkIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNl
LCBvbk9wZW5TdWNjZXNzKTsKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCit7CisgICAg
cHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
Iik7CisgICAgZGVidWcoIlBvcHVsYXRlIHdpdGggZXZlbiByZWNvcmRzLi4uIik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDsgaSArPSAyKQorICAgICAgICBzdG9yZS5wdXQoaSwgaSk7Cit9
CisKK2Z1bmN0aW9uIG9uT3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7Cisg
ICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBldmFsQW5k
TG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlID0gdHgub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisKKyAgICBrUHJlZmV0Y2hUaHJl
c2hvbGQgPSAzOworCisgICAgZXhwZWN0ZWQgPSBbIjAiLCAiMiIsICI0IiwgIjYiLCAiNyIsICI4
IiwgIjkiXTsKKyAgICBjb250aW51ZUNvdW50ID0gMDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKSB7CisgICAgICAgIHByZWFtYmxlKCk7CisgICAgICAg
IGN1cnNvciA9IHJlcXVlc3QucmVzdWx0OworICAgICAgICBpZiAoIWN1cnNvcikKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgKytjb250aW51ZUNvdW50OworCisgICAgICAgIGV4cGVjdCA9
IGV4cGVjdGVkLnNoaWZ0KCk7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgZXhwZWN0
KTsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKworICAgICAgICBp
ZiAoY29udGludWVDb3VudCA9PT0ga1ByZWZldGNoVGhyZXNob2xkKSB7CisgICAgICAgICAgICBk
ZWJ1ZygiXG5UaGF0IHNob3VsZCBoYXZlIHRyaWdnZXJlZCBhIHByZWZldGNoLCBpbmplY3Rpbmcg
b2RkIHJlY29yZHMuLi4iKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgMTA7IGkg
Kz0gMikKKyAgICAgICAgICAgICAgICBzdG9yZS5wdXQoaSwgaSk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgdHgub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgi
Y29udGludWVDb3VudCIsICI3Iik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJp
bWFyeS1rZXktdW5pcXVlLXRvLW9iamVjdHN0b3JlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3ByaW1hcnkta2V5LXVuaXF1ZS10by1vYmplY3RzdG9yZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWI2ZDBiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ByaW1hcnkta2V5
LXVuaXF1ZS10by1vYmplY3RzdG9yZS5qcwpAQCAtMCwwICsxLDE0NiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2lmICh0ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKK30KKwor
dmFyIG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oInBrdXRvcyIsIDEpOworCitvcGVuUmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CisgICAgdmFyIHRoaXNEQiA9IGUu
dGFyZ2V0LnJlc3VsdDsKKworICAgIGlmKCF0aGlzREIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlu
cygicGVvcGxlIikpIHsKKyAgICAgICAgdGhpc0RCLmNyZWF0ZU9iamVjdFN0b3JlKCJwZW9wbGUi
LCB7a2V5UGF0aDoiaWQifSk7CisgICAgfQorCisgICAgaWYoIXRoaXNEQi5vYmplY3RTdG9yZU5h
bWVzLmNvbnRhaW5zKCJub3RlcyIpKSB7CisgICAgICAgIHRoaXNEQi5jcmVhdGVPYmplY3RTdG9y
ZSgibm90ZXMiLCB7a2V5UGF0aDoidWlkIn0pOworICAgIH0KK30KKworb3BlblJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgIGRiID0gZS50YXJnZXQucmVzdWx0OworICAgIGFk
ZFBlcnNvbigpOworfSAgICAKKworb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsK
KyAgICBsb2coIm9wZW5SZXF1ZXN0IGVycm9yIC0gIiArIGUpOworfQorCit2YXIgc2hhcmVkSUQg
PSAwOworCitmdW5jdGlvbiBhZGRQZXJzb24oKSB7CisgICAgbG9nKCJBYm91dCB0byBhZGQgcGVy
c29uIGFuZCBub3RlIik7CisKKyAgICAvL0dldCBhIHRyYW5zYWN0aW9uCisgICAgLy9kZWZhdWx0
IGZvciBPUyBsaXN0IGlzIGFsbCwgZGVmYXVsdCBmb3IgdHlwZSBpcyByZWFkCisgICAgdmFyIHRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWyJwZW9wbGUiXSwgInJlYWR3cml0ZSIpOworCisg
ICAgLy9Bc2sgZm9yIHRoZSBvYmplY3RTdG9yZQorICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCJwZW9wbGUiKTsKKworICAgIC8vRGVmaW5lIGEgcGVyc29uCisgICAgdmFy
IHBlcnNvbiA9IHsKKyAgICAgICAgbmFtZTogIlBlcnNvbiIsCisgICAgICAgIGlkOiBzaGFyZWRJ
RAorICAgIH0KKworICAgIC8vUGVyZm9ybSB0aGUgYWRkCisgICAgdmFyIHJlcXVlc3QgPSBzdG9y
ZS5hZGQocGVyc29uKTsKKworICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgbG9nKCJFcnJvciBhZGRpbmcgcGVyc29uIC0gIiwgZSk7CisgICAgfQorCisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGxvZygiU3VjY2Vzc2Z1bGx5
IGFkZGVkIHBlcnNvbiIpOworICAgICAgICBzZXRUaW1lb3V0KCJhZGRDb21wbGV0ZSgpOyIsIDAp
OworICAgIH0KKyAgICAKKyAgICAvL0RlZmluZSBhIG5vdGUKKyAgICB2YXIgbm90ZSA9IHsKKyAg
ICAgICAgbm90ZTogIk5vdGUiLAorICAgICAgICB1aWQ6IHNoYXJlZElECisgICAgfQorCisgICAg
dmFyIHRyYW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKFsibm90ZXMiXSwgInJlYWR3cml0ZSIp
OworCisgICAgLy9Bc2sgZm9yIHRoZSBvYmplY3RTdG9yZQorICAgIHZhciBzdG9yZTIgPSB0cmFu
c2FjdGlvbjIub2JqZWN0U3RvcmUoIm5vdGVzIik7CisKKyAgICAvL1BlcmZvcm0gdGhlIGFkZAor
ICAgIHZhciByZXF1ZXN0MiA9IHN0b3JlMi5hZGQobm90ZSk7CisKKyAgICByZXF1ZXN0Mi5vbmVy
cm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICBsb2coIkVycm9yIGFkZGluZyBub3RlIC0gIiwg
ZSk7CisgICAgfQorCisgICAgcmVxdWVzdDIub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAg
ICAgICBsb2coIlN1Y2Nlc3NmdWxseSBhZGRlZCBub3RlIik7CisgICAgICAgIHNldFRpbWVvdXQo
ImFkZENvbXBsZXRlKCk7IiwgMCk7CisgICAgfQorICAgIAorfQorCit2YXIgY29tcGxldGVkQWRk
cyA9IDA7CitmdW5jdGlvbiBhZGRDb21wbGV0ZSgpCit7CisgICAgaWYgKCsrY29tcGxldGVkQWRk
cyA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vR2V0IGEgdHJhbnNhY3Rpb24KKyAgICB2
YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbInBlb3BsZSJdLCAicmVhZHdyaXRlIik7
CisKKyAgICAvL0FzayBmb3IgdGhlIG9iamVjdFN0b3JlCisgICAgdmFyIHN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoInBlb3BsZSIpOworCisgICAgLy9QZXJmb3JtIHRoZSBhZGQKKyAg
ICB2YXIgcmVxdWVzdCA9IHN0b3JlLmdldChzaGFyZWRJRCk7CisKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGxvZygiRXJyb3IgZ2V0dGluZyBwZXJzb24gLSAi
LCBlKTsKKyAgICB9CisKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgbG9nKCJTdWNjZXNzZnVsbHkgZ290IHBlcnNvbiIpOworICAgICAgICBmb3IgKG4gaW4g
ZS50YXJnZXQucmVzdWx0KSB7CisgICAgICAgICAgICBsb2cobik7CisgICAgICAgIH0KKyAgICAg
ICAgZ2V0Q29tcGxldGUoKTsKKyAgICB9CisKKyAgICB2YXIgdHJhbnNhY3Rpb24yID0gZGIudHJh
bnNhY3Rpb24oWyJub3RlcyJdLCAicmVhZHdyaXRlIik7CisKKyAgICAvL0FzayBmb3IgdGhlIG9i
amVjdFN0b3JlCisgICAgdmFyIHN0b3JlMiA9IHRyYW5zYWN0aW9uMi5vYmplY3RTdG9yZSgibm90
ZXMiKTsKKworICAgIC8vUGVyZm9ybSB0aGUgYWRkCisgICAgdmFyIHJlcXVlc3QyID0gc3RvcmUy
LmdldChzaGFyZWRJRCk7CisKKyAgICByZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZSkgewor
ICAgICAgICBsb2coIkVycm9yIGdldHRpbmcgbm90ZSAtICIsIGUpOworICAgIH0KKworICAgIHJl
cXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgbG9nKCJTdWNjZXNzZnVs
bHkgZ290IG5vdGUiKTsKKyAgICAgICAgZm9yIChuIGluIGUudGFyZ2V0LnJlc3VsdCkgeworICAg
ICAgICAgICAgbG9nKG4pOworICAgICAgICB9CisgICAgICAgIGdldENvbXBsZXRlKCk7CisgICAg
fQorfQorCit2YXIgY29tcGxldGVkR2V0cyA9IDA7CitmdW5jdGlvbiBnZXRDb21wbGV0ZSgpCit7
CisgICAgaWYgKCsrY29tcGxldGVkR2V0cyA9PSAyICYmIHRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtbGVhay5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LWxlYWsuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNTkzOGM3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LWxlYWsuanMKQEAgLTAsMCArMSw0
OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCB0aGF0IHJlcXVlc3RzIHdlYWtseSBo
b2xkIHNjcmlwdCB2YWx1ZSBwcm9wZXJ0aWVzIik7CisKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIG9uT3Blbik7Cit9IGVsc2Ugewor
ICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIEludGVybmFs
cyBvYmplY3QnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURh
dGFiYXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe3ZhbHVl
OiAndmFsdWUnfSwgJ2tleScpIik7Cit9CisKK2Z1bmN0aW9uIG9uT3BlbihldnQpCit7CisgICAg
cHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBldmFsQW5kTG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxB
bmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoJ2tleScpIik7CisgICAgdHgub25jb21wbGV0ZSA9
IGZ1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZSgpIHsKKyAgICAgICAgcHJlYW1ibGUoKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCIsICJvYmplY3QiKTsKKworICAgICAgICAv
LyBWZXJpZnkgdGhhdCB0aGUgc2FtZSBvYmplY3QgaXMgcmV0dXJuZWQgb24gZWFjaCBhY2Nlc3Mg
dG8gcmVxdWVzdC5yZXN1bHQuCisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QucmVzdWx0Lngg
PSAxMjMiKTsKKyAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0LngiLCAiMTIzIik7CisK
KyAgICAgICAgLy8gVHJ5IGFuZCBpbmR1Y2UgYSBsZWFrIGJ5IGEgcmVmZXJlbmNlIGN5Y2xlIGZy
b20gRE9NIHRvIFY4IGFuZCBiYWNrLgorICAgICAgICAvLyBJZiB0aGUgdjggdmFsdWUgb2YgcmVx
dWVzdC5yZXN1bHQgKGV0YykgaXMgb25seSBoZWxkIGJ5IHRoZSByZXF1ZXN0cydzCisgICAgICAg
IC8vIFY4IHdyYXBwZXIgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGxlYWsuCisgICAgICAgIGV2YWxB
bmRMb2coInJlcXVlc3QucmVzdWx0LmxlYWsgPSByZXF1ZXN0Iik7CisgICAgICAgIGV2YWxBbmRM
b2coIm9ic2VydmVyID0gaW50ZXJuYWxzLm9ic2VydmVHQyhyZXF1ZXN0KSIpOworICAgICAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gbnVsbCIpOworICAgICAgICBldmFsQW5kTG9nKCJnYygpIik7
CisgICAgICAgIHNob3VsZEJlVHJ1ZSgib2JzZXJ2ZXIud2FzQ29sbGVjdGVkIik7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1yZXN1bHQtY2FjaGUuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1yZXN1bHQtY2FjaGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlY2YxYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LXJl
c3VsdC1jYWNoZS5qcwpAQCAtMCwwICsxLDM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0
aGF0IGEgcmVxdWVzdCdzIHJlc3VsdCBpcyBkaXJ0aWVkIHdoZW4gYSBjdXJzb3IgaXMgY29udGlu
dWVkIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvbk9wZW4pOworCitmdW5j
dGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIHN0b3JlLnB1dCgidmFs
dWUiLCAia2V5Iik7Cit9CisKK2Z1bmN0aW9uIG9uT3BlbihldnQpCit7CisgICAgcHJlYW1ibGUo
ZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0eCA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworCisgICAgZXZhbEFuZExvZygi
Y3Vyc29yUmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1cnNvclJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gY3Vyc29yUmVxdWVzdFN1Y2Nlc3MoZXZ0KSB7CisgICAgICAg
IHByZWFtYmxlKGV2dCk7CisgICAgICAgIGlmICghY3Vyc29yUmVxdWVzdC5yZXN1bHQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3Vyc29yUmVx
dWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsK
KyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yUmVxdWVzdC5yZXN1bHQiLCAi
RE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsg
ICAgfTsKKworICAgIHR4Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RydWN0dXJlZC1jbG9u
ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdHJ1Y3R1cmVk
LWNsb25lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMWM3OTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c3RydWN0dXJlZC1jbG9uZS5qcwpAQCAtMCwwICsxLDU0NiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IHN0cnVjdHVyZWQgY2xvbmUgcGVybXV0YXRpb25zIGluIEluZGV4ZWREQi4gRmlsZS9GaWxl
TGlzdCB0ZXN0cyByZXF1aXJlIER1bXBSZW5kZXJUcmVlLiIpOworCitpZiAoc2VsZi5ldmVudFNl
bmRlcikgeworICAgIHZhciBmaWxlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmls
ZUlucHV0Iik7CisgICAgdmFyIGZpbGVSZWN0ID0gZmlsZUlucHV0LmdldENsaWVudFJlY3RzKClb
MF07CisgICAgdmFyIHRhcmdldFggPSBmaWxlUmVjdC5sZWZ0ICsgZmlsZVJlY3Qud2lkdGggLyAy
OworICAgIHZhciB0YXJnZXRZID0gZmlsZVJlY3QudG9wICsgZmlsZVJlY3QuaGVpZ2h0IC8gMjsK
KyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWydyZXNvdXJjZXMvdGVzdC1kYXRh
Lmh0bWwnLCAncmVzb3VyY2VzL3Rlc3QtZGF0YS50eHQnXSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8odGFyZ2V0WCwgdGFyZ2V0WSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
fQorCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgc3RhcnRUZXN0cyk7CitmdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIGRlYnVnKCJUaGlzIGluZGV4IGlzIG5vdCB1c2VkLCBidXQgZXZhbHVhdGluZyBrZXkg
cGF0aCBvbiBlYWNoIHB1dCgpIGNhbGwgd2lsbCBleGVyY2lzZSAoZGUpc2VyaWFsaXphdGlvbjoi
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2R1bW15
S2V5UGF0aCcpIik7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdHMoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHZhciB0ZXN0c190b19ydW4g
PSBbCisgICAgICAgIHRlc3RVbmRlZmluZWQsCisgICAgICAgIHRlc3ROdWxsLAorICAgICAgICB0
ZXN0Qm9vbGVhbiwKKyAgICAgICAgdGVzdE51bWJlciwKKyAgICAgICAgdGVzdFN0cmluZywKKyAg
ICAgICAgdGVzdEJvb2xlYW5PYmplY3QsCisgICAgICAgIHRlc3ROdW1iZXJPYmplY3QsCisgICAg
ICAgIHRlc3RTdHJpbmdPYmplY3QsCisgICAgICAgIHRlc3REYXRlT2JqZWN0LAorICAgICAgICB0
ZXN0UmVnRXhwT2JqZWN0LAorICAgICAgICB0ZXN0SW1hZ2VEYXRhLAorICAgICAgICB0ZXN0Qmxv
YiwKKyAgICAgICAgdGVzdEZpbGUsCisgICAgICAgIHRlc3RGaWxlTGlzdCwKKyAgICAgICAgdGVz
dEFycmF5LAorICAgICAgICB0ZXN0T2JqZWN0LAorICAgICAgICB0ZXN0VHlwZWRBcnJheQorICAg
IF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICBpZiAodGVzdHNfdG9fcnVuLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHRlc3QgPSB0
ZXN0c190b19ydW4uc2hpZnQoKTsKKyAgICAgICAgICAgIHRlc3QobmV4dFRlc3QpOyAvLyBXaGVu
IGRvbmUsIGNhbGwgdGhpcyBhZ2Fpbi4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRl
c3RCYWRUeXBlcygpOworICAgICAgICB9CisgICAgfQorICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdEZ1bmN0aW9uLCB2YWx1ZXMsIGNhbGxiYWNr
KQoreworICAgIGZ1bmN0aW9uIG5leHRWYWx1ZSgpIHsKKyAgICAgICAgaWYgKHZhbHVlcy5sZW5n
dGgpIHsKKyAgICAgICAgICAgIHRlc3RGdW5jdGlvbih2YWx1ZXMuc2hpZnQoKSwgbmV4dFZhbHVl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBuZXh0VmFsdWUoKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbHVlKHZhbHVl
LCBjYWxsYmFjaykKK3sKKyAgICAvLyBPbmUgdHJhbnNhY3Rpb24gcGVyIHRlc3QsIHNpbmNlIHNv
bWUgdGVzdHMgcmVxdWlyZSBhc3luY2hyb25vdXMKKyAgICAvLyBvcGVyYXRpb25zIHRvIHZlcmlm
eSB0aGUgcmVzdWx0IChlLmcuIHZpYSBGaWxlUmVhZGVyKQorICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsICdyZWFkd3JpdGUnKSIpOworICAg
IHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKworICAg
IHNlbGYudmFsdWUgPSB2YWx1ZTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0
KHZhbHVlLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgY2FsbGJhY2socmVxdWVzdC5yZXN1
bHQpOworICAgICAgICB9OworICAgIH07Cit9CisKKy8vIElkZW50aXR5IHRlc3RpbmcsIHNlbnNp
dGl2ZSB0byBOYU4gYW5kIC0wCitmdW5jdGlvbiBpcyh4LCB5KSB7CisgICAgaWYgKHggPT09IHkp
IHsKKyAgICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OworICAgIH0KKyAg
ICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5OworfQorCitmdW5jdGlvbiBhcnJheUNvbXBhcmUo
YSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgaWYgKCFpcyhhW2ldLCBiW2ldKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0
UHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZzog
IiArIHN0cmluZyk7CisgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyAr
ICIpIik7CisgICAgdGVzdF9kYXRhID0gdmFsdWU7CisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAg
ICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YSwgcmVzdWx0KSIpOworICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPYmpl
Y3RXaXRoVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZzogIiAr
IHN0cmluZyk7CisgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIp
Iik7CisgICAgdGVzdF9kYXRhID0gdmFsdWU7CisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiByZXN1bHQiLCAib2JqZWN0Iik7CisgICAgICAg
IHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGVzdF9kYXRhKSIpOworICAgICAgICBzaG91bGRC
ZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQu
dG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImlzKHRlc3RfZGF0YS52YWx1ZU9mKCksIHJlc3VsdC52YWx1ZU9mKCkpIik7CisgICAgICAg
IGRlYnVnKCIiKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g
dGVzdFVuZGVmaW5lZChjYWxsYmFjaykKK3sKKyAgICB0ZXN0UHJpbWl0aXZlVmFsdWUoInVuZGVm
aW5lZCIsIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdE51bGwoY2FsbGJhY2spCit7Cisg
ICAgdGVzdFByaW1pdGl2ZVZhbHVlKCJudWxsIiwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0
ZXN0Qm9vbGVhbihjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBib29sZWFuIHByaW1p
dGl2ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UHJp
bWl0aXZlVmFsdWUsIFsidHJ1ZSIsICJmYWxzZSJdLCBjYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RCb29sZWFuT2JqZWN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEJvb2xl
YW4gb2JqZWN0cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRl
c3RPYmplY3RXaXRoVmFsdWUsIFsKKyAgICAgICAgIm5ldyBCb29sZWFuKHRydWUpIiwKKyAgICAg
ICAgIm5ldyBCb29sZWFuKGZhbHNlKSIKKyAgICBdLCBjYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RTdHJpbmcoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmcgc3RyaW5nIHByaW1p
dGl2ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UHJp
bWl0aXZlVmFsdWUsIFsKKyAgICAgICAgIicnIiwKKyAgICAgICAgIid0aGlzIGlzIGEgc2FtcGxl
IHN0cmluZyciLAorICAgICAgICAiJ251bGwoXFwwKSciCisgICAgXSwgY2FsbGJhY2spOworfQor
CitmdW5jdGlvbiB0ZXN0U3RyaW5nT2JqZWN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0
aW5nIFN0cmluZyBvYmplY3RzIik7CisgICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2Fs
bGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWworICAgICAgICAibmV3IFN0cmluZygpIiwKKyAg
ICAgICAgIm5ldyBTdHJpbmcoJ3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJykiLAorICAgICAgICAi
bmV3IFN0cmluZygnbnVsbChcXDApJykiCisgICAgXSwgY2FsbGJhY2spOworfQorCitmdW5jdGlv
biB0ZXN0TnVtYmVyKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIG51bWJlciBwcmlt
aXRpdmVzIik7CisgICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdFBy
aW1pdGl2ZVZhbHVlLCBbCisgICAgICAgICJOYU4iLAorICAgICAgICAiLUluZmluaXR5IiwKKyAg
ICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAgIi0weGZmZmZmZmZmIiwKKyAgICAg
ICAgIi0weDgwMDAwMDAwIiwKKyAgICAgICAgIi0weDdmZmZmZmZmIiwKKyAgICAgICAgIi0xIiwK
KyAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAgICAgIi0wIiwKKyAgICAgICAgIjAi
LAorICAgICAgICAiMSIsCisgICAgICAgICJOdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAgICAgIjB4
N2ZmZmZmZmYiLAorICAgICAgICAiMHg4MDAwMDAwMCIsCisgICAgICAgICIweGZmZmZmZmZmIiwK
KyAgICAgICAgIk51bWJlci5NQVhfVkFMVUUiLAorICAgICAgICAiSW5maW5pdHkiCisgICAgXSwg
Y2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0TnVtYmVyT2JqZWN0KGNhbGxiYWNrKQorewor
ICAgIGRlYnVnKCJUZXN0aW5nIE51bWJlciBvYmplY3RzIik7CisgICAgZGVidWcoIiIpOworICAg
IGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWworICAgICAgICAibmV3
IE51bWJlcihOYU4pIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoLUluZmluaXR5KSIsCisgICAgICAg
ICJuZXcgTnVtYmVyKC1OdW1iZXIuTUFYX1ZBTFVFKSIsCisgICAgICAgICJuZXcgTnVtYmVyKC1O
dW1iZXIuTUlOX1ZBTFVFKSIsCisgICAgICAgICJuZXcgTnVtYmVyKC0wKSIsCisgICAgICAgICJu
ZXcgTnVtYmVyKDApIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSkiLAor
ICAgICAgICAibmV3IE51bWJlcihOdW1iZXIuTUFYX1ZBTFVFKSIsCisgICAgICAgICJuZXcgTnVt
YmVyKEluZmluaXR5KSIKKyAgICBdLCBjYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHRlc3REYXRl
T2JqZWN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIERhdGUgb2JqZWN0cyIpOwor
ICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFs
dWUsIFsKKyAgICAgICAgIm5ldyBEYXRlKC0xZTEzKSIsCisgICAgICAgICJuZXcgRGF0ZSgtMWUx
MikiLAorICAgICAgICAibmV3IERhdGUoLTFlOSkiLAorICAgICAgICAibmV3IERhdGUoLTFlNiki
LAorICAgICAgICAibmV3IERhdGUoLTFlMykiLAorICAgICAgICAibmV3IERhdGUoMCkiLAorICAg
ICAgICAibmV3IERhdGUoMWUzKSIsCisgICAgICAgICJuZXcgRGF0ZSgxZTYpIiwKKyAgICAgICAg
Im5ldyBEYXRlKDFlOSkiLAorICAgICAgICAibmV3IERhdGUoMWUxMikiLAorICAgICAgICAibmV3
IERhdGUoMWUxMykiCisgICAgXSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0UmVnRXhw
T2JqZWN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIFJlZ0V4cCBvYmplY3RzIik7
CisgICAgZGVidWcoIiIpOworICAgIGZ1bmN0aW9uIHRlc3RSZWdFeHAoc3RyaW5nLCBjYWxsYmFj
aykgeworICAgICAgICBkZWJ1ZygiVGVzdGluZyBSZWdFeHA6ICIgKyBzdHJpbmcpOworICAgICAg
ICB2YXIgdmFsdWUgPSBldmFsKCJ2YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKKyAgICAgICAg
dGVzdF9kYXRhID0gdmFsdWU7CisgICAgICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQp
IiwgIltvYmplY3QgUmVnRXhwXSIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50b1N0
cmluZygpIiwgInRlc3RfZGF0YS50b1N0cmluZygpIik7CisgICAgICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmb3JF
YWNoV2l0aENhbGxiYWNrKHRlc3RSZWdFeHAsIFsKKyAgICAgICAgIm5ldyBSZWdFeHAoKSIsCisg
ICAgICAgICIvYWJjLyIsCisgICAgICAgICIvYWJjL2ciLAorICAgICAgICAiL2FiYy9pIiwKKyAg
ICAgICAgIi9hYmMvZ2kiLAorICAgICAgICAiL2FiYy9tIiwKKyAgICAgICAgIi9hYmMvbWciLAor
ICAgICAgICAiL2FiYy9taSIsCisgICAgICAgICIvYWJjL21naSIKKyAgICBdLCBjYWxsYmFjayk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RJbWFnZURhdGEoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRl
c3RpbmcgSW1hZ2VEYXRhIik7CisgICAgZXZhbEFuZExvZygiY2FudmFzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnY2FudmFzJykiKTsKKyAgICBldmFsQW5kTG9nKCJjYW52YXMud2lkdGggPSA4
Iik7CisgICAgZXZhbEFuZExvZygiY2FudmFzLmhlaWdodCA9IDgiKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGEgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMCwgMCwg
OCwgOCkiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKKyAgICAgICAg
dGVzdF9kYXRhLmRhdGFbaV0gPSBpOworICAgIH0KKworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEs
IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwg
IltvYmplY3QgSW1hZ2VEYXRhXSIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0LndpZHRoIiwg
InRlc3RfZGF0YS53aWR0aCIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0LmhlaWdodCIsICJ0
ZXN0X2RhdGEuaGVpZ2h0Iik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQuZGF0YS5sZW5ndGgi
LCAidGVzdF9kYXRhLmRhdGEubGVuZ3RoIik7CisgICAgICAgIGlmIChhcnJheUNvbXBhcmUodGVz
dF9kYXRhLmRhdGEsIHJlc3VsdC5kYXRhKSkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgicmVz
dWx0IGRhdGEgbWF0Y2hlcyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgicmVzdWx0IGRhdGEgZG9lc24ndCBtYXRjaCIpOworICAgICAgICB9CisgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGNh
bGxiYWNrKQoreworICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIHJlYWRl
ci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGlmIChlLnRhcmdldC5yZWFkeVN0YXRl
ID09PSBGaWxlUmVhZGVyLkRPTkUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGUudGFyZ2V0LnJl
c3VsdCk7CisgICAgICAgIH0KKyAgICB9OworICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24o
ZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJFcnJvciByZWFkaW5nIGJsb2IgYXMgdGV4dDogIiAr
IGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9OworICAgIHJlYWRlci5yZWFkQXNU
ZXh0KGJsb2IpOworfQorCitmdW5jdGlvbiBjaGVja0Jsb2JDb250ZW50cyhibG9iLCBleHBlY3Rl
ZCwgY2FsbGJhY2spCit7CisgICAgcmVhZEJsb2JBc1RleHQoYmxvYiwgZnVuY3Rpb24odGV4dCkg
eworICAgICAgICBzZWxmLnRleHQgPSB0ZXh0OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInRleHQiLCBleHBlY3RlZCk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIGNvbXBhcmVCbG9icyhibG9iMSwgYmxvYjIsIGNhbGxiYWNrKQoreworICAgIHJl
YWRCbG9iQXNUZXh0KGJsb2IxLCBmdW5jdGlvbih0ZXh0MSkgeworICAgICAgICByZWFkQmxvYkFz
VGV4dChibG9iMiwgZnVuY3Rpb24odGV4dDIpIHsKKyAgICAgICAgICAgIHNlbGYudGV4dDEgPSB0
ZXh0MTsKKyAgICAgICAgICAgIHNlbGYudGV4dDIgPSB0ZXh0MjsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygidGV4dDIiLCB0ZXh0MSk7CisgICAgICAgICAgICBjYWxsYmFjaygp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdEJsb2IoY2FsbGJhY2sp
Cit7CisgICAgZGVidWcoIlRlc3RpbmcgQmxvYiIpOworCisgICAgLy8gRklYTUU6IEJsb2IsIEZp
bGUsIGFuZCBGaWxlTGlzdCBzdXBwb3J0IGlzIGluY29tcGxldGUuCisgICAgLy8gaHR0cDovL2Ny
YnVnLmNvbS8xMDgwMTIKKyAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOworICAgIGNhbGxiYWNr
KCk7CisgICAgcmV0dXJuOworCisgICAgc2hvdWxkQmVUcnVlKCJGaWxlUmVhZGVyICE9IG51bGwi
KTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QuIFRoaXMg
aXMgb25seSBhIHRlc3QuJyIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YSA9IG5ldyBCbG9i
KFt0ZXN0X2NvbnRlbnRdKSIpOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVU
cnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgQmxv
Yl0iKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5zaXplIiwgInRlc3RfZGF0YS5zaXplIik7
CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQudHlwZSIsICJ0ZXN0X2RhdGEudHlwZSIpOworICAg
ICAgICBjaGVja0Jsb2JDb250ZW50cyhyZXN1bHQsIHRlc3RfY29udGVudCwgY2FsbGJhY2spOwor
ICAgIH0pOworfQorCitmdW5jdGlvbiBjb21wYXJlRmlsZXMoZmlsZTEsIGZpbGUyLCBjYWxsYmFj
aykKK3sKKyAgICBzZWxmLmZpbGUxID0gZmlsZTE7CisgICAgc2VsZi5maWxlMiA9IGZpbGUyOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTEgIT09IGZpbGUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTEpIiwgIltvYmplY3Qg
RmlsZV0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChmaWxlMikiLCAiW29iamVjdCBGaWxlXSIpOworICAgIGRlYnVnKCJmaWxlMS5z
aXplOiAiICsgZmlsZTEuc2l6ZSk7CisgICAgc2hvdWxkQmUoImZpbGUxLnNpemUiLCAiZmlsZTIu
c2l6ZSIpOworICAgIGRlYnVnKCJmaWxlMS50eXBlOiAiICsgZmlsZTEudHlwZSk7CisgICAgc2hv
dWxkQmUoImZpbGUxLnR5cGUiLCAiZmlsZTIudHlwZSIpOworICAgIGRlYnVnKCJmaWxlMS5uYW1l
OiAiICsgZmlsZTEubmFtZSk7CisgICAgc2hvdWxkQmUoImZpbGUxLm5hbWUiLCAiZmlsZTIubmFt
ZSIpOworICAgIHNob3VsZEJlKCJTdHJpbmcoZmlsZTEubGFzdE1vZGlmaWVkRGF0ZSkiLCAiU3Ry
aW5nKGZpbGUyLmxhc3RNb2RpZmllZERhdGUpIik7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAg
ICAgIGNvbXBhcmVCbG9icyhmaWxlMSwgZmlsZTIsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RGaWxlKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEZpbGUiKTsK
KworICAgIC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNv
bXBsZXRlLgorICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisgICAgZGVidWcoIlNraXBw
aW5nIHRlc3QiKTsKKyAgICBjYWxsYmFjaygpOworICAgIHJldHVybjsKKworICAgIGV2YWxBbmRM
b2coInRlc3RfY29udGVudCA9IGZpbGVJbnB1dC5maWxlc1swXSIpOworCisgICAgc2VsZi50ZXN0
X2RhdGEgPSB0ZXN0X2NvbnRlbnQ7CisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBjb21wYXJl
RmlsZXMocmVzdWx0LCB0ZXN0X2RhdGEsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworCitmdW5j
dGlvbiB0ZXN0RmlsZUxpc3QoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3RpbmcgRmlsZUxp
c3QiKTsKKworICAgIC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBp
cyBpbmNvbXBsZXRlLgorICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisgICAgZGVidWco
IlNraXBwaW5nIHRlc3QiKTsKKyAgICBjYWxsYmFjaygpOworICAgIHJldHVybjsKKworICAgIGV2
YWxBbmRMb2coInRlc3RfY29udGVudCA9IGZpbGVJbnB1dC5maWxlcyIpOworCisgICAgc2VsZi50
ZXN0X2RhdGEgPSB0ZXN0X2NvbnRlbnQ7CisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBzaG91
bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAiW29iamVj
dCBGaWxlTGlzdF0iKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5sZW5ndGgiLCAidGVzdF9k
YXRhLmxlbmd0aCIpOworICAgICAgICBpID0gMDsKKyAgICAgICAgZnVuY3Rpb24gZG9OZXh0KCkg
eworICAgICAgICAgICAgaWYgKGkgPj0gdGVzdF9kYXRhLmxlbmd0aCkgeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJjb21wYXJpbmcgZmlsZVsiICsgaSArICJdIik7CisgICAgICAgICAgICAgICAgY29tcGFy
ZUZpbGVzKHJlc3VsdFtpXSwgdGVzdF9kYXRhW2krK10sIGRvTmV4dCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZG9OZXh0KCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RBcnJheShjYWxsYmFjaykgeworICAgIGRlYnVnKCJUZXN0aW5nIEFycmF5Iik7CisgICAgZXZh
bEFuZExvZygidGVzdF9kYXRhID0gW10iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMF0g
PSAnZm9vJyIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxXSA9ICdiYXInIik7CisgICAg
ZXZhbEFuZExvZygidGVzdF9kYXRhWzEwXSA9IHRydWUiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0
X2RhdGFbMTFdID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMjBdID0gMTIz
Iik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzIxXSA9IDQ1NiIpOworICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YVszMF0gPSBudWxsIik7CisKKyAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBm
dW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmVU
cnVlKCJ0ZXN0X2RhdGEubGVuZ3RoID09PSByZXN1bHQubGVuZ3RoIik7CisgICAgICAgIE9iamVj
dC5rZXlzKHRlc3RfZGF0YSkuZm9yRWFjaCgKKyAgICAgICAgICAgIGZ1bmN0aW9uKGtleSkgewor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXN0X2RhdGFbIiArIGtleSArICJdIiwgInJlc3Vs
dFsiICsga2V5ICsgIl0iKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0T2JqZWN0KGNhbGxiYWNrKSB7CisgICAgZGVidWco
IlRlc3RpbmcgT2JqZWN0Iik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gW10iKTsKKyAg
ICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMF0gPSAnZm9vJyIpOworICAgIGV2YWxBbmRMb2coInRl
c3RfZGF0YVsxXSA9ICdiYXInIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydhJ10gPSB0
cnVlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydiJ10gPSBmYWxzZSIpOworICAgIGV2
YWxBbmRMb2coInRlc3RfZGF0YVsnZm9vJ10gPSAxMjMiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0
X2RhdGFbJ2JhciddID0gNDU2Iik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWycnXSA9IG51
bGwiKTsKKworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
ICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2Rh
dGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZVRydWUoImFycmF5Q29tcGFyZShPYmpl
Y3Qua2V5cyhyZXN1bHQpLnNvcnQoKSwgT2JqZWN0LmtleXModGVzdF9kYXRhKS5zb3J0KCkpIik7
CisgICAgICAgIE9iamVjdC5rZXlzKHRlc3RfZGF0YSkuZm9yRWFjaCgKKyAgICAgICAgICAgIGZ1
bmN0aW9uKGtleSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXN0X2RhdGFbIiArIEpT
T04uc3RyaW5naWZ5KGtleSkgKyAiXSIsICJyZXN1bHRbIiArIEpTT04uc3RyaW5naWZ5KGtleSkg
KyAiXSIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RUeXBlZEFycmF5KGNhbGxiYWNrKSB7CisgICAgZGVidWcoIlRlc3Rp
bmcgVHlwZWRBcnJheSIpOworCisgICAgZnVuY3Rpb24gdGVzdFR5cGVkQXJyYXlWYWx1ZShzdHJp
bmcsIGNhbGxiYWNrKSB7CisgICAgICAgIGV2YWxBbmRMb2coInZhbHVlID0gIiArIHN0cmluZyk7
CisgICAgICAgIHRlc3RfZGF0YSA9IHZhbHVlOworICAgICAgICB0ZXN0VmFsdWUodGVzdF9kYXRh
LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0Owor
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwg
Ik9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0ZXN0X2RhdGEpIik7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoInRlc3RfZGF0YS5sZW5ndGggPT09IHJlc3VsdC5sZW5ndGgiKTsKKyAg
ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXN0X2RhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YVsiICsgaSArICJdLCByZXN1bHRb
IiArIGkgKyAiXSkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZvckVhY2hX
aXRoQ2FsbGJhY2sodGVzdFR5cGVkQXJyYXlWYWx1ZSwgWworICAgICAgICAibmV3IFVpbnQ4QXJy
YXkoW10pIiwKKyAgICAgICAgIm5ldyBVaW50OEFycmF5KFswLCAxLCAyNTQsIDI1NV0pIiwKKyAg
ICAgICAgIm5ldyBVaW50MTZBcnJheShbMHgwMDAwLCAweDAwMDEsIDB4RkZGRSwgMHhGRkZGXSki
LAorICAgICAgICAibmV3IFVpbnQzMkFycmF5KFsweDAwMDAwMDAwLCAweDAwMDAwMDAxLCAweEZG
RkZGRkZFLCAweEZGRkZGRkZGXSkiLAorICAgICAgICAibmV3IEludDhBcnJheShbMCwgMSwgMjU0
LCAyNTVdKSIsCisgICAgICAgICJuZXcgSW50MTZBcnJheShbMHgwMDAwLCAweDAwMDEsIDB4RkZG
RSwgMHhGRkZGXSkiLAorICAgICAgICAibmV3IEludDMyQXJyYXkoWzB4MDAwMDAwMDAsIDB4MDAw
MDAwMDEsIDB4RkZGRkZGRkUsIDB4RkZGRkZGRkZdKSIsCisgICAgICAgICJuZXcgVWludDhDbGFt
cGVkQXJyYXkoWzAsIDEsIDI1NCwgMjU1XSkiLAorICAgICAgICAibmV3IEZsb2F0MzJBcnJheShb
LUluZmluaXR5LCAtMS41LCAtMSwgLTAuNSwgMCwgMC41LCAxLCAxLjUsIEluZmluaXR5LCBOYU5d
KSIsCisgICAgICAgICJuZXcgRmxvYXQ2NEFycmF5KFstSW5maW5pdHksIC1OdW1iZXIuTUFYX1ZB
TFVFLCAtTnVtYmVyLk1JTl9WQUxVRSwgMCwgTnVtYmVyLk1JTl9WQUxVRSwgTnVtYmVyLk1BWF9W
QUxVRSwgSW5maW5pdHksIE5hTl0pIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24g
dGVzdEJhZFR5cGVzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgdHlwZXMg
dGhhdCBjYW4ndCBiZSBjbG9uZWQ6Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgJ3JlYWR3cml0ZScp
Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIk90aGVyIEphdmFTY3JpcHQgb2JqZWN0IHR5cGVzOiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChuZXcgRXJyb3IsICdrZXknKSIsICJE
T01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5wdXQobmV3IEZ1bmN0aW9uLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xP
TkVfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIk90aGVyIGhvc3Qgb2JqZWN0
IHR5cGVzOiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChzZWxmLCAn
a2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUucHV0KGRvY3VtZW50LCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRB
VEFfQ0xPTkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KGRv
Y3VtZW50LmJvZHksICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFu
c2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13
aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mMDlkNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJz
aW9uLWNyb3NzLWZyYW1lLmpzCkBAIC0wLDAgKzEsNDYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCit2YXIgdHJhbnNhY3Rpb247
Cit2YXIgc3RvcmU7Cit2YXIgZGI7Cit2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJpZnJhbWUiKVswXS5jb250ZW50RG9jdW1lbnQuYm9keTsKKworZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcg
cmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMgZmluaXNo
ZWQuIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBjbGljayk7CitmdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOworfQor
CitmdW5jdGlvbiBjbGljaygpIHsKKyAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0OworICAgIHZhciBw
ZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOworICAgIHBlbmRpbmdU
cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcGVuZGlu
Z1RyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBwZW5k
aW5nVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbXBsZXRlQ2FsbGJhY2s7CisgICAgdmFyIGV2
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAgICBldmVudC5pbml0
TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMCwg
MCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgIGJv
ZHkuZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJykiKTsKKyAg
ICBzaG91bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmluZWQiKTsKKyAgICBib2R5Lm9uY2xpY2sg
PSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGRlYnVnKCJTdGFydCBy
ZS1lbnRyYW50IEpTIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CisgICAg
ZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7Cit9CisKKworZnVuY3Rpb24gY29tcGxldGVDYWxs
YmFjaygpCit7CisgICAgZGVidWcoIlBlbmRpbmcgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24u
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
Y29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmIxOTc2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lv
bi5qcwpAQCAtMCwwICsxLDQ3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwordmFyIHRyYW5zYWN0aW9uOwordmFyIHN0b3JlOwor
dmFyIGRiOwordmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdOworCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBu
b3QgY29tcGxldGVkIGR1cmluZyByZWN1cnNpdmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIGlzIGZp
bmlzaGVkLiIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgY2xpY2spOworZnVu
Y3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnLCBudWxsKTsK
K30KKworZnVuY3Rpb24gY2xpY2soKQoreworICAgIGJvZHkub25jbGljayA9IHRlc3Q7CisgICAg
dmFyIHBlbmRpbmdUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInBlbmRpbmdUcmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CisgICAgcGVu
ZGluZ1RyYW5zYWN0aW9uLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjb21wbGV0ZUNhbGxiYWNrOworICAg
IHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7CisgICAgZXZl
bnQuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcsIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsK
KyAgICBib2R5LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gcGVuZGluZ1RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScp
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPT0gdW5kZWZpbmVkIik7CisgICAgYm9keS5v
bmNsaWNrID0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBkZWJ1Zygi
U3RhcnQgcmUtZW50cmFudCBKUyIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKSIp
OworICAgIGRlYnVnKCJFbmQgcmUtZW50cmFudCBKUyIpOworfQorCisKK2Z1bmN0aW9uIGNvbXBs
ZXRlQ2FsbGJhY2soKQoreworICAgIHRlc3RQYXNzZWQoIlBlbmRpbmcgdHJhbnNhY3Rpb24gY29t
cGxldGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gtaW4tdGFza3Mu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
Y3Jhc2gtaW4tdGFza3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYw
ZTlkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1pbi10YXNrcy5qcwpAQCAtMCwwICsxLDE3IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL3dlYmtpdC5vcmcvYi8x
MDIyODMiKTsKKwordGVzdCgpOworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHNldERCTmFtZUZyb21QYXRoKCk7CisKKyAgICBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAgZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oZGJuYW1lLCAzKSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tb3JkZXJp
bmcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tb3JkZXJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiZWNj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1vcmRlcmluZy5qcwpAQCAtMCwwICsxLDU3IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlZlcmlmeSBJbmRleGVkIERCIHRyYW5zYWN0aW9ucyBhcmUgb3JkZXJlZCBwZXIgc3Bl
YyIpOworCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgb25PcGVuKTsKKworZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKK30KKworZnVuY3Rpb24gb25PcGVu
KGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ3JlYXRlIGluIG9y
ZGVyIHR4MSwgdHgyIik7CisgICAgZXZhbEFuZExvZygidHgxID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJywgJ3JlYWR3cml0ZScpIik7CisgICAgZXZhbEFuZExvZygidHgyID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJV
c2UgaW4gb3JkZXIgdHgyLCB0eDEiKTsKKyAgICBldmFsQW5kTG9nKCJ0eDIub2JqZWN0U3RvcmUo
J3N0b3JlJykuZ2V0KDApIik7CisgICAgZXZhbEFuZExvZygidHgxLm9iamVjdFN0b3JlKCdzdG9y
ZScpLmdldCgwKSIpOworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcmRlciA9IFtd
Iik7CisKKyAgICB0eDEub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBkZWJ1
ZygidHgxIGNvbXBsZXRlIik7CisgICAgICAgIG9yZGVyLnB1c2goMSk7CisgICAgICAgIGlmIChv
cmRlci5sZW5ndGggPT09IDIpIGRvbmUoKTsKKyAgICB9OworCisgICAgdHgyLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgZGVidWcoInR4MSBjb21wbGV0ZSIpOworICAgICAg
ICBvcmRlci5wdXNoKDIpOworICAgICAgICBpZiAob3JkZXIubGVuZ3RoID09PSAyKSBkb25lKCk7
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGRvbmUoKSB7CisgICAgICAgIHByZWFtYmxlKCk7Cisg
ICAgICAgIC8vIEluZGV4ZWREQiBTcGVjOgorICAgICAgICAvLyBodHRwczovL2R2Y3MudzMub3Jn
L2hnL0luZGV4ZWREQi9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCN0cmFuc2FjdGlvbi1jb25j
ZXB0CisgICAgICAgIC8vCisgICAgICAgIC8vIElmIG11bHRpcGxlICJyZWFkd3JpdGUiIHRyYW5z
YWN0aW9ucyBhcmUgYXR0ZW1wdGluZyB0bworICAgICAgICAvLyBhY2Nlc3MgdGhlIHNhbWUgb2Jq
ZWN0IHN0b3JlIChpLmUuIGlmIHRoZXkgaGF2ZSBvdmVybGFwcGluZworICAgICAgICAvLyBzY29w
ZSksIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHdhcyBjcmVhdGVkIGZpcnN0IG11c3QgYmUgdGhlCisg
ICAgICAgIC8vIHRyYW5zYWN0aW9uIHdoaWNoIGdldHMgYWNjZXNzIHRvIHRoZSBvYmplY3Qgc3Rv
cmUgZmlyc3QuCisgICAgICAgIC8vCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1
YWwob3JkZXIsIFsgMSwgMiBdKSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tb3ZlcmxhcHBpbmcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvdHJhbnNhY3Rpb24tb3ZlcmxhcHBpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTU0MjEwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1vdmVybGFwcGluZy5qcwpAQCAt
MCwwICsxLDc1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkNoZWNrIHRoYXQgdHJhbnNhY3Rpb25zIHRo
YXQgbWF5IG92ZXJsYXAgY29tcGxldGUgcHJvcGVybHkuIik7CisKK2luZGV4ZWREQlRlc3QocHJl
cGFyZURhdGFiYXNlLCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7CisKK2Z1bmN0aW9uIHByZXBh
cmVEYXRhYmFzZShldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd2
YWx1ZScsICdrZXknKSIpOworfQorCitmdW5jdGlvbiBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyhl
dnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rp
b24xID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKKyAgICB0cmFuc2Fj
dGlvbjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9u
MS5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOworICAgIGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7CisgICAg
dHJhbnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFu
c2FjdGlvbjIub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAgIGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSAwIik7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24yR2V0U3VjY2VzcyA9IDAiKTsKKworICAgIGZ1bmN0aW9uIGRvVHJhbnNhY3Rpb24x
R2V0KCkgeworICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNpbmNlIGV4ZWN1dGlvbiBvcmRl
ciBpcyBub3QgZGV0ZXJtaW5pc3RpYy4KKyAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMS5v
YmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICsrdHJhbnNhY3Rpb24xR2V0U3VjY2VzczsKKyAgICAg
ICAgICAgIGlmICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcyAmJiB0cmFuc2FjdGlvbjFHZXRTdWNj
ZXNzIDwgMTApCisgICAgICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjFHZXQoKTsKKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb1RyYW5zYWN0aW9uMkdldCgpIHsKKyAgICAgICAg
Ly8gTk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24gb3JkZXIgaXMgbm90IGRldGVybWlu
aXN0aWMuCisgICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ3N0b3Jl
JykuZ2V0KCdrZXknKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICArK3RyYW5zYWN0aW9uMkdldFN1Y2Nlc3M7CisgICAgICAgICAgICBpZiAoIXRyYW5z
YWN0aW9uMUdldFN1Y2Nlc3MgJiYgdHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA8IDEwKQorICAgICAg
ICAgICAgICAgIGRvVHJhbnNhY3Rpb24yR2V0KCk7CisgICAgICAgIH07CisgICAgfQorCisgICAg
ZG9UcmFuc2FjdGlvbjFHZXQoKTsKKyAgICBkb1RyYW5zYWN0aW9uMkdldCgpOworfQorCit0cmFu
c2FjdGlvbkNvbXBsZXRpb25Db3VudCA9IDA7CitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxl
dGUoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisKKyAgICArK3RyYW5zYWN0aW9uQ29tcGxl
dGlvbkNvdW50OworICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8IDIpIHsKKyAg
ICAgICAgZGVidWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0aW5nLi4u
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZU5vblplcm8oInRyYW5z
YWN0aW9uMUdldFN1Y2Nlc3MiKTsKKyAgICBzaG91bGRCZU5vblplcm8oInRyYW5zYWN0aW9uMkdl
dFN1Y2Nlc3MiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy92ZXJzaW9uLWNoYW5nZS1ldmVudC1iYXNpYy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1ldmVudC1iYXNpYy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2QxZTk5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdl
LWV2ZW50LWJhc2ljLmpzCkBAIC0wLDAgKzEsNDggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4iOworfQorCit2YXIg
cmVxdWVzdDEgPSBpbmRleGVkREIub3BlbigidmNlYjEiKTsKK3JlcXVlc3QxLm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBsb2coIkZpcnN0IHJlcXVlc3Q6ICIgKyBlLm9sZFZl
cnNpb24gKyAiICIgKyBlLm5ld1ZlcnNpb24pOworfQorCit2YXIgcmVxdWVzdDIgPSBpbmRleGVk
REIub3BlbigidmNlYjIiLCAxKTsKK3JlcXVlc3QyLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGUpIHsKKyAgICBsb2coIlNlY29uZCByZXF1ZXN0OiAiICsgZS5vbGRWZXJzaW9uICsgIiAiICsg
ZS5uZXdWZXJzaW9uKTsKK30KKwordmFyIHJlcXVlc3QzID0gaW5kZXhlZERCLm9wZW4oInZjZWIz
IiwgMik7CityZXF1ZXN0My5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CisgICAgbG9n
KCJUaGlyZCByZXF1ZXN0OiAiICsgZS5vbGRWZXJzaW9uICsgIiAiICsgZS5uZXdWZXJzaW9uKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorCit0cnkgeworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oInZjZWI0
IiwgMCk7Cit9IGNhdGNoIChlKSB7CisgICAgbG9nKCIwIHZlcnNpb246ICIgKyBlKTsKK30KKwor
dHJ5IHsKKyAgICB2YXIgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJ2Y2ViNSIsIC0xKTsKK30g
Y2F0Y2ggKGUpIHsKKyAgICBsb2coIk5lZ2F0aXZlIHZlcnNpb246ICIgKyBlKTsKK30KKwordHJ5
IHsKKyAgICB2YXIgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJ2Y2ViNiIsICJzdHJpbmciKTsK
K30gY2F0Y2ggKGUpIHsKKyAgICBsb2coIlN0cmluZyB2ZXJzaW9uOiAiICsgZSk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1j
aGFuZ2UtZXZlbnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtZXZlbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjEzMzM0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1ldmVudC5qcwpAQCAtMCwwICsxLDM2IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlJlZ3Jlc3Npb24gdGVzdCBmb3IgV0sxMzY1ODMgLSBlbnN1cmUgdGhl
IHZlcnNpb25jaGFuZ2UgZXZlbnQgaGFzIHRoZSBwcm9wZXIgbmFtZSIpOworCitpbmRleGVkREJU
ZXN0KHByZXBhcmVEYXRhYmFzZSwgdXBncmFkZURhdGFiYXNlKTsKK2Z1bmN0aW9uIHByZXBhcmVE
YXRhYmFzZShldnQpCit7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxB
bmRMb2coImRiLm9udmVyc2lvbmNoYW5nZSA9IG9uVmVyc2lvbkNoYW5nZSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7Cit9CisKK2Z1
bmN0aW9uIHVwZ3JhZGVEYXRhYmFzZShldnQpCit7CisgICAgZGIgPSBldnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIxIik7CisgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5v
bnZlcnNpb25jaGFuZ2UgPSBvblZlcnNpb25DaGFuZ2UiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlz
aFRlc3Q7Cit9CisKK2Z1bmN0aW9uIG9uVmVyc2lvbkNoYW5nZShldnQpCit7CisgICAgcHJlYW1i
bGUoZXZ0KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUiLCAidmVyc2lv
bmNoYW5nZSIpOworICAgIGRiLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoZXZ0
KQoreworICAgIGZpbmlzaEpTVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCmluZGV4IDNhZGIzMTcuLjYyZWJhZTUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xv
bmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNs
b25lLmh0bWwKQEAgLTUsNTUwICs1LDYgQEAKIDwvaGVhZD4KIDxib2R5PgogPGlucHV0IHR5cGU9
ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11bHRpcGxlPjwvaW5wdXQ+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBzdHJ1Y3R1cmVkIGNsb25lIHBlcm11dGF0aW9ucyBpbiBJbmRleGVkREIu
IEZpbGUvRmlsZUxpc3QgdGVzdHMgcmVxdWlyZSBEdW1wUmVuZGVyVHJlZS4iKTsKLQotaWYgKHNl
bGYuZXZlbnRTZW5kZXIpIHsKLSAgICB2YXIgZmlsZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImZpbGVJbnB1dCIpOwotICAgIHZhciBmaWxlUmVjdCA9IGZpbGVJbnB1dC5nZXRDbGll
bnRSZWN0cygpWzBdOwotICAgIHZhciB0YXJnZXRYID0gZmlsZVJlY3QubGVmdCArIGZpbGVSZWN0
LndpZHRoIC8gMjsKLSAgICB2YXIgdGFyZ2V0WSA9IGZpbGVSZWN0LnRvcCArIGZpbGVSZWN0Lmhl
aWdodCAvIDI7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKFsncmVzb3VyY2Vz
L3Rlc3QtZGF0YS5odG1sJywgJ3Jlc291cmNlcy90ZXN0LWRhdGEudHh0J10pOwotICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldFgsIHRhcmdldFkpOwotICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKLX0KLQotaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHN0YXJ0VGVzdHMp
OwotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKLSAgICBkZWJ1ZygiVGhpcyBpbmRleCBpcyBub3QgdXNlZCwgYnV0IGV2YWx1
YXRpbmcga2V5IHBhdGggb24gZWFjaCBwdXQoKSBjYWxsIHdpbGwgZXhlcmNpc2UgKGRlKXNlcmlh
bGl6YXRpb246Iik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFt
ZScsICdkdW1teUtleVBhdGgnKSIpOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3RzKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICB2YXIgdGVz
dHNfdG9fcnVuID0gWwotICAgICAgICB0ZXN0VW5kZWZpbmVkLAotICAgICAgICB0ZXN0TnVsbCwK
LSAgICAgICAgdGVzdEJvb2xlYW4sCi0gICAgICAgIHRlc3ROdW1iZXIsCi0gICAgICAgIHRlc3RT
dHJpbmcsCi0gICAgICAgIHRlc3RCb29sZWFuT2JqZWN0LAotICAgICAgICB0ZXN0TnVtYmVyT2Jq
ZWN0LAotICAgICAgICB0ZXN0U3RyaW5nT2JqZWN0LAotICAgICAgICB0ZXN0RGF0ZU9iamVjdCwK
LSAgICAgICAgdGVzdFJlZ0V4cE9iamVjdCwKLSAgICAgICAgdGVzdEltYWdlRGF0YSwKLSAgICAg
ICAgdGVzdEJsb2IsCi0gICAgICAgIHRlc3RGaWxlLAotICAgICAgICB0ZXN0RmlsZUxpc3QsCi0g
ICAgICAgIHRlc3RBcnJheSwKLSAgICAgICAgdGVzdE9iamVjdCwKLSAgICAgICAgdGVzdFR5cGVk
QXJyYXkKLSAgICBdOwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgaWYgKHRlc3RzX3RvX3J1bi5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZh
ciB0ZXN0ID0gdGVzdHNfdG9fcnVuLnNoaWZ0KCk7Ci0gICAgICAgICAgICB0ZXN0KG5leHRUZXN0
KTsgLy8gV2hlbiBkb25lLCBjYWxsIHRoaXMgYWdhaW4uCi0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICB0ZXN0QmFkVHlwZXMoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBuZXh0VGVzdCgp
OwotfQotCi1mdW5jdGlvbiBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RGdW5jdGlvbiwgdmFsdWVz
LCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBuZXh0VmFsdWUoKSB7Ci0gICAgICAgIGlmICh2
YWx1ZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXN0RnVuY3Rpb24odmFsdWVzLnNoaWZ0KCks
IG5leHRWYWx1ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgbmV4dFZhbHVlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RW
YWx1ZSh2YWx1ZSwgY2FsbGJhY2spCi17Ci0gICAgLy8gT25lIHRyYW5zYWN0aW9uIHBlciB0ZXN0
LCBzaW5jZSBzb21lIHRlc3RzIHJlcXVpcmUgYXN5bmNocm9ub3VzCi0gICAgLy8gb3BlcmF0aW9u
cyB0byB2ZXJpZnkgdGhlIHJlc3VsdCAoZS5nLiB2aWEgRmlsZVJlYWRlcikKLSAgICBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCAncmVhZHdyaXRl
JykiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAg
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0KLSAgICBzZWxmLnZhbHVlID0gdmFsdWU7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLnB1dCh2YWx1ZSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJl
cXVlc3QucmVzdWx0KTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi0vLyBJZGVudGl0eSB0ZXN0
aW5nLCBzZW5zaXRpdmUgdG8gTmFOIGFuZCAtMAotZnVuY3Rpb24gaXMoeCwgeSkgewotICAgIGlm
ICh4ID09PSB5KSB7Ci0gICAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTsK
LSAgICB9Ci0gICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKLX0KLQotZnVuY3Rpb24gYXJy
YXlDb21wYXJlKGEsIGIpIHsKLSAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXMoYVtpXSwgYltpXSkpIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFByaW1pdGl2ZVZhbHVlKHN0cmluZywgY2FsbGJhY2spCi17Ci0gICAgZGVidWco
IlRlc3Rpbmc6ICIgKyBzdHJpbmcpOwotICAgIHZhciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIg
KyBzdHJpbmcgKyAiKSIpOwotICAgIHRlc3RfZGF0YSA9IHZhbHVlOwotICAgIHRlc3RWYWx1ZSh0
ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3Vs
dDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpcyh0ZXN0X2RhdGEsIHJlc3VsdCkiKTsKLSAgICAg
ICAgZGVidWcoIiIpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlv
biB0ZXN0T2JqZWN0V2l0aFZhbHVlKHN0cmluZywgY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRl
c3Rpbmc6ICIgKyBzdHJpbmcpOwotICAgIHZhciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIgKyBz
dHJpbmcgKyAiKSIpOwotICAgIHRlc3RfZGF0YSA9IHZhbHVlOwotICAgIHRlc3RWYWx1ZSh0ZXN0
X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgcmVzdWx0IiwgIm9iamVjdCIp
OwotICAgICAgICBzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3Vs
dCkiLCAiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRlc3RfZGF0YSkiKTsKLSAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICBzaG91bGRC
ZSgicmVzdWx0LnRvU3RyaW5nKCkiLCAidGVzdF9kYXRhLnRvU3RyaW5nKCkiKTsKLSAgICAgICAg
c2hvdWxkQmVUcnVlKCJpcyh0ZXN0X2RhdGEudmFsdWVPZigpLCByZXN1bHQudmFsdWVPZigpKSIp
OwotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RVbmRlZmluZWQoY2FsbGJhY2spCi17Ci0gICAgdGVzdFByaW1pdGl2ZVZh
bHVlKCJ1bmRlZmluZWQiLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROdWxsKGNhbGxi
YWNrKQotewotICAgIHRlc3RQcmltaXRpdmVWYWx1ZSgibnVsbCIsIGNhbGxiYWNrKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdEJvb2xlYW4oY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgYm9v
bGVhbiBwcmltaXRpdmVzIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJh
Y2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbInRydWUiLCAiZmFsc2UiXSwgY2FsbGJhY2spOwotfQot
Ci1mdW5jdGlvbiB0ZXN0Qm9vbGVhbk9iamVjdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVz
dGluZyBCb29sZWFuIG9iamVjdHMiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhD
YWxsYmFjayh0ZXN0T2JqZWN0V2l0aFZhbHVlLCBbCi0gICAgICAgICJuZXcgQm9vbGVhbih0cnVl
KSIsCi0gICAgICAgICJuZXcgQm9vbGVhbihmYWxzZSkiCi0gICAgXSwgY2FsbGJhY2spOwotfQot
Ci1mdW5jdGlvbiB0ZXN0U3RyaW5nKGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIHN0
cmluZyBwcmltaXRpdmVzIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJh
Y2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbCi0gICAgICAgICInJyIsCi0gICAgICAgICIndGhpcyBp
cyBhIHNhbXBsZSBzdHJpbmcnIiwKLSAgICAgICAgIidudWxsKFxcMCknIgotICAgIF0sIGNhbGxi
YWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdFN0cmluZ09iamVjdChjYWxsYmFjaykKLXsKLSAgICBk
ZWJ1ZygiVGVzdGluZyBTdHJpbmcgb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmb3JF
YWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAgICAgICAgIm5ldyBTdHJp
bmcoKSIsCi0gICAgICAgICJuZXcgU3RyaW5nKCd0aGlzIGlzIGEgc2FtcGxlIHN0cmluZycpIiwK
LSAgICAgICAgIm5ldyBTdHJpbmcoJ251bGwoXFwwKScpIgotICAgIF0sIGNhbGxiYWNrKTsKLX0K
LQotZnVuY3Rpb24gdGVzdE51bWJlcihjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBu
dW1iZXIgcHJpbWl0aXZlcyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmb3JFYWNoV2l0aENhbGxi
YWNrKHRlc3RQcmltaXRpdmVWYWx1ZSwgWwotICAgICAgICAiTmFOIiwKLSAgICAgICAgIi1JbmZp
bml0eSIsCi0gICAgICAgICItTnVtYmVyLk1BWF9WQUxVRSIsCi0gICAgICAgICItMHhmZmZmZmZm
ZiIsCi0gICAgICAgICItMHg4MDAwMDAwMCIsCi0gICAgICAgICItMHg3ZmZmZmZmZiIsCi0gICAg
ICAgICItMSIsCi0gICAgICAgICItTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgICAgICItMCIsCi0g
ICAgICAgICIwIiwKLSAgICAgICAgIjEiLAotICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCi0g
ICAgICAgICIweDdmZmZmZmZmIiwKLSAgICAgICAgIjB4ODAwMDAwMDAiLAotICAgICAgICAiMHhm
ZmZmZmZmZiIsCi0gICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAgICAgIkluZmluaXR5
IgotICAgIF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdE51bWJlck9iamVjdChjYWxs
YmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBOdW1iZXIgb2JqZWN0cyIpOwotICAgIGRlYnVn
KCIiKTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAg
ICAgICAgIm5ldyBOdW1iZXIoTmFOKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKC1JbmZpbml0eSki
LAotICAgICAgICAibmV3IE51bWJlcigtTnVtYmVyLk1BWF9WQUxVRSkiLAotICAgICAgICAibmV3
IE51bWJlcigtTnVtYmVyLk1JTl9WQUxVRSkiLAotICAgICAgICAibmV3IE51bWJlcigtMCkiLAot
ICAgICAgICAibmV3IE51bWJlcigwKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKE51bWJlci5NSU5f
VkFMVUUpIiwKLSAgICAgICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1BWF9WQUxVRSkiLAotICAgICAg
ICAibmV3IE51bWJlcihJbmZpbml0eSkiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlv
biB0ZXN0RGF0ZU9iamVjdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBEYXRlIG9i
amVjdHMiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2Jq
ZWN0V2l0aFZhbHVlLCBbCi0gICAgICAgICJuZXcgRGF0ZSgtMWUxMykiLAotICAgICAgICAibmV3
IERhdGUoLTFlMTIpIiwKLSAgICAgICAgIm5ldyBEYXRlKC0xZTkpIiwKLSAgICAgICAgIm5ldyBE
YXRlKC0xZTYpIiwKLSAgICAgICAgIm5ldyBEYXRlKC0xZTMpIiwKLSAgICAgICAgIm5ldyBEYXRl
KDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMykiLAotICAgICAgICAibmV3IERhdGUoMWU2KSIs
Ci0gICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMTIpIiwKLSAg
ICAgICAgIm5ldyBEYXRlKDFlMTMpIgotICAgIF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24g
dGVzdFJlZ0V4cE9iamVjdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBSZWdFeHAg
b2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHN0cmlu
ZywgY2FsbGJhY2spIHsKLSAgICAgICAgZGVidWcoIlRlc3RpbmcgUmVnRXhwOiAiICsgc3RyaW5n
KTsKLSAgICAgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIpIik7
Ci0gICAgICAgIHRlc3RfZGF0YSA9IHZhbHVlOwotICAgICAgICB0ZXN0VmFsdWUodGVzdF9kYXRh
LCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0Owot
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwocmVzdWx0KSIsICJbb2JqZWN0IFJlZ0V4cF0iKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOwotICAgICAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UmVnRXhwLCBbCi0gICAgICAgICJuZXcgUmVn
RXhwKCkiLAotICAgICAgICAiL2FiYy8iLAotICAgICAgICAiL2FiYy9nIiwKLSAgICAgICAgIi9h
YmMvaSIsCi0gICAgICAgICIvYWJjL2dpIiwKLSAgICAgICAgIi9hYmMvbSIsCi0gICAgICAgICIv
YWJjL21nIiwKLSAgICAgICAgIi9hYmMvbWkiLAotICAgICAgICAiL2FiYy9tZ2kiCi0gICAgXSwg
Y2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0SW1hZ2VEYXRhKGNhbGxiYWNrKQotewotICAg
IGRlYnVnKCJUZXN0aW5nIEltYWdlRGF0YSIpOwotICAgIGV2YWxBbmRMb2coImNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpIik7Ci0gICAgZXZhbEFuZExvZygiY2FudmFz
LndpZHRoID0gOCIpOwotICAgIGV2YWxBbmRMb2coImNhbnZhcy5oZWlnaHQgPSA4Iik7Ci0gICAg
ZXZhbEFuZExvZygidGVzdF9kYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VE
YXRhKDAsIDAsIDgsIDgpIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7
Ci0gICAgICAgIHRlc3RfZGF0YS5kYXRhW2ldID0gaTsKLSAgICB9Ci0KLSAgICB0ZXN0VmFsdWUo
dGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1
bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
cmVzdWx0KSIsICJbb2JqZWN0IEltYWdlRGF0YV0iKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dC53aWR0aCIsICJ0ZXN0X2RhdGEud2lkdGgiKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5o
ZWlnaHQiLCAidGVzdF9kYXRhLmhlaWdodCIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LmRh
dGEubGVuZ3RoIiwgInRlc3RfZGF0YS5kYXRhLmxlbmd0aCIpOwotICAgICAgICBpZiAoYXJyYXlD
b21wYXJlKHRlc3RfZGF0YS5kYXRhLCByZXN1bHQuZGF0YSkpIHsKLSAgICAgICAgICAgIHRlc3RQ
YXNzZWQoInJlc3VsdCBkYXRhIG1hdGNoZXMiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRlc3RGYWlsZWQoInJlc3VsdCBkYXRhIGRvZXNuJ3QgbWF0Y2giKTsKLSAgICAgICAgfQot
ICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiByZWFkQmxvYkFzVGV4
dChibG9iLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsK
LSAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZSkgewotICAgICAgICBpZiAoZS50YXJnZXQu
cmVhZHlTdGF0ZSA9PT0gRmlsZVJlYWRlci5ET05FKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhl
LnRhcmdldC5yZXN1bHQpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICByZWFkZXIub25lcnJvciA9
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgcmVhZGluZyBibG9iIGFz
IHRleHQ6ICIgKyBlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLSAgICByZWFk
ZXIucmVhZEFzVGV4dChibG9iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tCbG9iQ29udGVudHMoYmxv
YiwgZXhwZWN0ZWQsIGNhbGxiYWNrKQotewotICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGZ1bmN0
aW9uKHRleHQpIHsKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dDsKLSAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ0ZXh0IiwgZXhwZWN0ZWQpOwotICAgICAgICBjYWxsYmFjaygpOwotICAg
IH0pOwotfQotCi1mdW5jdGlvbiBjb21wYXJlQmxvYnMoYmxvYjEsIGJsb2IyLCBjYWxsYmFjaykK
LXsKLSAgICByZWFkQmxvYkFzVGV4dChibG9iMSwgZnVuY3Rpb24odGV4dDEpIHsKLSAgICAgICAg
cmVhZEJsb2JBc1RleHQoYmxvYjIsIGZ1bmN0aW9uKHRleHQyKSB7Ci0gICAgICAgICAgICBzZWxm
LnRleHQxID0gdGV4dDE7Ci0gICAgICAgICAgICBzZWxmLnRleHQyID0gdGV4dDI7Ci0gICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyIiwgdGV4dDEpOwotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCbG9i
KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIEJsb2IiKTsKLQotICAgIC8vIEZJWE1F
OiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotICAgIC8v
IGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCi0gICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsKLSAg
ICBjYWxsYmFjaygpOwotICAgIHJldHVybjsKLQotICAgIHNob3VsZEJlVHJ1ZSgiRmlsZVJlYWRl
ciAhPSBudWxsIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0
ZXN0LiBUaGlzIGlzIG9ubHkgYSB0ZXN0LiciKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEg
PSBuZXcgQmxvYihbdGVzdF9jb250ZW50XSkiKTsKLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBm
dW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAg
IHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJb
b2JqZWN0IEJsb2JdIik7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHQuc2l6ZSIsICJ0ZXN0X2Rh
dGEuc2l6ZSIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LnR5cGUiLCAidGVzdF9kYXRhLnR5
cGUiKTsKLSAgICAgICAgY2hlY2tCbG9iQ29udGVudHMocmVzdWx0LCB0ZXN0X2NvbnRlbnQsIGNh
bGxiYWNrKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gY29tcGFyZUZpbGVzKGZpbGUxLCBmaWxl
MiwgY2FsbGJhY2spCi17Ci0gICAgc2VsZi5maWxlMSA9IGZpbGUxOwotICAgIHNlbGYuZmlsZTIg
PSBmaWxlMjsKLSAgICBzaG91bGRCZVRydWUoImZpbGUxICE9PSBmaWxlMiIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZpbGUxKSIs
ICJbb2JqZWN0IEZpbGVdIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTIpIiwgIltvYmplY3QgRmlsZV0iKTsKLSAgICBkZWJ1
ZygiZmlsZTEuc2l6ZTogIiArIGZpbGUxLnNpemUpOwotICAgIHNob3VsZEJlKCJmaWxlMS5zaXpl
IiwgImZpbGUyLnNpemUiKTsKLSAgICBkZWJ1ZygiZmlsZTEudHlwZTogIiArIGZpbGUxLnR5cGUp
OwotICAgIHNob3VsZEJlKCJmaWxlMS50eXBlIiwgImZpbGUyLnR5cGUiKTsKLSAgICBkZWJ1Zygi
ZmlsZTEubmFtZTogIiArIGZpbGUxLm5hbWUpOwotICAgIHNob3VsZEJlKCJmaWxlMS5uYW1lIiwg
ImZpbGUyLm5hbWUiKTsKLSAgICBzaG91bGRCZSgiU3RyaW5nKGZpbGUxLmxhc3RNb2RpZmllZERh
dGUpIiwgIlN0cmluZyhmaWxlMi5sYXN0TW9kaWZpZWREYXRlKSIpOwotICAgIGlmIChjYWxsYmFj
aykgewotICAgICAgICBjb21wYXJlQmxvYnMoZmlsZTEsIGZpbGUyLCBjYWxsYmFjayk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiB0ZXN0RmlsZShjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGlu
ZyBGaWxlIik7Ci0KLSAgICAvLyBGSVhNRTogQmxvYiwgRmlsZSwgYW5kIEZpbGVMaXN0IHN1cHBv
cnQgaXMgaW5jb21wbGV0ZS4KLSAgICAvLyBodHRwOi8vY3JidWcuY29tLzEwODAxMgotICAgIGRl
YnVnKCJTa2lwcGluZyB0ZXN0Iik7Ci0gICAgY2FsbGJhY2soKTsKLSAgICByZXR1cm47Ci0KLSAg
ICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSBmaWxlSW5wdXQuZmlsZXNbMF0iKTsKLQotICAg
IHNlbGYudGVzdF9kYXRhID0gdGVzdF9jb250ZW50OwotICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEs
IGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKLSAgICAg
ICAgY29tcGFyZUZpbGVzKHJlc3VsdCwgdGVzdF9kYXRhLCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19
Ci0KLQotZnVuY3Rpb24gdGVzdEZpbGVMaXN0KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0
aW5nIEZpbGVMaXN0Iik7Ci0KLSAgICAvLyBGSVhNRTogQmxvYiwgRmlsZSwgYW5kIEZpbGVMaXN0
IHN1cHBvcnQgaXMgaW5jb21wbGV0ZS4KLSAgICAvLyBodHRwOi8vY3JidWcuY29tLzEwODAxMgot
ICAgIGRlYnVnKCJTa2lwcGluZyB0ZXN0Iik7Ci0gICAgY2FsbGJhY2soKTsKLSAgICByZXR1cm47
Ci0KLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSBmaWxlSW5wdXQuZmlsZXMiKTsKLQot
ICAgIHNlbGYudGVzdF9kYXRhID0gdGVzdF9jb250ZW50OwotICAgIHRlc3RWYWx1ZSh0ZXN0X2Rh
dGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKLSAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQp
IiwgIltvYmplY3QgRmlsZUxpc3RdIik7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHQubGVuZ3Ro
IiwgInRlc3RfZGF0YS5sZW5ndGgiKTsKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIGZ1bmN0aW9u
IGRvTmV4dCgpIHsKLSAgICAgICAgICAgIGlmIChpID49IHRlc3RfZGF0YS5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBkZWJ1ZygiY29tcGFyaW5nIGZpbGVbIiArIGkgKyAiXSIpOwotICAgICAgICAgICAg
ICAgIGNvbXBhcmVGaWxlcyhyZXN1bHRbaV0sIHRlc3RfZGF0YVtpKytdLCBkb05leHQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGRvTmV4dCgpOwotICAgIH0pOwotfQotCi1m
dW5jdGlvbiB0ZXN0QXJyYXkoY2FsbGJhY2spIHsKLSAgICBkZWJ1ZygiVGVzdGluZyBBcnJheSIp
OwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YSA9IFtdIik7Ci0gICAgZXZhbEFuZExvZygidGVz
dF9kYXRhWzBdID0gJ2ZvbyciKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMV0gPSAnYmFy
JyIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxMF0gPSB0cnVlIik7Ci0gICAgZXZhbEFu
ZExvZygidGVzdF9kYXRhWzExXSA9IGZhbHNlIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRh
WzIwXSA9IDEyMyIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsyMV0gPSA0NTYiKTsKLSAg
ICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMzBdID0gbnVsbCIpOwotCi0gICAgdGVzdFZhbHVlKHRl
c3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0
OwotICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAg
IHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhLmxlbmd0aCA9PT0gcmVzdWx0Lmxlbmd0aCIpOwotICAg
ICAgICBPYmplY3Qua2V5cyh0ZXN0X2RhdGEpLmZvckVhY2goCi0gICAgICAgICAgICBmdW5jdGlv
bihrZXkpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgidGVzdF9kYXRhWyIgKyBrZXkgKyAi
XSIsICJyZXN1bHRbIiArIGtleSArICJdIik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgY2Fs
bGJhY2soKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdE9iamVjdChjYWxsYmFjaykgewot
ICAgIGRlYnVnKCJUZXN0aW5nIE9iamVjdCIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YSA9
IFtdIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzBdID0gJ2ZvbyciKTsKLSAgICBldmFs
QW5kTG9nKCJ0ZXN0X2RhdGFbMV0gPSAnYmFyJyIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0
YVsnYSddID0gdHJ1ZSIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYiddID0gZmFsc2Ui
KTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2ZvbyddID0gMTIzIik7Ci0gICAgZXZhbEFu
ZExvZygidGVzdF9kYXRhWydiYXInXSA9IDQ1NiIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0
YVsnJ10gPSBudWxsIik7Ci0KLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1
bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1
ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJhcnJheUNv
bXBhcmUoT2JqZWN0LmtleXMocmVzdWx0KS5zb3J0KCksIE9iamVjdC5rZXlzKHRlc3RfZGF0YSku
c29ydCgpKSIpOwotICAgICAgICBPYmplY3Qua2V5cyh0ZXN0X2RhdGEpLmZvckVhY2goCi0gICAg
ICAgICAgICBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgidGVzdF9k
YXRhWyIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIl0iLCAicmVzdWx0WyIgKyBKU09OLnN0cmlu
Z2lmeShrZXkpICsgIl0iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjaygpOwot
ICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0VHlwZWRBcnJheShjYWxsYmFjaykgewotICAgIGRl
YnVnKCJUZXN0aW5nIFR5cGVkQXJyYXkiKTsKLQotICAgIGZ1bmN0aW9uIHRlc3RUeXBlZEFycmF5
VmFsdWUoc3RyaW5nLCBjYWxsYmFjaykgewotICAgICAgICBldmFsQW5kTG9nKCJ2YWx1ZSA9ICIg
KyBzdHJpbmcpOwotICAgICAgICB0ZXN0X2RhdGEgPSB2YWx1ZTsKLSAgICAgICAgdGVzdFZhbHVl
KHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9
IHJlc3VsdDsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQi
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
cmVzdWx0KSIsICJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGVzdF9kYXRhKSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEubGVuZ3RoID09PSByZXN1bHQubGVu
Z3RoIik7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGVzdF9kYXRhLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJpcyh0ZXN0X2RhdGFbIiArIGkgKyAi
XSwgcmVzdWx0WyIgKyBpICsgIl0pIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWJ1
ZygiIik7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RUeXBlZEFycmF5VmFsdWUsIFsKLSAgICAgICAgIm5l
dyBVaW50OEFycmF5KFtdKSIsCi0gICAgICAgICJuZXcgVWludDhBcnJheShbMCwgMSwgMjU0LCAy
NTVdKSIsCi0gICAgICAgICJuZXcgVWludDE2QXJyYXkoWzB4MDAwMCwgMHgwMDAxLCAweEZGRkUs
IDB4RkZGRl0pIiwKLSAgICAgICAgIm5ldyBVaW50MzJBcnJheShbMHgwMDAwMDAwMCwgMHgwMDAw
MDAwMSwgMHhGRkZGRkZGRSwgMHhGRkZGRkZGRl0pIiwKLSAgICAgICAgIm5ldyBJbnQ4QXJyYXko
WzAsIDEsIDI1NCwgMjU1XSkiLAotICAgICAgICAibmV3IEludDE2QXJyYXkoWzB4MDAwMCwgMHgw
MDAxLCAweEZGRkUsIDB4RkZGRl0pIiwKLSAgICAgICAgIm5ldyBJbnQzMkFycmF5KFsweDAwMDAw
MDAwLCAweDAwMDAwMDAxLCAweEZGRkZGRkZFLCAweEZGRkZGRkZGXSkiLAotICAgICAgICAibmV3
IFVpbnQ4Q2xhbXBlZEFycmF5KFswLCAxLCAyNTQsIDI1NV0pIiwKLSAgICAgICAgIm5ldyBGbG9h
dDMyQXJyYXkoWy1JbmZpbml0eSwgLTEuNSwgLTEsIC0wLjUsIDAsIDAuNSwgMSwgMS41LCBJbmZp
bml0eSwgTmFOXSkiLAotICAgICAgICAibmV3IEZsb2F0NjRBcnJheShbLUluZmluaXR5LCAtTnVt
YmVyLk1BWF9WQUxVRSwgLU51bWJlci5NSU5fVkFMVUUsIDAsIE51bWJlci5NSU5fVkFMVUUsIE51
bWJlci5NQVhfVkFMVUUsIEluZmluaXR5LCBOYU5dKSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RCYWRUeXBlcygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJU
ZXN0IHR5cGVzIHRoYXQgY2FuJ3QgYmUgY2xvbmVkOiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAg
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsICdy
ZWFkd3JpdGUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0Owot
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJPdGhlciBKYXZhU2NyaXB0IG9iamVjdCB0eXBl
czoiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobmV3IEVycm9yLCAn
a2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBGdW5jdGlvbiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlv
bi5EQVRBX0NMT05FX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJPdGhlciBo
b3N0IG9iamVjdCB0eXBlczoiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQoc2VsZiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChkb2N1bWVudCwgJ2tleScpIiwgIkRPTUV4
Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLnB1dChkb2N1bWVudC5ib2R5LCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVf
RVJSIik7Ci19Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJ1Y3R1cmVk
LWNsb25lLmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVj
dXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCmlu
ZGV4IDljNmQ0NzQuLmQyM2M2NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1l
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29t
cGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbApAQCAtOCw1MCArOCw2IEBA
CiAgICAgPGJvZHk+CiAgICAgPC9ib2R5PgogPC9pZnJhbWU+Ci08c2NyaXB0PgotCi12YXIgdHJh
bnNhY3Rpb247Ci12YXIgc3RvcmU7Ci12YXIgZGI7Ci12YXIgYm9keSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXS5jb250ZW50RG9jdW1lbnQuYm9keTsKLQotZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRl
ZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykg
aXMgZmluaXNoZWQuIik7Ci0KLWluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBjbGljayk7
Ci1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKLSAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51
bGwpOwotfQotCi1mdW5jdGlvbiBjbGljaygpIHsKLSAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0Owot
ICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5kaW5nVHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOwotICAg
IHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbXBsZXRlQ2FsbGJhY2s7Ci0g
ICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKLSAgICBl
dmVudC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0
VmlldywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwp
OwotICAgIGJvZHkuZGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0b3Jl
JykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmluZWQiKTsKLSAgICBib2R5
Lm9uY2xpY2sgPSB1bmRlZmluZWQ7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGRlYnVn
KCJTdGFydCByZS1lbnRyYW50IEpTIik7Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScp
Iik7Ci0gICAgZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7Ci19Ci0KLQotZnVuY3Rpb24gY29t
cGxldGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIlBlbmRpbmcgdHJhbnNhY3Rpb24gY29tcGxl
dGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1m
cmFtZS5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vy
c2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29t
cGxldGUtd2l0aC1qcy1yZWN1cnNpb24uaHRtbAppbmRleCBmOTU3OTdlLi44NThmMTc3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0
ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKQEAgLTQsNTEg
KzQsNiBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi12YXIgdHJhbnNhY3Rpb247Ci12YXIgc3RvcmU7Ci12
YXIgZGI7Ci12YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF07Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5v
dCBjb21wbGV0ZWQgZHVyaW5nIHJlY3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgaXMgZmlu
aXNoZWQuIik7Ci0KLWluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBjbGljayk7Ci1mdW5j
dGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOwot
fQotCi1mdW5jdGlvbiBjbGljaygpCi17Ci0gICAgYm9keS5vbmNsaWNrID0gdGVzdDsKLSAgICB2
YXIgcGVuZGluZ1RyYW5zYWN0aW9uID0gZXZhbEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykiKTsKLSAgICBwZW5k
aW5nVHJhbnNhY3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cGVuZGluZ1RyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICBwZW5kaW5nVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbXBsZXRlQ2FsbGJhY2s7Ci0gICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKLSAgICBldmVu
dC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmll
dywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOwot
ICAgIGJvZHkuZGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJyki
KTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmluZWQiKTsKLSAgICBib2R5Lm9u
Y2xpY2sgPSB1bmRlZmluZWQ7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGRlYnVnKCJT
dGFydCByZS1lbnRyYW50IEpTIik7Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7
Ci0gICAgZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7Ci19Ci0KLQotZnVuY3Rpb24gY29tcGxl
dGVDYWxsYmFjaygpCi17Ci0gICAgdGVzdFBhc3NlZCgiUGVuZGluZyB0cmFuc2FjdGlvbiBjb21w
bGV0ZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLWluLXRhc2tzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1pbi10YXNrcy5odG1sCmluZGV4
IDFmYTk5OTMuLjA2MjZmNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNyYXNoLWluLXRhc2tzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtaW4tdGFza3MuaHRtbApAQCAtMSwxOCAr
MSw5IEBACi08IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlJlZ3Jlc3Np
b24gdGVzdCBmb3IgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDIyODMiKTsKLQotdGVzdCgpOwotZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHNldERCTmFt
ZUZyb21QYXRoKCk7Ci0KLSAgICBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDIp
Iik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOwotCi0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci08L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1pbi10YXNrcy5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1vcmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tb3JkZXJpbmcuaHRtbAppbmRleCA2YzZkNmU2Li5hYzVlYWFiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vcmRlcmlu
Zy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLW9y
ZGVyaW5nLmh0bWwKQEAgLTEsNjAgKzEsOSBAQAotPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJWZXJpZnkgSW5kZXhlZCBEQiB0cmFuc2FjdGlvbnMgYXJlIG9yZGVyZWQg
cGVyIHNwZWMiKTsKLQotaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIG9uT3Blbik7Ci0K
LWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAg
ICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci19Ci0KLWZ1bmN0aW9u
IG9uT3BlbihldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkNyZWF0
ZSBpbiBvcmRlciB0eDEsIHR4MiIpOwotICAgIGV2YWxBbmRMb2coInR4MSA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOwotICAgIGV2YWxBbmRMb2coInR4MiA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygiVXNlIGluIG9yZGVyIHR4MiwgdHgxIik7Ci0gICAgZXZhbEFuZExvZygidHgyLm9iamVj
dFN0b3JlKCdzdG9yZScpLmdldCgwKSIpOwotICAgIGV2YWxBbmRMb2coInR4MS5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5nZXQoMCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygib3Jk
ZXIgPSBbXSIpOwotCi0gICAgdHgxLm9uY29tcGxldGUgPSBmdW5jdGlvbihldnQpIHsKLSAgICAg
ICAgZGVidWcoInR4MSBjb21wbGV0ZSIpOwotICAgICAgICBvcmRlci5wdXNoKDEpOwotICAgICAg
ICBpZiAob3JkZXIubGVuZ3RoID09PSAyKSBkb25lKCk7Ci0gICAgfTsKLQotICAgIHR4Mi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGRlYnVnKCJ0eDEgY29tcGxldGUiKTsK
LSAgICAgICAgb3JkZXIucHVzaCgyKTsKLSAgICAgICAgaWYgKG9yZGVyLmxlbmd0aCA9PT0gMikg
ZG9uZSgpOwotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBkb25lKCkgewotICAgICAgICBwcmVhbWJs
ZSgpOwotICAgICAgICAvLyBJbmRleGVkREIgU3BlYzoKLSAgICAgICAgLy8gaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy9JbmRleGVkREIvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjdHJhbnNhY3Rp
b24tY29uY2VwdAotICAgICAgICAvLwotICAgICAgICAvLyBJZiBtdWx0aXBsZSAicmVhZHdyaXRl
IiB0cmFuc2FjdGlvbnMgYXJlIGF0dGVtcHRpbmcgdG8KLSAgICAgICAgLy8gYWNjZXNzIHRoZSBz
YW1lIG9iamVjdCBzdG9yZSAoaS5lLiBpZiB0aGV5IGhhdmUgb3ZlcmxhcHBpbmcKLSAgICAgICAg
Ly8gc2NvcGUpLCB0aGUgdHJhbnNhY3Rpb24gdGhhdCB3YXMgY3JlYXRlZCBmaXJzdCBtdXN0IGJl
IHRoZQotICAgICAgICAvLyB0cmFuc2FjdGlvbiB3aGljaCBnZXRzIGFjY2VzcyB0byB0aGUgb2Jq
ZWN0IHN0b3JlIGZpcnN0LgotICAgICAgICAvLwotICAgICAgICBzaG91bGRCZVRydWUoImFyZUFy
cmF5c0VxdWFsKG9yZGVyLCBbIDEsIDIgXSkiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgfQotfQotCi0KLTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3RyYW5zYWN0aW9uLW9yZGVyaW5nLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LW92ZXJsYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1vdmVybGFwcGluZy5odG1sCmluZGV4IGM2YzZjMWYuLjFhYTY1MGYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLW92ZXJsYXBwaW5nLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tb3Zlcmxh
cHBpbmcuaHRtbApAQCAtMSw4MSArMSw5IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIkNoZWNrIHRoYXQgdHJhbnNhY3Rpb25zIHRoYXQg
bWF5IG92ZXJsYXAgY29tcGxldGUgcHJvcGVybHkuIik7Ci0KLWluZGV4ZWREQlRlc3QocHJlcGFy
ZURhdGFiYXNlLCBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyk7Ci0KLWZ1bmN0aW9uIHByZXBhcmVE
YXRhYmFzZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd2YWx1
ZScsICdrZXknKSIpOwotfQotCi1mdW5jdGlvbiBydW5QYXJhbGxlbFRyYW5zYWN0aW9ucyhldnQp
Ci17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24x
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5JykiKTsKLSAgICB0cmFuc2FjdGlv
bjEub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uMS5v
bmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlOwotICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uMiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpIik7Ci0gICAgdHJh
bnNhY3Rpb24xLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2Fj
dGlvbjIub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKLQotICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uMUdldFN1Y2Nlc3MgPSAwIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24yR2V0U3VjY2VzcyA9IDAiKTsKLQotICAgIGZ1bmN0aW9uIGRvVHJhbnNhY3Rpb24xR2V0
KCkgewotICAgICAgICAvLyBOT1RFOiBObyBsb2dnaW5nIHNpbmNlIGV4ZWN1dGlvbiBvcmRlciBp
cyBub3QgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgcmVxdWVzdCA9IHRyYW5zYWN0aW9uMS5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5nZXQoJ2tleScpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICsrdHJhbnNhY3Rpb24xR2V0U3VjY2VzczsKLSAgICAgICAg
ICAgIGlmICghdHJhbnNhY3Rpb24yR2V0U3VjY2VzcyAmJiB0cmFuc2FjdGlvbjFHZXRTdWNjZXNz
IDwgMTApCi0gICAgICAgICAgICAgICAgZG9UcmFuc2FjdGlvbjFHZXQoKTsKLSAgICAgICAgfTsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkb1RyYW5zYWN0aW9uMkdldCgpIHsKLSAgICAgICAgLy8g
Tk9URTogTm8gbG9nZ2luZyBzaW5jZSBleGVjdXRpb24gb3JkZXIgaXMgbm90IGRldGVybWluaXN0
aWMuCi0gICAgICAgIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjIub2JqZWN0U3RvcmUoJ3N0b3JlJyku
Z2V0KCdrZXknKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICArK3RyYW5zYWN0aW9uMkdldFN1Y2Nlc3M7Ci0gICAgICAgICAgICBpZiAoIXRyYW5zYWN0
aW9uMUdldFN1Y2Nlc3MgJiYgdHJhbnNhY3Rpb24yR2V0U3VjY2VzcyA8IDEwKQotICAgICAgICAg
ICAgICAgIGRvVHJhbnNhY3Rpb24yR2V0KCk7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZG9U
cmFuc2FjdGlvbjFHZXQoKTsKLSAgICBkb1RyYW5zYWN0aW9uMkdldCgpOwotfQotCi10cmFuc2Fj
dGlvbkNvbXBsZXRpb25Db3VudCA9IDA7Ci1mdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxldGUo
ZXZ0KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0KLSAgICArK3RyYW5zYWN0aW9uQ29tcGxldGlv
bkNvdW50OwotICAgIGlmICh0cmFuc2FjdGlvbkNvbXBsZXRpb25Db3VudCA8IDIpIHsKLSAgICAg
ICAgZGVidWcoImZpcnN0IHRyYW5zYWN0aW9uIGNvbXBsZXRlLCBzdGlsbCB3YWl0aW5nLi4uIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZU5vblplcm8oInRyYW5zYWN0
aW9uMUdldFN1Y2Nlc3MiKTsKLSAgICBzaG91bGRCZU5vblplcm8oInRyYW5zYWN0aW9uMkdldFN1
Y2Nlc3MiKTsKLQotICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1v
dmVybGFwcGluZy5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGFydmF0aW9uLmh0
bWwKaW5kZXggZjNkNzk2Ny4uMWJjZGNlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhcnZhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXJ2YXRpb24uaHRtbApAQCAtMSw0ICsx
LDMgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1ldmVudC1iYXNpYy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXZlbnQtYmFzaWMuaHRt
bAppbmRleCAwYTdhODFiLi40MTQxNDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1ldmVudC1iYXNpYy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV2ZW50LWJhc2ljLmh0bWwKQEAg
LTEsNTEgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2Pgot
PHNjcmlwdD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9u
IGxvZyhtc2cpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJI
VE1MICs9IG1zZyArICI8YnI+IjsKLX0KLQotdmFyIHJlcXVlc3QxID0gaW5kZXhlZERCLm9wZW4o
InZjZWIxIik7Ci1yZXF1ZXN0MS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7Ci0gICAg
bG9nKCJGaXJzdCByZXF1ZXN0OiAiICsgZS5vbGRWZXJzaW9uICsgIiAiICsgZS5uZXdWZXJzaW9u
KTsKLX0KLQotdmFyIHJlcXVlc3QyID0gaW5kZXhlZERCLm9wZW4oInZjZWIyIiwgMSk7Ci1yZXF1
ZXN0Mi5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7Ci0gICAgbG9nKCJTZWNvbmQgcmVx
dWVzdDogIiArIGUub2xkVmVyc2lvbiArICIgIiArIGUubmV3VmVyc2lvbik7Ci19Ci0KLXZhciBy
ZXF1ZXN0MyA9IGluZGV4ZWREQi5vcGVuKCJ2Y2ViMyIsIDIpOwotcmVxdWVzdDMub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZSkgewotICAgIGxvZygiVGhpcmQgcmVxdWVzdDogIiArIGUub2xk
VmVyc2lvbiArICIgIiArIGUubmV3VmVyc2lvbik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdHJ5IHsKLSAgICB2YXIg
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJ2Y2ViNCIsIDApOwotfSBjYXRjaCAoZSkgewotICAg
IGxvZygiMCB2ZXJzaW9uOiAiICsgZSk7Ci19Ci0KLXRyeSB7Ci0gICAgdmFyIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbigidmNlYjUiLCAtMSk7Ci19IGNhdGNoIChlKSB7Ci0gICAgbG9nKCJOZWdh
dGl2ZSB2ZXJzaW9uOiAiICsgZSk7Ci19Ci0KLXRyeSB7Ci0gICAgdmFyIHJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbigidmNlYjYiLCAic3RyaW5nIik7Ci19IGNhdGNoIChlKSB7Ci0gICAgbG9nKCJT
dHJpbmcgdmVyc2lvbjogIiArIGUpOwotfQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXZlbnQtYmFzaWMuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bi1jaGFuZ2UtZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNp
b24tY2hhbmdlLWV2ZW50Lmh0bWwKaW5kZXggMzU4MzZhNS4uZWUwZDVlNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXZlbnQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1ldmVudC5o
dG1sCkBAIC00LDQwICs0LDYgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlJlZ3Jl
c3Npb24gdGVzdCBmb3IgV0sxMzY1ODMgLSBlbnN1cmUgdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQg
aGFzIHRoZSBwcm9wZXIgbmFtZSIpOwotCi1pbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwg
dXBncmFkZURhdGFiYXNlKTsKLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldnQpCi17Ci0gICAg
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIGV2YWxBbmRMb2coImRiLm9udmVyc2lvbmNo
YW5nZSA9IG9uVmVyc2lvbkNoYW5nZSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7Ci19Ci0KLWZ1bmN0aW9uIHVwZ3JhZGVEYXRhYmFz
ZShldnQpCi17Ci0gICAgZGIgPSBldnQudGFyZ2V0LnJlc3VsdDsKLSAgICBzaG91bGRCZSgiZGIu
dmVyc2lvbiIsICIxIik7Ci0gICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSwgMikiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5vbnZlcnNpb25jaGFuZ2UgPSBvblZl
cnNpb25DaGFuZ2UiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaFRlc3Q7Ci19Ci0KLWZ1bmN0aW9u
IG9uVmVyc2lvbkNoYW5nZShldnQpCi17Ci0gICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUiLCAidmVyc2lvbmNoYW5nZSIpOwotICAgIGRiLmNs
b3NlKCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaFRlc3QoZXZ0KQotewotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbi1jaGFu
Z2UtZXZlbnQuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>