<?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>113104</bug_id>
          
          <creation_ts>2013-03-22 15:12:44 -0700</creation_ts>
          <short_desc>Dashboard refactor: Move cross dashboard history related code into history.js.</short_desc>
          <delta_ts>2013-03-25 12:40:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Julie Parent">jparent</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>861889</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-22 15:12:44 -0700</bug_when>
    <thetext>Dashboard refactor: Move cross dashboard history related code into history.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861894</commentid>
    <comment_count>1</comment_count>
      <attachid>194640</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-22 15:17:15 -0700</bug_when>
    <thetext>Created attachment 194640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861965</commentid>
    <comment_count>2</comment_count>
      <attachid>194640</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-22 16:39:39 -0700</bug_when>
    <thetext>Comment on attachment 194640
Patch

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

&gt; Tools/TestResultServer/static-dashboards/history.js:112
&gt; +  this.crossDashboardState = {};
&gt; +  this.dashboardSpecificState = {};

I think we eventually want to find a way to make these private as well. Only the History object should know about cross-dashboard vs. dashboard specific parameters. But, that&apos;s probably easier to do once the rest of this cleanup is further along.

&gt; Tools/TestResultServer/static-dashboards/history.js:126
&gt; +    parseCrossDashboardParameters: function()

We can make this private eventually too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862976</commentid>
    <comment_count>3</comment_count>
      <attachid>194640</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 12:40:12 -0700</bug_when>
    <thetext>Comment on attachment 194640
Patch

Clearing flags on attachment: 194640

Committed r146797: &lt;http://trac.webkit.org/changeset/146797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862977</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 12:40:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194640</attachid>
            <date>2013-03-22 15:17:15 -0700</date>
            <delta_ts>2013-03-25 12:40:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113104-20130322151302.patch</filename>
            <type>text/plain</type>
            <size>85838</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2Mzc4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWQwMWEyYTNiN2Y0N2UwMjA1ZjNhZDhjMGU0OGJkNzhk
MDBkNGZhMi4uOTc5YmVkMjU5N2YzZTE4ZjYzOWVkMDg5NzUxMjE3OTkyODY5MjFkOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0
IEBACisyMDEzLTAzLTIyICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBEYXNoYm9hcmQgcmVmYWN0b3I6IE1vdmUgY3Jvc3MgZGFzaGJvYXJkIGhpc3Rvcnkg
cmVsYXRlZCBjb2RlIGludG8gaGlzdG9yeS5qcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCBmdW5jdGlvbnMgcmVsYXRpbmcgdG8gY3Jvc3MgZGFz
aGJvYXJkIGJlaGF2aW9yIG1vdmUgZnJvbSBiZWluZworICAgICAgICBnbG9iYWxzIHRvIG1ldGhv
ZHMgb24gdGhlIGhpc3RvcnkuSGlzdG9yeSBvYmplY3QuIE5hbWVzIHN0YXkgdGhlIHNhbWUsCisg
ICAgICAgIGV4Y2VwdCBtYW55IGFyZSBtYWRlIHByaXZhdGUsIG9uZXMgdGhhdCBzaG91bGQgaGF2
ZSBiZWVuIGNvbnN0YW50cyBub3cKKyAgICAgICAgYXJlLCBhbmQgdGhlIGxvbmcgc3RhbmRpbmcg
VE9ETyB0byBjaGFuZ2UgImN1cnJlbnRTdGF0ZSIgdG8gCisgICAgICAgIGRhc2hib2FyZFNwZWNp
ZmljU3RhdGUgaXMgZG9uZS4KKyAgICAgICAgCisgICAgICAgIFdlIG5vdyBjcmVhdGUgYSBnbG9i
YWwgaGlzdG9yeSBvYmplY3QgaW4gZGFzaGJvYXJkX2Jhc2UsIGFzIGFuIAorICAgICAgICBpbnRl
cm1lZGlhdGUgbWVhc3VyZS4gIE9uY2UgdGhlIGRhc2hib2FyZCBzcGVjaWZpYyBjb2RlIGlzCisg
ICAgICAgIGFkZGVkIHRvIGhpc3RvcnksIGVhY2ggREIgd2lsbCBuZWVkIHRvIGNyZWF0ZSBpdHMg
b3duLCBhbmQgdGhpcworICAgICAgICBnbG9iYWwgd2lsbCBiZSBlbGltaW5hdGVkLgorICAgICAg
ICAKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0
ZV9yZXN1bHRzLmpzOgorICAgICAgICAoaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKToKKyAgICAg
ICAgKGh0bWxGb3JCdWlsZGVyKToKKyAgICAgICAgKHJhd1ZhbHVlc0hUTUwpOgorICAgICAgICAq
IFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanM6Cisg
ICAgICAgIChwYXJzZURhc2hib2FyZFNwZWNpZmljUGFyYW1ldGVycyk6CisgICAgICAgIChkZWZh
dWx0VmFsdWUpOgorICAgICAgICAoY3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KToKKyAgICAg
ICAgKGN1cnJlbnRCdWlsZGVyR3JvdXBOYW1lKToKKyAgICAgICAgKGhhbmRsZUxvY2F0aW9uQ2hh
bmdlKToKKyAgICAgICAgKGV4cGVjdGF0aW9uc01hcCk6CisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzOgorICAgICAgICAo
Z2VuZXJhdGVQYWdlKToKKyAgICAgICAgKC5zd2l0Y2gucmV0dXJuKToKKyAgICAgICAgKHBsYXRm
b3JtQW5kQnVpbGRUeXBlKToKKyAgICAgICAgKGluZGl2aWR1YWxUZXN0cyk6CisgICAgICAgIChz
dWJzdHJpbmdMaXN0KToKKyAgICAgICAgKHByb2Nlc3NNaXNzaW5nQW5kRXh0cmFFeHBlY3RhdGlv
bnMpOgorICAgICAgICAocGF0aFRvRmFpbHVyZUxvZyk6CisgICAgICAgIChzaG93UG9wdXBGb3JC
dWlsZCk6CisgICAgICAgIChodG1sRm9yVGVzdHNXaXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJl
cyk6CisgICAgICAgIChzaG91bGRIaWRlVGVzdCk6CisgICAgICAgIChpc0Nyb3NzQnVpbGRlclZp
ZXcpOgorICAgICAgICAodGFibGVIZWFkZXJzKToKKyAgICAgICAgKGh0bWxGb3JTaW5nbGVUZXN0
Um93KToKKyAgICAgICAgKGh0bWxGb3JUYWJsZUNvbHVtbkhlYWRlcik6CisgICAgICAgIChnZW5l
cmF0ZVBhZ2VGb3JFeHBlY3RhdGlvbnNVcGRhdGUpOgorICAgICAgICAoaGFuZGxlVXBkYXRlKToK
KyAgICAgICAgKG5leHRVcGRhdGUpOgorICAgICAgICAoc2V0VXBkYXRlSW5kZXgpOgorICAgICAg
ICAoaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhSZXN1bHRzTGlua3MpOgor
ICAgICAgICAoLmFwcGVuZEV4cGVjdGF0aW9uc0l0ZW0pOgorICAgICAgICAobG9hZEV4cGVjdGF0
aW9ucyk6CisgICAgICAgICguZHVtbXlOb2RlLm9ubG9hZCk6CisgICAgICAgIChsb2FkRXhwZWN0
YXRpb25zTGF5b3V0VGVzdHMpOgorICAgICAgICAoYXBwZW5kRXhwZWN0YXRpb25zKToKKyAgICAg
ICAgKGh0bWxGb3JOYXZCYXIpOgorICAgICAgICAoY2hlY2tCb3hUb1RvZ2dsZVN0YXRlKToKKyAg
ICAgICAgKGxpbmtIVE1MVG9Ub2dnbGVTdGF0ZSk6CisgICAgICAgIChnZW5lcmF0ZVBhZ2VGb3JC
dWlsZGVyKToKKyAgICAgICAgKGlzSW52YWxpZEtleUZvckNyb3NzQnVpbGRlclZpZXcpOgorICAg
ICAgICAoaGFuZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UpOgorICAgICAgICAoc2hvd0xlZ2VuZCk6
CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3Nf
ZGFzaGJvYXJkX3VuaXR0ZXN0cy5qczoKKyAgICAgICAgKHJlc2V0R2xvYmFscyk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2hp
c3RvcnkuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2hpc3RvcnlfdW5pdHRlc3RzLmpzOgorICAgICAgICAqIFRlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvbG9hZGVyLmpzOgorICAgICAgICAoLik6CisgICAgICAg
ICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpz
OgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVf
ZXhwbG9yZXIuanM6CisgICAgICAgIChnZW5lcmF0ZVBhZ2UpOgorICAgICAgICAoaW5pdEN1cnJl
bnRCdWlsZGVyVGVzdFJlc3VsdHMpOgorICAgICAgICAoc2VsZWN0QnVpbGQpOgorICAgICAgICAo
c2hvd1Jlc3VsdHNEZWx0YSk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy90cmVlbWFwLmpzOgorICAgICAgICAoZ2VuZXJhdGVQYWdlKToKKyAgICAgICAgKC5z
d2l0Y2gucmV0dXJuKToKKyAgICAgICAgKGhhbmRsZUZvY3VzKToKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3VpLmpzOgorCiAyMDEzLTAzLTIwICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCBmaXggZm9yIFdpbiBF
V1MgYm90cywgY2F0Y2ggdmFyaW91cyBlcnJvcnMgYW5kIHJlc3RhcnQgc2NyaXB0IGlmIG5lY2Vz
c2FyeS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYWdncmVnYXRlX3Jlc3VsdHMuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmpzCmluZGV4IDRhZjEzMjc4YmRkYjVmNTUzMTg1
ODMyNTJiM2M0ODY2YjU2ZWJmNDkuLjBmZDJkZmU5MzgxN2FjMmFjNDI3OGU2NDI0MjIzZDk3NDM0
NTY3NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYWdncmVnYXRlX3Jlc3VsdHMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5qcwpAQCAtNDksNyArNDksNyBAQCBmdW5j
dGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKIHsKICAgICBzd2l0Y2go
a2V5KSB7CiAgICAgY2FzZSAncmF3VmFsdWVzJzoKLSAgICAgICAgZ19jdXJyZW50U3RhdGVba2V5
XSA9IHZhbHVlID09ICd0cnVlJzsKKyAgICAgICAgZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmlj
U3RhdGVba2V5XSA9IHZhbHVlID09ICd0cnVlJzsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBkZWZhdWx0OgpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiBodG1sRm9yQnVpbGRlcihidWls
ZGVyKQogICAgIHZhciBudW1Db2x1bW5zID0gcmVzdWx0c1tBTExfRklYQUJMRV9DT1VOVF9LRVld
Lmxlbmd0aDsKICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPWNvbnRhaW5lcj48aDI+JyArIGJ1
aWxkZXIgKyAnPC9oMj4nOwogCi0gICAgaWYgKGdfY3VycmVudFN0YXRlLnJhd1ZhbHVlcykKKyAg
ICBpZiAoZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUucmF3VmFsdWVzKQogICAgICAg
ICBodG1sICs9IHJhd1ZhbHVlc0hUTUwocmVzdWx0cywgbnVtQ29sdW1ucyk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGh0bWwgKz0gJzxhIGhyZWY9InRpbWVsaW5lX2V4cGxvcmVyLmh0bWwnICsgKGxv
Y2F0aW9uLmhhc2ggPyBsb2NhdGlvbi5oYXNoICsgJyYnIDogJyMnKSArICdidWlsZGVyPScgKyBi
dWlsZGVyICsgJyI+JyArCkBAIC04Nyw3ICs4Nyw3IEBAIGZ1bmN0aW9uIHJhd1ZhbHVlc0hUTUwo
cmVzdWx0cywgbnVtQ29sdW1ucykKIHsKICAgICB2YXIgaHRtbCA9IGh0bWxGb3JTdW1tYXJ5VGFi
bGUocmVzdWx0cywgbnVtQ29sdW1ucykgKwogICAgICAgICBodG1sRm9yVGVzdFR5cGUocmVzdWx0
cywgRklYQUJMRV9DT1VOVFNfS0VZLCBGSVhBQkxFX0RFU0NSSVBUSU9OLCBudW1Db2x1bW5zKTsK
LSAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpKSB7CisgICAgaWYgKGdfaGlzdG9yeS5pc0xh
eW91dFRlc3RSZXN1bHRzKCkpIHsKICAgICAgICAgaHRtbCArPSBodG1sRm9yVGVzdFR5cGUocmVz
dWx0cywgREVGRVJSRURfQ09VTlRTX0tFWSwgREVGRVJSRURfREVTQ1JJUFRJT04sIG51bUNvbHVt
bnMpICsKICAgICAgICAgICAgIGh0bWxGb3JUZXN0VHlwZShyZXN1bHRzLCBXT05URklYX0NPVU5U
U19LRVksIFdPTlRGSVhfREVTQ1JJUFRJT04sIG51bUNvbHVtbnMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jh
c2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2Fy
ZF9iYXNlLmpzCmluZGV4IDAyZmQ4OGFjMmU5YTI4MTkyNjlkOTAzYTQ4N2I2MTJmNDMyODRlM2Eu
LjhiMWJjYmZlZDllYTE3ZWQxNjQ0NGRiODg0ZmMwMjZhZmNiYWRlZTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMK
KysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRf
YmFzZS5qcwpAQCAtMzcsMTAgKzM3LDEwIEBACiAvLyBhIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVz
IHRoZSBwYWdlIGFzc3VtaW5nIGFsbCByZXNvdXJjZXMgaGF2ZSBsb2FkZWQuCiBmdW5jdGlvbiBn
ZW5lcmF0ZVBhZ2UoKSB7fQogCi0vLyBUYWtlcyBhIGtleSBhbmQgYSB2YWx1ZSBhbmQgc2V0cyB0
aGUgZ19jdXJyZW50U3RhdGVba2V5XSA9IHZhbHVlIGlmZiBrZXkgaXMKKy8vIFRha2VzIGEga2V5
IGFuZCBhIHZhbHVlIGFuZCBzZXRzIHRoZSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0
ZVtrZXldID0gdmFsdWUgaWZmIGtleSBpcwogLy8gYSB2YWxpZCBoYXNoIHBhcmFtZXRlciBhbmQg
dGhlIHZhbHVlIGlzIGEgdmFsaWQgdmFsdWUgZm9yIHRoYXQga2V5LgogLy8KLS8vIEByZXR1cm4g
e2Jvb2xlYW59IFdoZXRoZXIgdGhlIGtleSB3aGF0IGluc2VydGVkIGludG8gdGhlIGdfY3VycmVu
dFN0YXRlLgorLy8gQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUga2V5IHdoYXQgaW5zZXJ0
ZWQgaW50byB0aGUgZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuCiBmdW5jdGlvbiBo
YW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKIHsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xNDgsNyArMTQ4LDYgQEAgdmFyIFRFU1RfVFlQRVMgPSBbCiAgICAgJ2NjX3VuaXR0ZXN0
cycKIF07CiAKLXZhciBSRUxPQURfUkVRVUlSSU5HX1BBUkFNRVRFUlMgPSBbJ3Nob3dBbGxSdW5z
JywgJ2dyb3VwJywgJ3Rlc3RUeXBlJ107CiAKIC8vIEVudW0gZm9yIGluZGV4aW5nIGludG8gdGhl
IHJ1bi1sZW5ndGggZW5jb2RlZCByZXN1bHRzIGluIHRoZSBKU09OIGZpbGVzLgogLy8gMCBpcyB3
aGVyZSB0aGUgY291bnQgaXMgbGVuZ3RoIGlzIHN0b3JlZC4gMSBpcyB0aGUgdmFsdWUuCkBAIC0x
NjIsMTQwICsxNjEsMzQgQEAgZnVuY3Rpb24gaXNGYWlsaW5nUmVzdWx0KHZhbHVlKQogICAgIHJl
dHVybiAnRlNUT0NJWicuaW5kZXhPZih2YWx1ZSkgIT0gLTE7CiB9CiAKLS8vIFRha2VzIGEga2V5
IGFuZCBhIHZhbHVlIGFuZCBzZXRzIHRoZSBnX2N1cnJlbnRTdGF0ZVtrZXldID0gdmFsdWUgaWZm
IGtleSBpcwotLy8gYSB2YWxpZCBoYXNoIHBhcmFtZXRlciBhbmQgdGhlIHZhbHVlIGlzIGEgdmFs
aWQgdmFsdWUgZm9yIHRoYXQga2V5LiBIYW5kbGVzCi0vLyBjcm9zcy1kYXNoYm9hcmQgcGFyYW1l
dGVycyB0aGVuIGZhbGxzIGJhY2sgdG8gY2FsbGluZwotLy8gaGFuZGxlVmFsaWRIYXNoUGFyYW1l
dGVyIGZvciBkYXNoYm9hcmQtc3BlY2lmaWMgcGFyYW1ldGVycy4KLS8vCi0vLyBAcmV0dXJuIHti
b29sZWFufSBXaGV0aGVyIHRoZSBrZXkgd2hhdCBpbnNlcnRlZCBpbnRvIHRoZSBnX2N1cnJlbnRT
dGF0ZS4KLWZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcldyYXBwZXIoa2V5LCB2YWx1
ZSkKLXsKLSAgICBzd2l0Y2goa2V5KSB7Ci0gICAgY2FzZSAndGVzdFR5cGUnOgotICAgICAgICBo
aXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSwga2V5LCB2YWx1
ZSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gVEVTVF9UWVBFUy5pbmRleE9mKHZh
bHVlKSAhPSAtMTsgfSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSAnZ3JvdXAn
OgotICAgICAgICBoaXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfY3Jvc3NEYXNoYm9hcmRTdGF0
ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgaW4gTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTIHx8Ci0gICAgICAgICAg
ICAgICAgICB2YWx1ZSBpbiBDSFJPTUlVTV9HUFVfVEVTVFNfQlVJTERFUl9HUk9VUFMgfHwKLSAg
ICAgICAgICAgICAgICAgIHZhbHVlIGluIENIUk9NSVVNX0lOU1RSVU1FTlRBVElPTl9URVNUU19C
VUlMREVSX0dST1VQUyB8fAotICAgICAgICAgICAgICAgICAgdmFsdWUgaW4gQ0hST01JVU1fR1RF
U1RTX0JVSUxERVJfR1JPVVBTOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgY2FzZSAndXNlVGVzdERhdGEnOgotICAgIGNhc2UgJ3Nob3dBbGxSdW5zJzoKLSAg
ICAgICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlW2tleV0gPSB2YWx1ZSA9PSAndHJ1ZSc7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGhhbmRsZVZh
bGlkSGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKTsKLSAgICB9Ci19Ci0KLXZhciBnX2RlZmF1bHRD
cm9zc0Rhc2hib2FyZFN0YXRlVmFsdWVzID0gewotICAgIGdyb3VwOiBudWxsLAotICAgIHNob3dB
bGxSdW5zOiBmYWxzZSwKLSAgICB0ZXN0VHlwZTogJ2xheW91dC10ZXN0cycsCi0gICAgdXNlVGVz
dERhdGE6IGZhbHNlLAotfQotCiAvLyBHZW5lcmljIHV0aWxpdHkgZnVuY3Rpb25zLgogZnVuY3Rp
b24gJChpZCkKIHsKICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogfQog
Ci1mdW5jdGlvbiBwYXJzZVBhcmFtZXRlcihwYXJhbWV0ZXJzLCBrZXkpCi17Ci0gICAgaWYgKCEo
a2V5IGluIHBhcmFtZXRlcnMpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFyIHZhbHVlID0gcGFy
YW1ldGVyc1trZXldOwotICAgIGlmICghaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyV3JhcHBlcihr
ZXksIHZhbHVlKSkKLSAgICAgICAgY29uc29sZS5sb2coIkludmFsaWQgcXVlcnkgcGFyYW1ldGVy
OiAiICsga2V5ICsgJz0nICsgdmFsdWUpOwotfQotCi1mdW5jdGlvbiBwYXJzZUNyb3NzRGFzaGJv
YXJkUGFyYW1ldGVycygpCi17Ci0gICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlID0ge307Ci0gICAg
dmFyIHBhcmFtZXRlcnMgPSBoaXN0b3J5LnF1ZXJ5SGFzaEFzTWFwKCk7Ci0gICAgZm9yIChwYXJh
bWV0ZXJOYW1lIGluIGdfZGVmYXVsdENyb3NzRGFzaGJvYXJkU3RhdGVWYWx1ZXMpCi0gICAgICAg
IHBhcnNlUGFyYW1ldGVyKHBhcmFtZXRlcnMsIHBhcmFtZXRlck5hbWUpOwotCi0gICAgaGlzdG9y
eS5maWxsTWlzc2luZ1ZhbHVlcyhnX2Nyb3NzRGFzaGJvYXJkU3RhdGUsIGdfZGVmYXVsdENyb3Nz
RGFzaGJvYXJkU3RhdGVWYWx1ZXMpOwotfQotCiBmdW5jdGlvbiBwYXJzZURhc2hib2FyZFNwZWNp
ZmljUGFyYW1ldGVycygpCiB7Ci0gICAgZ19jdXJyZW50U3RhdGUgPSB7fTsKKyAgICBnX2hpc3Rv
cnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZSA9IHt9OwogICAgIHZhciBwYXJhbWV0ZXJzID0gaGlz
dG9yeS5xdWVyeUhhc2hBc01hcCgpOwogICAgIGZvciAocGFyYW1ldGVyTmFtZSBpbiBnX2RlZmF1
bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzKQotICAgICAgICBwYXJzZVBhcmFtZXRlcihw
YXJhbWV0ZXJzLCBwYXJhbWV0ZXJOYW1lKTsKLX0KLQotLy8gQHJldHVybiB7Ym9vbGVhbn0gV2hl
dGhlciB0byBnZW5lcmF0ZSB0aGUgcGFnZS4KLWZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVycygpCi17
Ci0gICAgdmFyIG9sZENyb3NzRGFzaGJvYXJkU3RhdGUgPSBnX2Nyb3NzRGFzaGJvYXJkU3RhdGU7
Ci0gICAgdmFyIG9sZERhc2hib2FyZFNwZWNpZmljU3RhdGUgPSBnX2N1cnJlbnRTdGF0ZTsKLQot
ICAgIHBhcnNlQ3Jvc3NEYXNoYm9hcmRQYXJhbWV0ZXJzKCk7Ci0gICAgCi0gICAgLy8gU29tZSBw
YXJhbWV0ZXJzIHJlcXVpcmUgbG9hZGluZyBkaWZmZXJlbnQgSlNPTiBmaWxlcyB3aGVuIHRoZSB2
YWx1ZSBjaGFuZ2VzLiBEbyBhIHJlbG9hZC4KLSAgICBpZiAoT2JqZWN0LmtleXMob2xkQ3Jvc3NE
YXNoYm9hcmRTdGF0ZSkubGVuZ3RoKSB7Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiBnX2Nyb3Nz
RGFzaGJvYXJkU3RhdGUpIHsKLSAgICAgICAgICAgIGlmIChvbGRDcm9zc0Rhc2hib2FyZFN0YXRl
W2tleV0gIT0gZ19jcm9zc0Rhc2hib2FyZFN0YXRlW2tleV0gJiYgUkVMT0FEX1JFUVVJUklOR19Q
QVJBTUVURVJTLmluZGV4T2Yoa2V5KSAhPSAtMSkgewotICAgICAgICAgICAgICAgIHdpbmRvdy5s
b2NhdGlvbi5yZWxvYWQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwYXJzZURhc2hib2FyZFNwZWNpZmljUGFy
YW1ldGVycygpOwotICAgIHZhciBkYXNoYm9hcmRTcGVjaWZpY0RpZmZTdGF0ZSA9IGhpc3Rvcnku
ZGlmZlN0YXRlcyhvbGREYXNoYm9hcmRTcGVjaWZpY1N0YXRlLCBnX2N1cnJlbnRTdGF0ZSk7Ci0K
LSAgICBoaXN0b3J5LmZpbGxNaXNzaW5nVmFsdWVzKGdfY3VycmVudFN0YXRlLCBnX2RlZmF1bHRE
YXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzKTsKLQotICAgIC8vIEZJWE1FOiBkYXNoYm9hcmRf
YmFzZSBzaG91bGRuJ3Qga25vdyBhbnl0aGluZyBhYm91dCBzcGVjaWZpYyBkYXNoYm9hcmQgc3Bl
Y2lmaWMga2V5cy4KLSAgICBpZiAoZGFzaGJvYXJkU3BlY2lmaWNEaWZmU3RhdGUuYnVpbGRlcikK
LSAgICAgICAgZGVsZXRlIGdfY3VycmVudFN0YXRlLnRlc3RzOwotICAgIGlmIChnX2N1cnJlbnRT
dGF0ZS50ZXN0cykKLSAgICAgICAgZGVsZXRlIGdfY3VycmVudFN0YXRlLmJ1aWxkZXI7Ci0KLSAg
ICB2YXIgc2hvdWxkR2VuZXJhdGVQYWdlID0gdHJ1ZTsKLSAgICBpZiAoT2JqZWN0LmtleXMoZGFz
aGJvYXJkU3BlY2lmaWNEaWZmU3RhdGUpLmxlbmd0aCkKLSAgICAgICAgc2hvdWxkR2VuZXJhdGVQ
YWdlID0gaGFuZGxlUXVlcnlQYXJhbWV0ZXJDaGFuZ2UoZGFzaGJvYXJkU3BlY2lmaWNEaWZmU3Rh
dGUpOwotICAgIHJldHVybiBzaG91bGRHZW5lcmF0ZVBhZ2U7CisgICAgICAgIGdfaGlzdG9yeS5w
YXJzZVBhcmFtZXRlcihwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJOYW1lKTsKIH0KIAogZnVuY3Rpb24g
ZGVmYXVsdFZhbHVlKGtleSkKIHsKICAgICBpZiAoa2V5IGluIGdfZGVmYXVsdERhc2hib2FyZFNw
ZWNpZmljU3RhdGVWYWx1ZXMpCiAgICAgICAgIHJldHVybiBnX2RlZmF1bHREYXNoYm9hcmRTcGVj
aWZpY1N0YXRlVmFsdWVzW2tleV07Ci0gICAgcmV0dXJuIGdfZGVmYXVsdENyb3NzRGFzaGJvYXJk
U3RhdGVWYWx1ZXNba2V5XTsKKyAgICByZXR1cm4gaGlzdG9yeS5ERUZBVUxUX0NST1NTX0RBU0hC
T0FSRF9TVEFURV9WQUxVRVNba2V5XTsKIH0KIAotLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIGdf
ZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZTsKLXZhciBnX2N1cnJlbnRTdGF0ZSA9IHt9OwotdmFyIGdf
Y3Jvc3NEYXNoYm9hcmRTdGF0ZSA9IHt9OwotcGFyc2VDcm9zc0Rhc2hib2FyZFBhcmFtZXRlcnMo
KTsKLQotZnVuY3Rpb24gaXNMYXlvdXRUZXN0UmVzdWx0cygpCi17Ci0gICAgcmV0dXJuIGdfY3Jv
c3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9PSAnbGF5b3V0LXRlc3RzJzsKLX0KLQotZnVuY3Rp
b24gaXNHUFVUZXN0UmVzdWx0cygpCi17Ci0gICAgcmV0dXJuIGdfY3Jvc3NEYXNoYm9hcmRTdGF0
ZS50ZXN0VHlwZSA9PSAnZ3B1X3Rlc3RzJzsKLX0KKy8vIFRPRE8oanBhcmVudCk6IEVhY2ggZGIg
c2hvdWxkIGNyZWF0ZSB0aGVpciBvd24gaGlzdG9yeSBvYmosIG5vdCBnbG9iYWwuCit2YXIgZ19o
aXN0b3J5ID0gbmV3IGhpc3RvcnkuSGlzdG9yeSgpOworZ19oaXN0b3J5LnBhcnNlQ3Jvc3NEYXNo
Ym9hcmRQYXJhbWV0ZXJzKCk7CiAKIGZ1bmN0aW9uIGN1cnJlbnRCdWlsZGVyR3JvdXBDYXRlZ29y
eSgpCiB7Ci0gICAgc3dpdGNoIChnX2Nyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUpIHsKKyAg
ICBzd2l0Y2ggKGdfaGlzdG9yeS5jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlKSB7CiAgICAg
Y2FzZSAnZ2xfdGVzdHMnOgogICAgIGNhc2UgJ2dwdV90ZXN0cyc6CiAgICAgICAgIHJldHVybiBD
SFJPTUlVTV9HUFVfVEVTVFNfQlVJTERFUl9HUk9VUFM7CkBAIC0zMTcsNyArMjEwLDcgQEAgZnVu
Y3Rpb24gY3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KCkKIAogZnVuY3Rpb24gY3VycmVudEJ1
aWxkZXJHcm91cE5hbWUoKQogewotICAgIHJldHVybiBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUuZ3Jv
dXAgfHwgT2JqZWN0LmtleXMoY3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KCkpWzBdOworICAg
IHJldHVybiBnX2hpc3RvcnkuY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCB8fCBPYmplY3Qua2V5
cyhjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkoKSlbMF07CiB9CiAKIGZ1bmN0aW9uIGN1cnJl
bnRCdWlsZGVyR3JvdXAoKQpAQCAtMzQ1LDcgKzIzOCw3IEBAIGZ1bmN0aW9uIGlzRmxha2luZXNz
RGFzaGJvYXJkKCkKIAogZnVuY3Rpb24gaGFuZGxlTG9jYXRpb25DaGFuZ2UoKQogewotICAgIGlm
IChwYXJzZVBhcmFtZXRlcnMoKSkKKyAgICBpZiAoZ19oaXN0b3J5LnBhcnNlUGFyYW1ldGVycygp
KQogICAgICAgICBnZW5lcmF0ZVBhZ2UoKTsKIH0KIApAQCAtMzU1LDYzICsyNDgsNiBAQCBmdW5j
dGlvbiBpbnRpYWxpemVIaXN0b3J5KCkgewogICAgIGhhbmRsZUxvY2F0aW9uQ2hhbmdlKCk7CiB9
CiAKLWZ1bmN0aW9uIGNvbWJpbmVkRGFzaGJvYXJkU3RhdGUoKQotewotICAgIHZhciBjb21iaW5l
ZFN0YXRlID0gT2JqZWN0LmNyZWF0ZShnX2N1cnJlbnRTdGF0ZSk7Ci0gICAgZm9yICh2YXIga2V5
IGluIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSkKLSAgICAgICAgY29tYmluZWRTdGF0ZVtrZXldID0g
Z19jcm9zc0Rhc2hib2FyZFN0YXRlW2tleV07Ci0gICAgcmV0dXJuIGNvbWJpbmVkU3RhdGU7ICAg
IAotfQotCi1mdW5jdGlvbiBpbnZhbGlkYXRlUXVlcnlQYXJhbWV0ZXJzKHF1ZXJ5UGFyYW1zQXNT
dGF0ZSkgewotICAgIGZvciAodmFyIGtleSBpbiBxdWVyeVBhcmFtc0FzU3RhdGUpIHsKLSAgICAg
ICAgaWYgKGtleSBpbiBDUk9TU19EQl9JTlZBTElEQVRJTkdfUEFSQU1FVEVSUykKLSAgICAgICAg
ICAgIGRlbGV0ZSBnX2Nyb3NzRGFzaGJvYXJkU3RhdGVbQ1JPU1NfREJfSU5WQUxJREFUSU5HX1BB
UkFNRVRFUlNba2V5XV07Ci0gICAgICAgIGlmIChEQl9TUEVDSUZJQ19JTlZBTElEQVRJTkdfUEFS
QU1FVEVSUyAmJiBrZXkgaW4gREJfU1BFQ0lGSUNfSU5WQUxJREFUSU5HX1BBUkFNRVRFUlMpCi0g
ICAgICAgICAgICBkZWxldGUgZ19jdXJyZW50U3RhdGVbREJfU1BFQ0lGSUNfSU5WQUxJREFUSU5H
X1BBUkFNRVRFUlNba2V5XV07Ci0gICAgfQotfQotCi0vLyBTZXRzIHRoZSBwYWdlIHN0YXRlLiBU
YWtlcyB2YXJhcmdzIG9mIGtleSwgdmFsdWUgcGFpcnMuCi1mdW5jdGlvbiBzZXRRdWVyeVBhcmFt
ZXRlcih2YXJfYXJncykKLXsKLSAgICB2YXIgcXVlcnlQYXJhbXNBc1N0YXRlID0ge307Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpICs9IDIpIHsKLSAgICAgICAg
dmFyIGtleSA9IGFyZ3VtZW50c1tpXTsKLSAgICAgICAgcXVlcnlQYXJhbXNBc1N0YXRlW2tleV0g
PSBhcmd1bWVudHNbaSArIDFdOwotICAgIH0KLQotICAgIGludmFsaWRhdGVRdWVyeVBhcmFtZXRl
cnMocXVlcnlQYXJhbXNBc1N0YXRlKTsKLQotICAgIHZhciBuZXdTdGF0ZSA9IGNvbWJpbmVkRGFz
aGJvYXJkU3RhdGUoKTsKLSAgICBmb3IgKHZhciBrZXkgaW4gcXVlcnlQYXJhbXNBc1N0YXRlKSB7
Ci0gICAgICAgIG5ld1N0YXRlW2tleV0gPSBxdWVyeVBhcmFtc0FzU3RhdGVba2V5XTsKLSAgICB9
Ci0KLSAgICAvLyBOb3RlOiBXZSB1c2Ugd2luZG93LmxvY2F0aW9uLmhhc2ggcmF0aGVyIHRoYXQg
d2luZG93LmxvY2F0aW9uLnJlcGxhY2UKLSAgICAvLyBiZWNhdXNlIG9mIGJ1Z3MgaW4gQ2hyb21l
IHdoZXJlIGV4dHJhIGVudHJpZXMgd2VyZSBnZXR0aW5nIGNyZWF0ZWQKLSAgICAvLyB3aGVuIGJh
Y2sgYnV0dG9uIHdhcyBwcmVzc2VkIGFuZCBmdWxsIHBhZ2UgbmF2aWdhdGlvbiB3YXMgb2NjdXJp
bmcuCi0gICAgLy8gRklYTUU6IGZpbGUgdGhvc2UgYnVncy4KLSAgICB3aW5kb3cubG9jYXRpb24u
aGFzaCA9IHBlcm1hTGlua1VSTEhhc2gobmV3U3RhdGUpOwotfQotCi1mdW5jdGlvbiBwZXJtYUxp
bmtVUkxIYXNoKG9wdF9zdGF0ZSkKLXsKLSAgICB2YXIgc3RhdGUgPSBvcHRfc3RhdGUgfHwgY29t
YmluZWREYXNoYm9hcmRTdGF0ZSgpOwotICAgIHJldHVybiAnIycgKyBqb2luUGFyYW1ldGVycyhz
dGF0ZSk7Ci19Ci0KLWZ1bmN0aW9uIGpvaW5QYXJhbWV0ZXJzKHN0YXRlT2JqZWN0KQotewotICAg
IHZhciBzdGF0ZSA9IFtdOwotICAgIGZvciAodmFyIGtleSBpbiBzdGF0ZU9iamVjdCkgewotICAg
ICAgICB2YXIgdmFsdWUgPSBzdGF0ZU9iamVjdFtrZXldOwotICAgICAgICBpZiAodmFsdWUgIT0g
ZGVmYXVsdFZhbHVlKGtleSkpCi0gICAgICAgICAgICBzdGF0ZS5wdXNoKGtleSArICc9JyArIGVu
Y29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGUuam9pbign
JicpOwotfQotCiAvLyBDcmVhdGUgYSBuZXcgZnVuY3Rpb24gd2l0aCBzb21lIG9mIGl0cyBhcmd1
ZW1lbnRzCiAvLyBwcmUtZmlsbGVkLgogLy8gVGFrZW4gZnJvbSBnb29nLnBhcnRpYWwgaW4gdGhl
IENsb3N1cmUgbGlicmFyeS4KQEAgLTQzNCwxNSArMjcwLDUgQEAgZnVuY3Rpb24gcGFydGlhbChm
biwgdmFyX2FyZ3MpCiAvLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBleHBlY3RhdGlvbnMgbWFw
IGZvciB0aGUgY3VycmVudCB0ZXN0VHlwZS4KIGZ1bmN0aW9uIGV4cGVjdGF0aW9uc01hcCgpCiB7
Ci0gICAgcmV0dXJuIGlzTGF5b3V0VGVzdFJlc3VsdHMoKSA/IExBWU9VVF9URVNUX0VYUEVDVEFU
SU9OU19NQVBfIDogR1RFU1RfRVhQRUNUQVRJT05TX01BUF87Ci19Ci0KLWZ1bmN0aW9uIHRvZ2ds
ZVF1ZXJ5UGFyYW1ldGVyKHBhcmFtKQotewotICAgIHNldFF1ZXJ5UGFyYW1ldGVyKHBhcmFtLCAh
cXVlcnlQYXJhbWV0ZXJWYWx1ZShwYXJhbSkpOwotfQotCi1mdW5jdGlvbiBxdWVyeVBhcmFtZXRl
clZhbHVlKHBhcmFtZXRlcikKLXsKLSAgICByZXR1cm4gZ19jdXJyZW50U3RhdGVbcGFyYW1ldGVy
XSB8fCBnX2Nyb3NzRGFzaGJvYXJkU3RhdGVbcGFyYW1ldGVyXTsKKyAgICByZXR1cm4gZ19oaXN0
b3J5LmlzTGF5b3V0VGVzdFJlc3VsdHMoKSA/IExBWU9VVF9URVNUX0VYUEVDVEFUSU9OU19NQVBf
IDogR1RFU1RfRVhQRUNUQVRJT05TX01BUF87CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9m
bGFraW5lc3NfZGFzaGJvYXJkLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzCmluZGV4IGQyNjYxYjNjODJkNGUwMzM0YTUw
MmMzMDQ5NzllYzM3YzZhMjdkMGYuLjUxMGVjZDViN2U4MzlkNDc4ZDdhNDFhNDQ2MDQyY2FmNTA2
MWIwYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2YXIgcmVzb3VyY2VMb2FkZXI7CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIGZ1bmN0aW9uIGdl
bmVyYXRlUGFnZSgpCiB7Ci0gICAgaWYgKGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS51c2VUZXN0RGF0
YSkKKyAgICBpZiAoZ19oaXN0b3J5LmNyb3NzRGFzaGJvYXJkU3RhdGUudXNlVGVzdERhdGEpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxkaXYgaWQ9
ImxvYWRpbmctdWkiPkxPQURJTkcuLi48L2Rpdj4nOwpAQCAtMTQ5LDEyICsxNDksMTIgQEAgZnVu
Y3Rpb24gZ2VuZXJhdGVQYWdlKCkKIAogICAgIC8vIHRlc3RzIGV4cGFuZHMgdG8gYWxsIHRlc3Rz
IHRoYXQgbWF0Y2ggdGhlIENTViBsaXN0LgogICAgIC8vIHJlc3VsdCBleHBhbmRzIHRvIGFsbCB0
ZXN0cyB0aGF0IGV2ZXIgaGF2ZSB0aGUgZ2l2ZW4gcmVzdWx0Ci0gICAgaWYgKGdfY3VycmVudFN0
YXRlLnRlc3RzIHx8IGdfY3VycmVudFN0YXRlLnJlc3VsdCkKKyAgICBpZiAoZ19oaXN0b3J5LmRh
c2hib2FyZFNwZWNpZmljU3RhdGUudGVzdHMgfHwgZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmlj
U3RhdGUucmVzdWx0KQogICAgICAgICBnZW5lcmF0ZVBhZ2VGb3JJbmRpdmlkdWFsVGVzdHMoaW5k
aXZpZHVhbFRlc3RzKCkpOwotICAgIGVsc2UgaWYgKGdfY3VycmVudFN0YXRlLmV4cGVjdGF0aW9u
c1VwZGF0ZSkKKyAgICBlbHNlIGlmIChnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5l
eHBlY3RhdGlvbnNVcGRhdGUpCiAgICAgICAgIGdlbmVyYXRlUGFnZUZvckV4cGVjdGF0aW9uc1Vw
ZGF0ZSgpOwogICAgIGVsc2UKLSAgICAgICAgZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihnX2N1cnJl
bnRTdGF0ZS5idWlsZGVyIHx8IGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5kZWZhdWx0QnVpbGRlcigp
KTsKKyAgICAgICAgZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihnX2hpc3RvcnkuZGFzaGJvYXJkU3Bl
Y2lmaWNTdGF0ZS5idWlsZGVyIHx8IGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5kZWZhdWx0QnVpbGRl
cigpKTsKIAogICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpCiAgICAg
ICAgIHByb2Nlc3NUZXN0UmVzdWx0c0ZvckJ1aWxkZXJBc3luYyhidWlsZGVyKTsKQEAgLTE2Niw3
ICsxNjYsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkK
IHsKICAgICBzd2l0Y2goa2V5KSB7CiAgICAgY2FzZSAndGVzdHMnOgotICAgICAgICBoaXN0b3J5
LnZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVlLAorICAgICAgICBo
aXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRl
LCBrZXksIHZhbHVlLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0cmluZy5pc1ZhbGlkTmFtZSh2YWx1ZSk7CiAgICAgICAgICAgICB9KTsKQEAgLTE3
NCw3ICsxNzQsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1
ZSkKIAogICAgIGNhc2UgJ3Jlc3VsdCc6CiAgICAgICAgIHZhbHVlID0gdmFsdWUudG9VcHBlckNh
c2UoKTsKLSAgICAgICAgaGlzdG9yeS52YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwg
a2V5LCB2YWx1ZSwKKyAgICAgICAgaGlzdG9yeS52YWxpZGF0ZVBhcmFtZXRlcihnX2hpc3Rvcnku
ZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZSwga2V5LCB2YWx1ZSwKICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdCBpbiBMQVlPVVRfVEVTVF9FWFBF
Q1RBVElPTlNfTUFQXykgewogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTEFZT1VU
X1RFU1RfRVhQRUNUQVRJT05TX01BUF9bcmVzdWx0XSkKQEAgLTE4NSw3ICsxODUsNyBAQCBmdW5j
dGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBjYXNlICdidWlsZGVyJzoKLSAgICAgICAgaGlzdG9yeS52YWxpZGF0ZVBh
cmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKKyAgICAgICAgaGlzdG9yeS52YWxp
ZGF0ZVBhcmFtZXRlcihnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZSwga2V5LCB2YWx1
ZSwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHJldHVybiB2YWx1
ZSBpbiBjdXJyZW50QnVpbGRlcnMoKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTkzLDEwICsxOTMs
MTAgQEAgZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSAnc29ydENvbHVtbic6Ci0gICAgICAgIGhpc3Rv
cnkudmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCisgICAgICAg
IGhpc3RvcnkudmFsaWRhdGVQYXJhbWV0ZXIoZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3Rh
dGUsIGtleSwgdmFsdWUsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICAvLyBHZXQgYWxsIHBvc3NpYmxlIGhlYWRlcnMgc2luY2UgdGhlIGFjdHVhbCB1c2VkIHNldCBv
ZiBoZWFkZXJzCi0gICAgICAgICAgICAgICAgLy8gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIGluIGdf
Y3VycmVudFN0YXRlLCB3aGljaCBhcmUgY3VycmVudGx5IGJlaW5nIHNldC4KKyAgICAgICAgICAg
ICAgICAvLyBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgaW4gZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNp
ZmljU3RhdGUsIHdoaWNoIGFyZSBjdXJyZW50bHkgYmVpbmcgc2V0LgogICAgICAgICAgICAgICAg
IHZhciBoZWFkZXJzID0gdGFibGVIZWFkZXJzKHRydWUpOwogICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gc29ydENvbHVtbkZyb21UYWJsZUhlYWRlcihoZWFkZXJzW2ldKSkKQEAg
LTIwNyw3ICsyMDcsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2
YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlICdzb3J0T3JkZXInOgotICAg
ICAgICBoaXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVl
LAorICAgICAgICBoaXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfaGlzdG9yeS5kYXNoYm9hcmRT
cGVjaWZpY1N0YXRlLCBrZXksIHZhbHVlLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09IEZPUldBUkQgfHwgdmFsdWUgPT0gQkFDS1dBUkQ7
CiAgICAgICAgICAgICB9KTsKQEAgLTIxNiw3ICsyMTYsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxp
ZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICBjYXNlICdyZXN1bHRzSGVpZ2h0JzoKICAg
ICBjYXNlICd1cGRhdGVJbmRleCc6CiAgICAgY2FzZSAncmV2aXNpb24nOgotICAgICAgICBoaXN0
b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIE51bWJlcih2YWx1ZSks
CisgICAgICAgIGhpc3RvcnkudmFsaWRhdGVQYXJhbWV0ZXIoZ19oaXN0b3J5LmRhc2hib2FyZFNw
ZWNpZmljU3RhdGUsIGtleSwgTnVtYmVyKHZhbHVlKSwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXlxkKyQvKTsKICAgICAgICAg
ICAgIH0pOwpAQCAtMjM0LDcgKzIzNCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFt
ZXRlcihrZXksIHZhbHVlKQogICAgIGNhc2UgJ3Nob3dVbmV4cGVjdGVkUGFzc2VzJzoKICAgICBj
YXNlICdzaG93V29udEZpeFNraXAnOgogICAgIGNhc2UgJ2V4cGVjdGF0aW9uc1VwZGF0ZSc6Ci0g
ICAgICAgIGdfY3VycmVudFN0YXRlW2tleV0gPSB2YWx1ZSA9PSAndHJ1ZSc7CisgICAgICAgIGdf
aGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlW2tleV0gPSB2YWx1ZSA9PSAndHJ1ZSc7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZGVmYXVsdDoKQEAgLTI1MCwxMiArMjUwLDEyIEBA
IGdfZGVmYXVsdERhc2hib2FyZFNwZWNpZmljU3RhdGVWYWx1ZXMgPSB7CiAgICAgc2hvd0xhcmdl
RXhwZWN0YXRpb25zOiBmYWxzZSwKICAgICBsZWdhY3lFeHBlY3RhdGlvbnNTZW1hbnRpY3M6IHRy
dWUsCiAgICAgc2hvd0Nocm9tZTogdHJ1ZSwKLSAgICBzaG93Q29ycmVjdEV4cGVjdGF0aW9uczog
IWlzTGF5b3V0VGVzdFJlc3VsdHMoKSwKLSAgICBzaG93V3JvbmdFeHBlY3RhdGlvbnM6ICFpc0xh
eW91dFRlc3RSZXN1bHRzKCksCi0gICAgc2hvd1dvbnRGaXhTa2lwOiAhaXNMYXlvdXRUZXN0UmVz
dWx0cygpLAotICAgIHNob3dTbG93OiAhaXNMYXlvdXRUZXN0UmVzdWx0cygpLAotICAgIHNob3dT
a2lwcGVkOiAhaXNMYXlvdXRUZXN0UmVzdWx0cygpLAotICAgIHNob3dVbmV4cGVjdGVkUGFzc2Vz
OiAhaXNMYXlvdXRUZXN0UmVzdWx0cygpLAorICAgIHNob3dDb3JyZWN0RXhwZWN0YXRpb25zOiAh
Z19oaXN0b3J5LmlzTGF5b3V0VGVzdFJlc3VsdHMoKSwKKyAgICBzaG93V3JvbmdFeHBlY3RhdGlv
bnM6ICFnX2hpc3RvcnkuaXNMYXlvdXRUZXN0UmVzdWx0cygpLAorICAgIHNob3dXb250Rml4U2tp
cDogIWdfaGlzdG9yeS5pc0xheW91dFRlc3RSZXN1bHRzKCksCisgICAgc2hvd1Nsb3c6ICFnX2hp
c3RvcnkuaXNMYXlvdXRUZXN0UmVzdWx0cygpLAorICAgIHNob3dTa2lwcGVkOiAhZ19oaXN0b3J5
LmlzTGF5b3V0VGVzdFJlc3VsdHMoKSwKKyAgICBzaG93VW5leHBlY3RlZFBhc3NlczogIWdfaGlz
dG9yeS5pc0xheW91dFRlc3RSZXN1bHRzKCksCiAgICAgZXhwZWN0YXRpb25zVXBkYXRlOiBmYWxz
ZSwKICAgICB1cGRhdGVJbmRleDogMCwKICAgICByZXN1bHRzSGVpZ2h0OiAzMDAsCkBAIC0zOTQs
NyArMzk0LDcgQEAgZnVuY3Rpb24gcGxhdGZvcm1BbmRCdWlsZFR5cGUoYnVpbGRlck5hbWUpCiAg
ICAgICAgIHZhciBidWlsZGVyTmFtZVVwcGVyQ2FzZSA9IGJ1aWxkZXJOYW1lLnRvVXBwZXJDYXNl
KCk7CiAgICAgICAgIAogICAgICAgICB2YXIgcGxhdGZvcm0gPSAnJzsKLSAgICAgICAgaWYgKGlz
TGF5b3V0VGVzdFJlc3VsdHMoKSAmJiBjdXJyZW50QnVpbGRlckdyb3VwTmFtZSgpID09ICdAVG9U
IC0gd2Via2l0Lm9yZycgJiYgIXN0cmluZy5jb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwg
J0NIUk9NSVVNJykpCisgICAgICAgIGlmIChnX2hpc3RvcnkuaXNMYXlvdXRUZXN0UmVzdWx0cygp
ICYmIGN1cnJlbnRCdWlsZGVyR3JvdXBOYW1lKCkgPT0gJ0BUb1QgLSB3ZWJraXQub3JnJyAmJiAh
c3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnQ0hST01JVU0nKSkKICAgICAg
ICAgICAgIHBsYXRmb3JtID0gbm9uQ2hyb21pdW1QbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2Fz
ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBsYXRmb3JtID0gY2hyb21pdW1QbGF0Zm9y
bShidWlsZGVyTmFtZVVwcGVyQ2FzZSk7CkBAIC00OTgsMTAgKzQ5OCwxMCBAQCBmdW5jdGlvbiBn
ZXRBbGxUZXN0c1RyaWUoKQogLy8gdGVzdHMgaW4gdGhlIGRpcmVjdG9yeS4KIGZ1bmN0aW9uIGlu
ZGl2aWR1YWxUZXN0cygpCiB7Ci0gICAgaWYgKGdfY3VycmVudFN0YXRlLnJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIGFsbFRlc3RzV2l0aFJlc3VsdChnX2N1cnJlbnRTdGF0ZS5yZXN1bHQpOworICAg
IGlmIChnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5yZXN1bHQpCisgICAgICAgIHJl
dHVybiBhbGxUZXN0c1dpdGhSZXN1bHQoZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUu
cmVzdWx0KTsKIAotICAgIGlmICghZ19jdXJyZW50U3RhdGUudGVzdHMpCisgICAgaWYgKCFnX2hp
c3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS50ZXN0cykKICAgICAgICAgcmV0dXJuIFtdOwog
CiAgICAgcmV0dXJuIGluZGl2aWR1YWxUZXN0c0ZvclN1YnN0cmluZ0xpc3QoKTsKQEAgLTUxMCwx
MSArNTEwLDExIEBAIGZ1bmN0aW9uIGluZGl2aWR1YWxUZXN0cygpCiBmdW5jdGlvbiBzdWJzdHJp
bmdMaXN0KCkKIHsKICAgICAvLyBDb252ZXJ0IHdpbmRvd3Mgc2xhc2hlcyB0byB1bml4IHNsYXNo
ZXMuCi0gICAgdmFyIHRlc3RzID0gZ19jdXJyZW50U3RhdGUudGVzdHMucmVwbGFjZSgvXFwvZywg
Jy8nKTsKKyAgICB2YXIgdGVzdHMgPSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS50
ZXN0cy5yZXBsYWNlKC9cXC9nLCAnLycpOwogICAgIHZhciBzZXBhcmF0b3IgPSBzdHJpbmcuY29u
dGFpbnModGVzdHMsICcgJykgPyAnICcgOiAnLCc7CiAgICAgdmFyIHRlc3RMaXN0ID0gdGVzdHMu
c3BsaXQoc2VwYXJhdG9yKTsKIAotICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkpCisgICAg
aWYgKGdfaGlzdG9yeS5pc0xheW91dFRlc3RSZXN1bHRzKCkpCiAgICAgICAgIHJldHVybiB0ZXN0
TGlzdDsKIAogICAgIHZhciB0ZXN0TGlzdFdpdGhvdXRNb2RpZmllcnMgPSBbXTsKQEAgLTEwNTUs
MTQgKzEwNTUsMTQgQEAgZnVuY3Rpb24gcHJvY2Vzc01pc3NpbmdBbmRFeHRyYUV4cGVjdGF0aW9u
cyhyZXN1bHRzRm9yVGVzdCkKICAgICB2YXIgbWlzc2luZ0V4cGVjdGF0aW9ucyA9IFtdOwogICAg
IHZhciBleHRyYUV4cGVjdGF0aW9ucyA9IFtdOwogCi0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3Vs
dHMoKSkgeworICAgIGlmIChnX2hpc3RvcnkuaXNMYXlvdXRUZXN0UmVzdWx0cygpKSB7CiAgICAg
ICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IHJlc3VsdHNGb3JUZXN0LmV4cGVjdGF0aW9ucyA/
IHJlc3VsdHNGb3JUZXN0LmV4cGVjdGF0aW9ucy5zcGxpdCgnICcpIDogW107CiAgICAgICAgIGV4
dHJhRXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zQXJyYXkuZmlsdGVyKAogICAgICAgICAgICAg
ZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmNlIGFsbCB0
aGUgRkFJTCBsaW5lcyBhcmUgcmVtb3ZlZCBmcm9tCiAgICAgICAgICAgICAgICAgLy8gVGVzdEV4
cGVjdGF0aW9ucywgZGVsZXRlIGFsbCB0aGUgbGVnYWN5RXhwZWN0YXRpb25zU2VtYW50aWNzCiAg
ICAgICAgICAgICAgICAgLy8gY29kZS4KLSAgICAgICAgICAgICAgICBpZiAoZ19jdXJyZW50U3Rh
dGUubGVnYWN5RXhwZWN0YXRpb25zU2VtYW50aWNzKSB7CisgICAgICAgICAgICAgICAgaWYgKGdf
aGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLmxlZ2FjeUV4cGVjdGF0aW9uc1NlbWFudGlj
cykgewogICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSAnRkFJTCcpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRkFJTF9SRVNVTFRTLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdHNNYXBbRkFJ
TF9SRVNVTFRTW2ldXSkKQEAgLTEwODMsNyArMTA4Myw3IEBAIGZ1bmN0aW9uIHByb2Nlc3NNaXNz
aW5nQW5kRXh0cmFFeHBlY3RhdGlvbnMocmVzdWx0c0ZvclRlc3QpCiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IE9uY2UgYWxsIHRoZSBGQUlMIGxpbmVzIGFyZSByZW1vdmVkIGZyb20KICAgICAg
ICAgICAgICAgICAvLyBUZXN0RXhwZWN0YXRpb25zLCBkZWxldGUgYWxsIHRoZSBsZWdhY3lFeHBl
Y3RhdGlvbnNTZW1hbnRpY3MKICAgICAgICAgICAgICAgICAvLyBjb2RlLgotICAgICAgICAgICAg
ICAgIGlmIChnX2N1cnJlbnRTdGF0ZS5sZWdhY3lFeHBlY3RhdGlvbnNTZW1hbnRpY3MpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUubGVnYWN5
RXhwZWN0YXRpb25zU2VtYW50aWNzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3Rh
dGlvbiA9PSAnRkFJTCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgRkFJTF9SRVNVTFRTLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBGQUlMX1JFU1VMVFNbal0pIHsKQEAgLTEyMDYsNyArMTIwNiw3
IEBAIGZ1bmN0aW9uIGluZGV4ZXNGb3JGYWlsdXJlcyhidWlsZGVyLCB0ZXN0TmFtZSkKIC8vIFJl
dHVybnMgdGhlIHBhdGggdG8gdGhlIGZhaWx1cmUgbG9nIGZvciB0aGlzIG5vbi13ZWJraXQgdGVz
dC4KIGZ1bmN0aW9uIHBhdGhUb0ZhaWx1cmVMb2codGVzdE5hbWUpCiB7Ci0gICAgcmV0dXJuICcv
c3RlcHMvJyArIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSArICcvbG9ncy8nICsgdGVz
dE5hbWUuc3BsaXQoJy4nKVsxXQorICAgIHJldHVybiAnL3N0ZXBzLycgKyBnX2hpc3RvcnkuY3Jv
c3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSArICcvbG9ncy8nICsgdGVzdE5hbWUuc3BsaXQoJy4n
KVsxXQogfQogCiBmdW5jdGlvbiBzaG93UG9wdXBGb3JCdWlsZChlLCBidWlsZGVyLCBpbmRleCwg
b3B0X3Rlc3ROYW1lKQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgZnVuY3Rpb24gc2hvd1BvcHVwRm9y
QnVpbGQoZSwgYnVpbGRlciwgaW5kZXgsIG9wdF90ZXN0TmFtZSkKIAogICAgIGlmIChtYXN0ZXIu
bmFtZSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKICAgICAgICAgdmFyIHJldmlzaW9uID0g
Z19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLndlYmtpdFJldmlzaW9uW2luZGV4XTsKLSAgICAg
ICAgaHRtbCArPSAnPGxpPjxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVlcnlQYXJhbWV0
ZXIoXCdyZXZpc2lvblwnLCcgKworICAgICAgICBodG1sICs9ICc8bGk+PHNwYW4gY2xhc3M9bGlu
ayBvbmNsaWNrPSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCcgKwog
ICAgICAgICAgICAgcmV2aXNpb24gKyAnKSI+U2hvdyByZXN1bHRzIGZvciBXZWJLaXQgcicgKyBy
ZXZpc2lvbiArCiAgICAgICAgICAgICAnPC9zcGFuPjwvbGk+JzsKICAgICB9IGVsc2UgewpAQCAt
MTI0MiwxMyArMTI0MiwxMyBAQCBmdW5jdGlvbiBzaG93UG9wdXBGb3JCdWlsZChlLCBidWlsZGVy
LCBpbmRleCwgb3B0X3Rlc3ROYW1lKQogICAgICAgICAgICAgJzwvbGk+JzsKIAogICAgICAgICB2
YXIgY2hyb21lUmV2aXNpb24gPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0uY2hyb21lUmV2
aXNpb25baW5kZXhdOwotICAgICAgICBpZiAoY2hyb21lUmV2aXNpb24gJiYgaXNMYXlvdXRUZXN0
UmVzdWx0cygpKSB7CisgICAgICAgIGlmIChjaHJvbWVSZXZpc2lvbiAmJiBnX2hpc3RvcnkuaXNM
YXlvdXRUZXN0UmVzdWx0cygpKSB7CiAgICAgICAgICAgICBodG1sICs9ICc8bGk+PGEgaHJlZj0i
JyArIFRFU1RfUkVTVUxUU19CQVNFX1BBVEggKyBjdXJyZW50QnVpbGRlcnMoKVtidWlsZGVyXSAr
CiAgICAgICAgICAgICAgICAgJy8nICsgY2hyb21lUmV2aXNpb24gKyAnL2xheW91dC10ZXN0LXJl
c3VsdHMuemlwIj5sYXlvdXQtdGVzdC1yZXN1bHRzLnppcDwvYT48L2xpPic7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoIWlzTGF5b3V0VGVzdFJlc3VsdHMoKSAmJiBvcHRfdGVzdE5hbWUg
JiYgaXNGYWlsdXJlKGJ1aWxkZXIsIG9wdF90ZXN0TmFtZSwgaW5kZXgpKQorICAgIGlmICghZ19o
aXN0b3J5LmlzTGF5b3V0VGVzdFJlc3VsdHMoKSAmJiBvcHRfdGVzdE5hbWUgJiYgaXNGYWlsdXJl
KGJ1aWxkZXIsIG9wdF90ZXN0TmFtZSwgaW5kZXgpKQogICAgICAgICBodG1sICs9ICc8bGk+JyAr
IGxpbmtIVE1MVG9PcGVuV2luZG93KGJ1aWxkQmFzZVBhdGggKyBwYXRoVG9GYWlsdXJlTG9nKG9w
dF90ZXN0TmFtZSksICdGYWlsdXJlIGxvZycpICsgJzwvbGk+JzsKIAogICAgIGh0bWwgKz0gJzwv
dWw+JzsKQEAgLTEzMTksMjMgKzEzMTksMjMgQEAgZnVuY3Rpb24gaHRtbEZvclRlc3RzV2l0aEV4
cGVjdGF0aW9uc0J1dE5vRmFpbHVyZXMoYnVpbGRlcikKICAgICBpZiAodGVzdHMubGVuZ3RoIHx8
IHNraXBwZWRQYXRocy5sZW5ndGgpIHsKICAgICAgICAgdmFyIGJ1aWxkSW5mbyA9IHBsYXRmb3Jt
QW5kQnVpbGRUeXBlKGJ1aWxkZXIpOwogICAgICAgICBodG1sICs9ICc8aDIgc3R5bGU9ImRpc3Bs
YXk6aW5saW5lLWJsb2NrIj5FeHBlY3RhdGlvbnMgZm9yICcgKyBidWlsZEluZm8ucGxhdGZvcm0g
KyAnLScgKyBidWlsZEluZm8uYnVpbGRUeXBlICsgJzwvaDI+ICc7Ci0gICAgICAgIGlmICghZ19j
dXJyZW50U3RhdGUuc2hvd1VuZXhwZWN0ZWRQYXNzZXMgJiYgdGVzdHMubGVuZ3RoKQorICAgICAg
ICBpZiAoIWdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dVbmV4cGVjdGVkUGFz
c2VzICYmIHRlc3RzLmxlbmd0aCkKICAgICAgICAgICAgIGh0bWwgKz0gc2hvd1VuZXhwZWN0ZWRQ
YXNzZXNMaW5rOwogICAgICAgICBodG1sICs9ICcgJzsKLSAgICAgICAgaWYgKCFnX2N1cnJlbnRT
dGF0ZS5zaG93U2tpcHBlZCAmJiBza2lwcGVkUGF0aHMubGVuZ3RoKQorICAgICAgICBpZiAoIWdf
aGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dTa2lwcGVkICYmIHNraXBwZWRQYXRo
cy5sZW5ndGgpCiAgICAgICAgICAgICBodG1sICs9IHNob3dTa2lwcGVkTGluazsKICAgICB9CiAK
ICAgICB2YXIgb3BlbiA9ICc8ZGl2IG9uY2xpY2s9InNlbGVjdENvbnRlbnRzKHRoaXMpIj4nOwog
Ci0gICAgaWYgKGdfY3VycmVudFN0YXRlLnNob3dVbmV4cGVjdGVkUGFzc2VzICYmIHRlc3RzLmxl
bmd0aCkgeworICAgIGlmIChnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5zaG93VW5l
eHBlY3RlZFBhc3NlcyAmJiB0ZXN0cy5sZW5ndGgpIHsKICAgICAgICAgaHRtbCArPSAnPGRpdiBp
ZD0icGFzc2luZy10ZXN0cyI+JyArIHNob3dVbmV4cGVjdGVkUGFzc2VzTGluazsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgIGh0bWwg
Kz0gb3BlbiArIHRlc3RzW2ldLnRlc3QgKyAnPC9kaXY+JzsKICAgICAgICAgaHRtbCArPSAnPC9k
aXY+JzsKICAgICB9CiAKLSAgICBpZiAoZ19jdXJyZW50U3RhdGUuc2hvd1NraXBwZWQgJiYgc2tp
cHBlZFBhdGhzLmxlbmd0aCkKKyAgICBpZiAoZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3Rh
dGUuc2hvd1NraXBwZWQgJiYgc2tpcHBlZFBhdGhzLmxlbmd0aCkKICAgICAgICAgaHRtbCArPSAn
PGRpdiBpZD0ic2tpcHBlZC10ZXN0cyI+JyArIHNob3dTa2lwcGVkTGluayArIG9wZW4gKyBza2lw
cGVkUGF0aHMuam9pbignPC9kaXY+JyArIG9wZW4pICsgJzwvZGl2PjwvZGl2Pic7CiAgICAgcmV0
dXJuIGh0bWwgKyAnPGJyPic7CiB9CkBAIC0xMzQ0LDE4ICsxMzQ0LDE4IEBAIGZ1bmN0aW9uIGh0
bWxGb3JUZXN0c1dpdGhFeHBlY3RhdGlvbnNCdXROb0ZhaWx1cmVzKGJ1aWxkZXIpCiBmdW5jdGlv
biBzaG91bGRIaWRlVGVzdCh0ZXN0UmVzdWx0KQogewogICAgIGlmICh0ZXN0UmVzdWx0LmlzV29u
dEZpeFNraXApCi0gICAgICAgIHJldHVybiAhZ19jdXJyZW50U3RhdGUuc2hvd1dvbnRGaXhTa2lw
OworICAgICAgICByZXR1cm4gIWdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dX
b250Rml4U2tpcDsKIAogICAgIGlmICh0ZXN0UmVzdWx0LmlzRmxha3kpCi0gICAgICAgIHJldHVy
biAhZ19jdXJyZW50U3RhdGUuc2hvd0ZsYWt5OworICAgICAgICByZXR1cm4gIWdfaGlzdG9yeS5k
YXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dGbGFreTsKIAogICAgIGlmIChpc1Nsb3dUZXN0KHRl
c3RSZXN1bHQpKQotICAgICAgICByZXR1cm4gIWdfY3VycmVudFN0YXRlLnNob3dTbG93OworICAg
ICAgICByZXR1cm4gIWdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dTbG93Owog
CiAgICAgaWYgKHRlc3RSZXN1bHQubWVldHNFeHBlY3RhdGlvbnMpCi0gICAgICAgIHJldHVybiAh
Z19jdXJyZW50U3RhdGUuc2hvd0NvcnJlY3RFeHBlY3RhdGlvbnM7CisgICAgICAgIHJldHVybiAh
Z19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuc2hvd0NvcnJlY3RFeHBlY3RhdGlvbnM7
CiAKLSAgICByZXR1cm4gIWdfY3VycmVudFN0YXRlLnNob3dXcm9uZ0V4cGVjdGF0aW9uczsKKyAg
ICByZXR1cm4gIWdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dXcm9uZ0V4cGVj
dGF0aW9uczsKIH0KIAogLy8gU2V0cyB0aGUgYnJvd3NlcidzIHNlbGVjdGlvbiB0byB0aGUgZWxl
bWVudCdzIGNvbnRlbnRzLgpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgZnVuY3Rpb24gY3JlYXRlQnVn
SFRNTCh0ZXN0KQogCiBmdW5jdGlvbiBpc0Nyb3NzQnVpbGRlclZpZXcoKQogewotICAgIHJldHVy
biBnX2N1cnJlbnRTdGF0ZS50ZXN0cyB8fCBnX2N1cnJlbnRTdGF0ZS5yZXN1bHQgfHwgZ19jdXJy
ZW50U3RhdGUuZXhwZWN0YXRpb25zVXBkYXRlOworICAgIHJldHVybiBnX2hpc3RvcnkuZGFzaGJv
YXJkU3BlY2lmaWNTdGF0ZS50ZXN0cyB8fCBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0
ZS5yZXN1bHQgfHwgZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuZXhwZWN0YXRpb25z
VXBkYXRlOwogfQogCiBmdW5jdGlvbiB0YWJsZUhlYWRlcnMob3B0X2dldEFsbCkKQEAgLTEzOTEs
NyArMTM5MSw3IEBAIGZ1bmN0aW9uIHRhYmxlSGVhZGVycyhvcHRfZ2V0QWxsKQogICAgIGlmICgh
aXNDcm9zc0J1aWxkZXJWaWV3KCkgfHwgb3B0X2dldEFsbCkKICAgICAgICAgaGVhZGVycy5wdXNo
KCd0ZXN0Jyk7CiAKLSAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpIHx8IG9wdF9nZXRBbGwp
CisgICAgaWYgKGdfaGlzdG9yeS5pc0xheW91dFRlc3RSZXN1bHRzKCkgfHwgb3B0X2dldEFsbCkK
ICAgICAgICAgaGVhZGVycy5wdXNoKCdidWdzJywgJ21vZGlmaWVycycsICdleHBlY3RhdGlvbnMn
KTsKIAogICAgIGhlYWRlcnMucHVzaCgnc2xvd2VzdCBydW4nLCAnZmxha2luZXNzIChudW1iZXJz
IGFyZSBydW50aW1lcyBpbiBzZWNvbmRzKScpOwpAQCAtMTQxNyw3ICsxNDE3LDcgQEAgZnVuY3Rp
b24gaHRtbEZvclNpbmdsZVRlc3RSb3codGVzdCkKICAgICAgICAgICAgIC8vIHdpdGggcmVzdWx0
cyBmb3IgbWFueSBidWlsZGVycywgc28gdGhlIGZpcnN0IGNvbHVtbiBpcyBidWlsZGVyIG5hbWVz
CiAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRlc3QgcGF0aHMuCiAgICAgICAgICAgICB2YXIg
dGVzdENlbGxDbGFzc05hbWUgPSAndGVzdC1saW5rJyArIChpc0Nyb3NzQnVpbGRlclZpZXcoKSA/
ICcgYnVpbGRlci1uYW1lJyA6ICcnKTsKLSAgICAgICAgICAgIHZhciB0ZXN0Q2VsbEhUTUwgPSBp
c0Nyb3NzQnVpbGRlclZpZXcoKSA/IHRlc3QuYnVpbGRlciA6ICc8c3BhbiBjbGFzcz0ibGluayIg
b25jbGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCd0ZXN0c1wnLFwnJyArIHRlc3QudGVzdCArJ1wn
KTsiPicgKyB0ZXN0LnRlc3QgKyAnPC9zcGFuPic7CisgICAgICAgICAgICB2YXIgdGVzdENlbGxI
VE1MID0gaXNDcm9zc0J1aWxkZXJWaWV3KCkgPyB0ZXN0LmJ1aWxkZXIgOiAnPHNwYW4gY2xhc3M9
ImxpbmsiIG9uY2xpY2s9ImdfaGlzdG9yeS5zZXRRdWVyeVBhcmFtZXRlcihcJ3Rlc3RzXCcsXCcn
ICsgdGVzdC50ZXN0ICsnXCcpOyI+JyArIHRlc3QudGVzdCArICc8L3NwYW4+JzsKIAogICAgICAg
ICAgICAgaHRtbCArPSAnPHRyPjx0ZCBjbGFzcz0iJyArIHRlc3RDZWxsQ2xhc3NOYW1lICsgJyI+
JyArIHRlc3RDZWxsSFRNTDsKICAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcuc3RhcnRzV2l0aCho
ZWFkZXIsICdidWdzJykpCkBAIC0xNDQzLDggKzE0NDMsOCBAQCBmdW5jdGlvbiBodG1sRm9yVGFi
bGVDb2x1bW5IZWFkZXIoaGVhZGVyTmFtZSwgb3B0X2ZpbGxDb2xTcGFuKQogewogICAgIC8vIFVz
ZSB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgaGVhZGVyIHRpdGxlIGFzIHRoZSBzb3J0a2V5CiAgICAg
dmFyIHRoaXNTb3J0VmFsdWUgPSBzb3J0Q29sdW1uRnJvbVRhYmxlSGVhZGVyKGhlYWRlck5hbWUp
OwotICAgIHZhciBhcnJvd0hUTUwgPSB0aGlzU29ydFZhbHVlID09IGdfY3VycmVudFN0YXRlLnNv
cnRDb2x1bW4gPwotICAgICAgICAnPHNwYW4gY2xhc3M9JyArIGdfY3VycmVudFN0YXRlLnNvcnRP
cmRlciArICc+JyArIChnX2N1cnJlbnRTdGF0ZS5zb3J0T3JkZXIgPT0gRk9SV0FSRCA/ICcmdWFy
cjsnIDogJyZkYXJyOycgKSArICc8L3NwYW4+JyA6ICcnOworICAgIHZhciBhcnJvd0hUTUwgPSB0
aGlzU29ydFZhbHVlID09IGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNvcnRDb2x1
bW4gPworICAgICAgICAnPHNwYW4gY2xhc3M9JyArIGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZp
Y1N0YXRlLnNvcnRPcmRlciArICc+JyArIChnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0
ZS5zb3J0T3JkZXIgPT0gRk9SV0FSRCA/ICcmdWFycjsnIDogJyZkYXJyOycgKSArICc8L3NwYW4+
JyA6ICcnOwogICAgIHJldHVybiAnPHRoIHNvcnRWYWx1ZT0nICsgdGhpc1NvcnRWYWx1ZSArCiAg
ICAgICAgIC8vIEV4dGVuZCBsYXN0IHRoIHRocm91Z2ggYWxsIHRoZSByZXN0IG9mIHRoZSBjb2x1
bW5zLgogICAgICAgICAob3B0X2ZpbGxDb2xTcGFuID8gJyBjb2xzcGFuPTEwMDAwJyA6ICcnKSAr
CkBAIC0xNTIwLDEyICsxNTIwLDEyIEBAIGZ1bmN0aW9uIGNoYW5nZVNvcnQoZSkKIAogICAgIHZh
ciBzb3J0ID0gJ3NvcnRDb2x1bW4nOwogICAgIHZhciBvcmRlcktleSA9ICdzb3J0T3JkZXInOwot
ICAgIGlmIChzb3J0VmFsdWUgPT0gZ19jdXJyZW50U3RhdGVbc29ydF0gJiYgZ19jdXJyZW50U3Rh
dGVbb3JkZXJLZXldID09IEZPUldBUkQpCisgICAgaWYgKHNvcnRWYWx1ZSA9PSBnX2hpc3Rvcnku
ZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVtzb3J0XSAmJiBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lm
aWNTdGF0ZVtvcmRlcktleV0gPT0gRk9SV0FSRCkKICAgICAgICAgb3JkZXIgPSBCQUNLV0FSRDsK
ICAgICBlbHNlCiAgICAgICAgIG9yZGVyID0gRk9SV0FSRDsKIAotICAgIHNldFF1ZXJ5UGFyYW1l
dGVyKHNvcnQsIHNvcnRWYWx1ZSwgb3JkZXJLZXksIG9yZGVyKTsKKyAgICBnX2hpc3Rvcnkuc2V0
UXVlcnlQYXJhbWV0ZXIoc29ydCwgc29ydFZhbHVlLCBvcmRlcktleSwgb3JkZXIpOwogfQogCiBm
dW5jdGlvbiBzb3J0VGVzdHModGVzdHMsIGNvbHVtbiwgb3JkZXIpCkBAIC0xNjA5LDggKzE2MDks
OCBAQCBmdW5jdGlvbiByZWFsTW9kaWZpZXJzKG1vZGlmaWVyU3RyaW5nKQogZnVuY3Rpb24gZ2Vu
ZXJhdGVQYWdlRm9yRXhwZWN0YXRpb25zVXBkYXRlKCkKIHsKICAgICAvLyBBbHdheXMgc2hvdyBh
bGwgcnVucyB3aGVuIGF1dG8tdXBkYXRpbmcgZXhwZWN0YXRpb25zLgotICAgIGlmICghZ19jcm9z
c0Rhc2hib2FyZFN0YXRlLnNob3dBbGxSdW5zKQotICAgICAgICBzZXRRdWVyeVBhcmFtZXRlcign
c2hvd0FsbFJ1bnMnLCB0cnVlKTsKKyAgICBpZiAoIWdfaGlzdG9yeS5jcm9zc0Rhc2hib2FyZFN0
YXRlLnNob3dBbGxSdW5zKQorICAgICAgICBnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIoJ3No
b3dBbGxSdW5zJywgdHJ1ZSk7CiAKICAgICBwcm9jZXNzVGVzdFJ1bnNGb3JBbGxCdWlsZGVycygp
OwogICAgIHZhciB0ZXN0c05lZWRpbmdVcGRhdGUgPSB7fTsKQEAgLTE2NTYsMTMgKzE2NTYsMTMg
QEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRpb25zVXBkYXRlKCkKIC8vIEBwYXJh
bSB7QXJyYXkuPHN0cmluZz59IGtleXMgS2V5cyBpbnRvIHRoZSB0ZXN0TmVlZGluZ1VwZGF0ZSBv
YmplY3QuCiBmdW5jdGlvbiBzaG93VXBkYXRlSW5mb0ZvclRlc3QodGVzdHNOZWVkaW5nVXBkYXRl
LCBrZXlzKQogewotICAgIHZhciB0ZXN0ID0ga2V5c1tnX2N1cnJlbnRTdGF0ZS51cGRhdGVJbmRl
eF07CisgICAgdmFyIHRlc3QgPSBrZXlzW2dfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRl
LnVwZGF0ZUluZGV4XTsKICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICcnOwogCiAgICAg
Ly8gRklYTUU6IE1ha2UgdGhpcyBET00gY3JlYXRpb24gbGVzcyB2ZXJib3NlLgogICAgIHZhciBp
bmRleCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIGluZGV4LnN0eWxlLmNz
c0Zsb2F0ID0gJ3JpZ2h0JzsKLSAgICBpbmRleC50ZXh0Q29udGVudCA9IChnX2N1cnJlbnRTdGF0
ZS51cGRhdGVJbmRleCArIDEpICsgJyBvZiAnICsga2V5cy5sZW5ndGggKyAnIHRlc3RzJzsKKyAg
ICBpbmRleC50ZXh0Q29udGVudCA9IChnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS51
cGRhdGVJbmRleCArIDEpICsgJyBvZiAnICsga2V5cy5sZW5ndGggKyAnIHRlc3RzJzsKICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGluZGV4KTsKIAogICAgIHZhciBidXR0b25SZWdpb24g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIGZ1
bmN0aW9uIHNob3dVcGRhdGVJbmZvRm9yVGVzdCh0ZXN0c05lZWRpbmdVcGRhdGUsIGtleXMpCiAg
ICAgcHJldmlvdXNCdG4udmFsdWUgPSAncHJldmlvdXMnOwogICAgIHByZXZpb3VzQnRuLmFkZEV2
ZW50TGlzdGVuZXIoJ2NsaWNrJywKICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgc2V0
VXBkYXRlSW5kZXgoZ19jdXJyZW50U3RhdGUudXBkYXRlSW5kZXggLSAxLCB0ZXN0c05lZWRpbmdV
cGRhdGUsIGtleXMpOworICAgICAgICAgIHNldFVwZGF0ZUluZGV4KGdfaGlzdG9yeS5kYXNoYm9h
cmRTcGVjaWZpY1N0YXRlLnVwZGF0ZUluZGV4IC0gMSwgdGVzdHNOZWVkaW5nVXBkYXRlLCBrZXlz
KTsKICAgICAgICAgfSwKICAgICAgICAgZmFsc2UpOwogICAgIGJ1dHRvblJlZ2lvbi5hcHBlbmRD
aGlsZChwcmV2aW91c0J0bik7CkBAIC0xNzM5LDcgKzE3MzksNyBAQCBmdW5jdGlvbiBmaW5pc2hV
cGRhdGUoKQogLy8gQHBhcmFtIHtBcnJheS48c3RyaW5nPn0ga2V5cyBLZXlzIGludG8gdGhlIHRl
c3ROZWVkaW5nVXBkYXRlIG9iamVjdC4KIGZ1bmN0aW9uIGhhbmRsZVVwZGF0ZSh0ZXN0c05lZWRp
bmdVcGRhdGUsIGtleXMpCiB7Ci0gICAgdmFyIHRlc3QgPSBrZXlzW2dfY3VycmVudFN0YXRlLnVw
ZGF0ZUluZGV4XTsKKyAgICB2YXIgdGVzdCA9IGtleXNbZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNp
ZmljU3RhdGUudXBkYXRlSW5kZXhdOwogICAgIHZhciB1cGRhdGVzID0gdGVzdHNOZWVkaW5nVXBk
YXRlW3Rlc3RdOwogICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gdXBkYXRlcykgewogICAgICAgICAv
LyBBZGQgaW5jbHVkZWQgdGVzdHMsIGFuZCBkZWxldGUgZXhjbHVkZWQgdGVzdHMgaWYKQEAgLTE3
NjMsNyArMTc2Myw3IEBAIGZ1bmN0aW9uIGhhbmRsZVVwZGF0ZSh0ZXN0c05lZWRpbmdVcGRhdGUs
IGtleXMpCiAvLyBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBrZXlzIEtleXMgaW50byB0aGUgdGVz
dE5lZWRpbmdVcGRhdGUgb2JqZWN0LgogZnVuY3Rpb24gbmV4dFVwZGF0ZSh0ZXN0c05lZWRpbmdV
cGRhdGUsIGtleXMpCiB7Ci0gICAgc2V0VXBkYXRlSW5kZXgoZ19jdXJyZW50U3RhdGUudXBkYXRl
SW5kZXggKyAxLCB0ZXN0c05lZWRpbmdVcGRhdGUsIGtleXMpOworICAgIHNldFVwZGF0ZUluZGV4
KGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnVwZGF0ZUluZGV4ICsgMSwgdGVzdHNO
ZWVkaW5nVXBkYXRlLCBrZXlzKTsKIH0KIAogCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBmdW5jdGlv
biBzZXRVcGRhdGVJbmRleChuZXdJbmRleCwgdGVzdHNOZWVkaW5nVXBkYXRlLCBrZXlzKQogICAg
ICAgICBuZXdJbmRleCA9IGtleXMubGVuZ3RoIC0gMTsKICAgICBlbHNlIGlmIChuZXdJbmRleCA9
PSBrZXlzLmxlbmd0aCkKICAgICAgICAgbmV3SW5kZXggPSAwOwotICAgIHNldFF1ZXJ5UGFyYW1l
dGVyKCJ1cGRhdGVJbmRleCIsIG5ld0luZGV4KTsKKyAgICBnX2hpc3Rvcnkuc2V0UXVlcnlQYXJh
bWV0ZXIoInVwZGF0ZUluZGV4IiwgbmV3SW5kZXgpOwogICAgIHNob3dVcGRhdGVJbmZvRm9yVGVz
dCh0ZXN0c05lZWRpbmdVcGRhdGUsIGtleXMpOwogfQogCkBAIC0xODIzLDEyICsxODIzLDEyIEBA
IGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xp
bmtzKHRlc3QpCiAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD0nICsg
dGVzdCArICc+PGRpdj4nICsKICAgICAgICAgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93RXhw
ZWN0YXRpb25zJywgJ3Jlc3VsdHMnKQogCi0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSB8
fCBpc0dQVVRlc3RSZXN1bHRzKCkpIHsKLSAgICAgICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMo
KSkKKyAgICBpZiAoZ19oaXN0b3J5LmlzTGF5b3V0VGVzdFJlc3VsdHMoKSB8fCBnX2hpc3Rvcnku
aXNHUFVUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGlmIChnX2hpc3RvcnkuaXNMYXlvdXRUZXN0
UmVzdWx0cygpKQogICAgICAgICAgICAgaHRtbCArPSAnIHwgJyArIGxpbmtIVE1MVG9Ub2dnbGVT
dGF0ZSgnc2hvd0xhcmdlRXhwZWN0YXRpb25zJywgJ2xhcmdlIHRodW1ibmFpbHMnKTsKICAgICAg
ICAgaWYgKHRlc3RSZXN1bHRzICYmIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5tYXN0ZXIoKS5uYW1l
ID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0g
Z19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgJyc7Ci0gICAgICAgICAgICBodG1sICs9ICc8Zm9y
bSBvbnN1Ym1pdD0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZpc2lvbi52YWx1
ZSk7JyArCisgICAgICAgICAgICB2YXIgcmV2aXNpb24gPSBnX2hpc3RvcnkuZGFzaGJvYXJkU3Bl
Y2lmaWNTdGF0ZS5yZXZpc2lvbiB8fCAnJzsKKyAgICAgICAgICAgIGh0bWwgKz0gJzxmb3JtIG9u
c3VibWl0PSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZpc2lv
bi52YWx1ZSk7JyArCiAgICAgICAgICAgICAgICAgJ3JldHVybiBmYWxzZTsiPlNob3cgcmVzdWx0
cyBmb3IgV2ViS2l0IHJldmlzaW9uOiAnICsKICAgICAgICAgICAgICAgICAnPGlucHV0IG5hbWU9
cmV2aXNpb24gcGxhY2Vob2xkZXI9ImUuZy4gNjU1NDAiIHZhbHVlPSInICsgcmV2aXNpb24gKwog
ICAgICAgICAgICAgICAgICciIGlkPXJldmlzaW9uLWlucHV0PjwvZm9ybT4nOwpAQCAtMTgzNiw4
ICsxODM2LDggQEAgZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dp
dGhSZXN1bHRzTGlua3ModGVzdCkKICAgICAgICAgICAgIGh0bWwgKz0gJyB8IDxiPk9ubHkgc2hv
d3MgYWN0dWFsIHJlc3VsdHMvZGlmZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9u
IGVhY2ggYm90LjwvYj4nOwogICAgIH0gZWxzZSB7CiAgICAgICBodG1sICs9ICcgfCA8c3Bhbj5S
ZXN1bHRzIGhlaWdodDo8aW5wdXQgJyArCi0gICAgICAgICAgJ29uY2hhbmdlPSJzZXRRdWVyeVBh
cmFtZXRlcihcJ3Jlc3VsdHNIZWlnaHRcJyx0aGlzLnZhbHVlKSIgdmFsdWU9IicgKwotICAgICAg
ICAgIGdfY3VycmVudFN0YXRlLnJlc3VsdHNIZWlnaHQgKyAnIiBzdHlsZT0id2lkdGg6Mi41ZW0i
PnB4PC9zcGFuPic7CisgICAgICAgICAgJ29uY2hhbmdlPSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJh
bWV0ZXIoXCdyZXN1bHRzSGVpZ2h0XCcsdGhpcy52YWx1ZSkiIHZhbHVlPSInICsKKyAgICAgICAg
ICBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5yZXN1bHRzSGVpZ2h0ICsgJyIgc3R5
bGU9IndpZHRoOjIuNWVtIj5weDwvc3Bhbj4nOwogICAgIH0KICAgICBodG1sICs9ICc8L2Rpdj48
L2Rpdj4nOwogICAgIHJldHVybiBodG1sOwpAQCAtMTkyNyw3ICsxOTI3LDcgQEAgZnVuY3Rpb24g
YWRkRXhwZWN0YXRpb25JdGVtKGV4cGVjdGF0aW9uc0NvbnRhaW5lcnMsIHBhcmVudENvbnRhaW5l
ciwgcGxhdGZvcm0sIHAKICAgICAgICAgY2hpbGRDb250YWluZXIuYXBwZW5kQ2hpbGQoZXhwZWN0
YXRpb25zVGl0bGUocGxhdGZvcm1QYXJ0ICsgc3VpdGVQYXJ0LCBwYXRoLCBvcHRfYnVpbGRlcikp
OwogICAgICAgICBjaGlsZENvbnRhaW5lci5jbGFzc05hbWUgPSAnZXhwZWN0YXRpb25zLWl0ZW0n
OwogICAgICAgICBpdGVtLmNsYXNzTmFtZSA9ICdleHBlY3RhdGlvbiAnICsgZmlsZUV4dGVuc2lv
bjsKLSAgICAgICAgaWYgKGdfY3VycmVudFN0YXRlLnNob3dMYXJnZUV4cGVjdGF0aW9ucykKKyAg
ICAgICAgaWYgKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dMYXJnZUV4cGVj
dGF0aW9ucykKICAgICAgICAgICAgIGl0ZW0uY2xhc3NOYW1lICs9ICcgbGFyZ2UnOwogICAgICAg
ICBjaGlsZENvbnRhaW5lci5hcHBlbmRDaGlsZChpdGVtKTsKICAgICAgICAgaGFuZGxlRmluaXNo
ZWRMb2FkaW5nRXhwZWN0YXRpb25zKGNvbnRhaW5lcik7CkBAIC0yMTA4LDEyICsyMTA4LDEyIEBA
IGZ1bmN0aW9uIGV4cGVjdGF0aW9uc1RpdGxlKHBsYXRmb3JtLCBwYXRoLCBidWlsZGVyKQogZnVu
Y3Rpb24gbG9hZEV4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnNDb250YWluZXIpCiB7CiAgICAgdmFy
IHRlc3QgPSBleHBlY3RhdGlvbnNDb250YWluZXIuZ2V0QXR0cmlidXRlKCd0ZXN0Jyk7Ci0gICAg
aWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkKKyAgICBpZiAoZ19oaXN0b3J5LmlzTGF5b3V0VGVz
dFJlc3VsdHMoKSkKICAgICAgICAgbG9hZEV4cGVjdGF0aW9uc0xheW91dFRlc3RzKHRlc3QsIGV4
cGVjdGF0aW9uc0NvbnRhaW5lcik7CiAgICAgZWxzZSB7CiAgICAgICAgIHZhciByZXN1bHRzID0g
Z190ZXN0VG9SZXN1bHRzTWFwW3Rlc3RdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJl
c3VsdHMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBpZiAoaXNHUFVUZXN0UmVzdWx0cygpKQor
ICAgICAgICAgICAgaWYgKGdfaGlzdG9yeS5pc0dQVVRlc3RSZXN1bHRzKCkpCiAgICAgICAgICAg
ICAgICAgbG9hZEdQVVJlc3VsdHNGb3JCdWlsZGVyKHJlc3VsdHNbaV0uYnVpbGRlciwgdGVzdCwg
ZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBsb2FkTm9uV2ViS2l0UmVzdWx0c0ZvckJ1aWxkZXIocmVzdWx0c1tpXS5idWlsZGVyLCB0ZXN0
LCBleHBlY3RhdGlvbnNDb250YWluZXIpOwpAQCAtMjE3Myw3ICsyMTczLDcgQEAgZnVuY3Rpb24g
YXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHVybCwgaXRlbUNsYXNzTmFtZSwgb3B0
X3RpdGxlKQogICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpOwogICAgICAgICBpdGVtLnNyYyA9IGR1bW15Tm9kZS5zcmM7CiAgICAgICAgIGl0ZW0uY2xh
c3NOYW1lID0gaXRlbUNsYXNzTmFtZTsKLSAgICAgICAgaXRlbS5zdHlsZS5oZWlnaHQgPSBnX2N1
cnJlbnRTdGF0ZS5yZXN1bHRzSGVpZ2h0ICsgJ3B4JzsKKyAgICAgICAgaXRlbS5zdHlsZS5oZWln
aHQgPSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5yZXN1bHRzSGVpZ2h0ICsgJ3B4
JzsKIAogICAgICAgICBpZiAob3B0X3RpdGxlKSB7CiAgICAgICAgICAgICB2YXIgY2hpbGRDb250
YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKQEAgLTIyNjIsNyArMjI2Miw3
IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlv
bnNDb250YWluZXIpCiAgICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFwcGVuZENoaWxkKHJldmlz
aW9uQ29udGFpbmVyKTsKICAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygp
KSB7CiAgICAgICAgIGlmIChidWlsZGVyTWFzdGVyKGJ1aWxkZXIpLm5hbWUgPT0gV0VCS0lUX0JV
SUxERVJfTUFTVEVSKSB7Ci0gICAgICAgICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2N1cnJl
bnRTdGF0ZS5yZXZpc2lvbiB8fCBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2
aXNpb25bMF07CisgICAgICAgICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2hpc3RvcnkuZGFz
aGJvYXJkU3BlY2lmaWNTdGF0ZS5yZXZpc2lvbiB8fCBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRl
cl0ud2Via2l0UmV2aXNpb25bMF07CiAgICAgICAgICAgICB2YXIgYnVpbGRJbmZvID0gYnVpbGRJ
bmZvRm9yUmV2aXNpb24oYnVpbGRlciwgbGF0ZXN0UmV2aXNpb24pOwogICAgICAgICAgICAgdmFy
IHJldmlzaW9uSW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAg
ICAgcmV2aXNpb25JbmZvLnN0eWxlLmNzc1RleHQgPSAnYmFja2dyb3VuZDpsaWdodGdyYXk7bWFy
Z2luOjAgM3B4O3BhZGRpbmc6MCAycHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7JzsKQEAgLTIyODAs
NyArMjI4MCw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBl
eHBlY3RhdGlvbnNDb250YWluZXIpCiAgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVp
bGRlcnMoKSkgewogICAgICAgICB2YXIgYWN0dWFsUmVzdWx0c0Jhc2U7CiAgICAgICAgIGlmIChi
dWlsZGVyTWFzdGVyKGJ1aWxkZXIpLm5hbWUgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7Ci0g
ICAgICAgICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2N1cnJlbnRTdGF0ZS5yZXZpc2lvbiB8
fCBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2aXNpb25bMF07CisgICAgICAg
ICAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0
ZS5yZXZpc2lvbiB8fCBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2aXNpb25b
MF07CiAgICAgICAgICAgICB2YXIgYnVpbGRJbmZvID0gYnVpbGRJbmZvRm9yUmV2aXNpb24oYnVp
bGRlciwgbGF0ZXN0UmV2aXNpb24pOwogICAgICAgICAgICAgYWN0dWFsUmVzdWx0c0Jhc2UgPSAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy8nICsgYnVpbGRlciArCiAgICAgICAgICAg
ICAgICAgJy9yJyArIGJ1aWxkSW5mby5yZXZpc2lvblN0YXJ0ICsgJyAoJyArIGJ1aWxkSW5mby5i
dWlsZE51bWJlciArICcpLyc7CkBAIC0yMzI5LDcgKzIzMjksNyBAQCBmdW5jdGlvbiBhbGxGYWxs
YmFja3MoKQogCiBmdW5jdGlvbiBhcHBlbmRFeHBlY3RhdGlvbnMoKQogewotICAgIHZhciBleHBl
Y3RhdGlvbnMgPSBnX2N1cnJlbnRTdGF0ZS5zaG93RXhwZWN0YXRpb25zID8gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnZXhwZWN0YXRpb25zJykgOiBbXTsKKyAgICB2YXIgZXhwZWN0
YXRpb25zID0gZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuc2hvd0V4cGVjdGF0aW9u
cyA/IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2V4cGVjdGF0aW9ucycpIDogW107
CiAgICAgLy8gTG9hZGluZyBleHBlY3RhdGlvbnMgaXMgKnZlcnkqIHNsb3cuIFVzZSBhIGxhcmdl
IHRpbWVvdXQgdG8gYXZvaWQKICAgICAvLyB0b3RhbGx5IGhhbmdpbmcgdGhlIHJlbmRlcmVyLgog
ICAgIHBlcmZvcm1DaHVua2VkQWN0aW9uKGV4cGVjdGF0aW9ucywgZnVuY3Rpb24oY2h1bmspIHsK
QEAgLTIzNTEsMTMgKzIzNTEsMTMgQEAgZnVuY3Rpb24gaGlkZUxvYWRpbmdVSSgpCiBmdW5jdGlv
biBnZW5lcmF0ZVBhZ2VGb3JJbmRpdmlkdWFsVGVzdHModGVzdHMpCiB7CiAgICAgY29uc29sZS5s
b2coJ051bWJlciBvZiB0ZXN0czogJyArIHRlc3RzLmxlbmd0aCk7Ci0gICAgaWYgKGdfY3VycmVu
dFN0YXRlLnNob3dDaHJvbWUpCisgICAgaWYgKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0
YXRlLnNob3dDaHJvbWUpCiAgICAgICAgIGFwcGVuZEhUTUwoaHRtbEZvck5hdkJhcigpKTsKICAg
ICBwZXJmb3JtQ2h1bmtlZEFjdGlvbih0ZXN0cywgZnVuY3Rpb24oY2h1bmspIHsKICAgICAgICAg
YXBwZW5kSFRNTChodG1sRm9ySW5kaXZpZHVhbFRlc3RzKGNodW5rKSk7CiAgICAgfSwgYXBwZW5k
RXhwZWN0YXRpb25zLCA1MDApOwotICAgIGlmIChnX2N1cnJlbnRTdGF0ZS5zaG93Q2hyb21lKQot
ICAgICAgICAkKCd0ZXN0cy1pbnB1dCcpLnZhbHVlID0gZ19jdXJyZW50U3RhdGUudGVzdHM7Cisg
ICAgaWYgKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dDaHJvbWUpCisgICAg
ICAgICQoJ3Rlc3RzLWlucHV0JykudmFsdWUgPSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNT
dGF0ZS50ZXN0czsKIH0KIAogZnVuY3Rpb24gcGVyZm9ybUNodW5rZWRBY3Rpb24odGVzdHMsIGhh
bmRsZUNodW5rLCBvbkNvbXBsZXRlLCB0aW1lb3V0LCBvcHRfaW5kZXgpIHsKQEAgLTIzNzksOCAr
MjM3OSw4IEBAIGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdHModGVzdHMpCiAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykgewogICAgICAgICB2YXIgdGVzdCA9
IHRlc3RzW2ldOwogICAgICAgICB2YXIgdGVzdE5hbWVIdG1sID0gJyc7Ci0gICAgICAgIGlmIChn
X2N1cnJlbnRTdGF0ZS5zaG93Q2hyb21lIHx8IHRlc3RzLmxlbmd0aCA+IDEpIHsKLSAgICAgICAg
ICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkpIHsKKyAgICAgICAgaWYgKGdfaGlzdG9yeS5k
YXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dDaHJvbWUgfHwgdGVzdHMubGVuZ3RoID4gMSkgewor
ICAgICAgICAgICAgaWYgKGdfaGlzdG9yeS5pc0xheW91dFRlc3RSZXN1bHRzKCkpIHsKICAgICAg
ICAgICAgICAgICB2YXIgc3VpdGUgPSBsb29rdXBWaXJ0dWFsVGVzdFN1aXRlKHRlc3QpOwogICAg
ICAgICAgICAgICAgIHZhciBiYXNlID0gc3VpdGUgPyBiYXNlVGVzdCh0ZXN0LCBzdWl0ZSkgOiB0
ZXN0OwogICAgICAgICAgICAgICAgIHZhciB0cmFjVVJMID0gVEVTVF9VUkxfQkFTRV9QQVRIX1RS
QUMgKyBiYXNlOwpAQCAtMjM5OSwxMSArMjM5OSwxMSBAQCBmdW5jdGlvbiBodG1sRm9yTmF2QmFy
KCkKICAgICB2YXIgZXh0cmFIVE1MID0gJyc7CiAgICAgdmFyIGh0bWwgPSB1aS5odG1sLnRlc3RU
eXBlU3dpdGNoZXIoZmFsc2UsIGV4dHJhSFRNTCwgaXNDcm9zc0J1aWxkZXJWaWV3KCkpOwogICAg
IGh0bWwgKz0gJzxkaXYgY2xhc3M9Zm9ybXM+PGZvcm0gaWQ9cmVzdWx0LWZvcm0gJyArCi0gICAg
ICAgICdvbnN1Ym1pdD0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXN1bHRcJywgcmVzdWx0LnZhbHVl
KTsnICsKKyAgICAgICAgJ29uc3VibWl0PSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIoXCdy
ZXN1bHRcJywgcmVzdWx0LnZhbHVlKTsnICsKICAgICAgICAgJ3JldHVybiBmYWxzZTsiPlNob3cg
YWxsIHRlc3RzIHdpdGggcmVzdWx0OiAnICsKICAgICAgICAgJzxpbnB1dCBuYW1lPXJlc3VsdCBw
bGFjZWhvbGRlcj0iZS5nLiBDUkFTSCIgaWQ9cmVzdWx0LWlucHV0PicgKwogICAgICAgICAnPC9m
b3JtPjxmb3JtIGlkPXRlc3RzLWZvcm0gJyArCi0gICAgICAgICdvbnN1Ym1pdD0ic2V0UXVlcnlQ
YXJhbWV0ZXIoXCd0ZXN0c1wnLCB0ZXN0cy52YWx1ZSk7JyArCisgICAgICAgICdvbnN1Ym1pdD0i
Z19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVyKFwndGVzdHNcJywgdGVzdHMudmFsdWUpOycgKwog
ICAgICAgICAncmV0dXJuIGZhbHNlOyI+PHNwYW4+U2hvdyB0ZXN0cyBvbiBhbGwgcGxhdGZvcm1z
OiA8L3NwYW4+JyArCiAgICAgICAgICc8aW5wdXQgbmFtZT10ZXN0cyAnICsKICAgICAgICAgJ3Bs
YWNlaG9sZGVyPSJDb21tYSBvciBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0ZXN0cyBvciBwYXJ0
aWFsICcgKwpAQCAtMjQxNSwxNCArMjQxNSwxNCBAQCBmdW5jdGlvbiBodG1sRm9yTmF2QmFyKCkK
IAogZnVuY3Rpb24gY2hlY2tCb3hUb1RvZ2dsZVN0YXRlKGtleSwgdGV4dCkKIHsKLSAgICB2YXIg
c3RhdGVFbmFibGVkID0gZ19jdXJyZW50U3RhdGVba2V5XTsKLSAgICByZXR1cm4gJzxsYWJlbD48
aW5wdXQgdHlwZT1jaGVja2JveCAnICsgKHN0YXRlRW5hYmxlZCA/ICdjaGVja2VkICcgOiAnJykg
KyAnb25jbGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCcnICsga2V5ICsgJ1wnLCAnICsgIXN0YXRl
RW5hYmxlZCArICcpIj4nICsgdGV4dCArICc8L2xhYmVsPiAnOworICAgIHZhciBzdGF0ZUVuYWJs
ZWQgPSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVtrZXldOworICAgIHJldHVybiAn
PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94ICcgKyAoc3RhdGVFbmFibGVkID8gJ2NoZWNrZWQg
JyA6ICcnKSArICdvbmNsaWNrPSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIoXCcnICsga2V5
ICsgJ1wnLCAnICsgIXN0YXRlRW5hYmxlZCArICcpIj4nICsgdGV4dCArICc8L2xhYmVsPiAnOwog
fQogCiBmdW5jdGlvbiBsaW5rSFRNTFRvVG9nZ2xlU3RhdGUoa2V5LCBsaW5rVGV4dCkKIHsKLSAg
ICB2YXIgc3RhdGVFbmFibGVkID0gZ19jdXJyZW50U3RhdGVba2V5XTsKLSAgICByZXR1cm4gJzxz
cGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCcnICsga2V5ICsgJ1wn
LCAnICsgIXN0YXRlRW5hYmxlZCArICcpIj4nICsgKHN0YXRlRW5hYmxlZCA/ICdIaWRlJyA6ICdT
aG93JykgKyAnICcgKyBsaW5rVGV4dCArICc8L3NwYW4+JzsKKyAgICB2YXIgc3RhdGVFbmFibGVk
ID0gZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGVba2V5XTsKKyAgICByZXR1cm4gJzxz
cGFuIGNsYXNzPWxpbmsgb25jbGljaz0iZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVyKFwnJyAr
IGtleSArICdcJywgJyArICFzdGF0ZUVuYWJsZWQgKyAnKSI+JyArIChzdGF0ZUVuYWJsZWQgPyAn
SGlkZScgOiAnU2hvdycpICsgJyAnICsgbGlua1RleHQgKyAnPC9zcGFuPic7CiB9CiAKIGZ1bmN0
aW9uIGhlYWRlckZvclRlc3RUYWJsZUh0bWwoKQpAQCAtMjQ0MCw3ICsyNDQwLDcgQEAgZnVuY3Rp
b24gZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihidWlsZGVyTmFtZSkKICAgICBwcm9jZXNzVGVzdFJ1
bnNGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKTsKIAogICAgIHZhciByZXN1bHRzID0gZ19wZXJCdWls
ZGVyRmFpbHVyZXNbYnVpbGRlck5hbWVdOwotICAgIHNvcnRUZXN0cyhyZXN1bHRzLCBnX2N1cnJl
bnRTdGF0ZS5zb3J0Q29sdW1uLCBnX2N1cnJlbnRTdGF0ZS5zb3J0T3JkZXIpOworICAgIHNvcnRU
ZXN0cyhyZXN1bHRzLCBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5zb3J0Q29sdW1u
LCBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5zb3J0T3JkZXIpOwogCiAgICAgdmFy
IHRlc3RzSFRNTCA9ICcnOwogICAgIGlmIChyZXN1bHRzLmxlbmd0aCkgewpAQCAtMjQ1MCw3ICsy
NDUwLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihidWlsZGVyTmFtZSkKICAg
ICAgICAgdGVzdHNIVE1MID0gaHRtbEZvclRlc3RUYWJsZSh0YWJsZVJvd3NIVE1MKTsKICAgICB9
IGVsc2UgewogICAgICAgICB0ZXN0c0hUTUwgPSAnPGRpdj5ObyB0ZXN0cyBmb3VuZC4gJzsKLSAg
ICAgICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkKKyAgICAgICAgaWYgKGdfaGlzdG9yeS5p
c0xheW91dFRlc3RSZXN1bHRzKCkpCiAgICAgICAgICAgICB0ZXN0c0hUTUwgKz0gJ1RyeSBzaG93
aW5nIHRlc3RzIHdpdGggY29ycmVjdCBleHBlY3RhdGlvbnMuPC9kaXY+JzsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGVzdHNIVE1MICs9ICdUaGlzIG1lYW5zIG5vIHRlc3RzIGhhdmUgZmFp
bGVkITwvZGl2Pic7CkBAIC0yNDU4LDcgKzI0NTgsNyBAQCBmdW5jdGlvbiBnZW5lcmF0ZVBhZ2VG
b3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQogCiAgICAgdmFyIGh0bWwgPSBodG1sRm9yTmF2QmFyKCk7
CiAKLSAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpKQorICAgIGlmIChnX2hpc3RvcnkuaXNM
YXlvdXRUZXN0UmVzdWx0cygpKQogICAgICAgICBodG1sICs9IGh0bWxGb3JUZXN0c1dpdGhFeHBl
Y3RhdGlvbnNCdXROb0ZhaWx1cmVzKGJ1aWxkZXJOYW1lKSArIGhlYWRlckZvclRlc3RUYWJsZUh0
bWwoKTsKIAogICAgIGh0bWwgKz0gJzxicj4nICsgdGVzdHNIVE1MOwpAQCAtMjQ4Niw3ICsyNDg2
LDcgQEAgdmFyIFZBTElEX0tFWVNfRk9SX0NST1NTX0JVSUxERVJfVklFVyA9IHsKIAogZnVuY3Rp
b24gaXNJbnZhbGlkS2V5Rm9yQ3Jvc3NCdWlsZGVyVmlldyhrZXkpCiB7Ci0gICAgcmV0dXJuICEo
a2V5IGluIFZBTElEX0tFWVNfRk9SX0NST1NTX0JVSUxERVJfVklFVykgJiYgIShrZXkgaW4gZ19k
ZWZhdWx0Q3Jvc3NEYXNoYm9hcmRTdGF0ZVZhbHVlcyk7CisgICAgcmV0dXJuICEoa2V5IGluIFZB
TElEX0tFWVNfRk9SX0NST1NTX0JVSUxERVJfVklFVykgJiYgIShrZXkgaW4gaGlzdG9yeS5ERUZB
VUxUX0NST1NTX0RBU0hCT0FSRF9TVEFURV9WQUxVRVMpOwogfQogCiAvLyBTZXRzIHRoZSBwYWdl
IHN0YXRlIHRvIHJlZ2VuZXJhdGUgdGhlIHBhZ2UuCkBAIC0yNDk2LDE0ICsyNDk2LDE0IEBAIGZ1
bmN0aW9uIGhhbmRsZVF1ZXJ5UGFyYW1ldGVyQ2hhbmdlKHBhcmFtcykKICAgICBmb3IgKGtleSBp
biBwYXJhbXMpIHsKICAgICAgICAgaWYgKGtleSA9PSAndGVzdHMnKSB7CiAgICAgICAgICAgICAv
LyBFbnRlcmluZyBjcm9zcy1idWlsZGVyIHZpZXcsIG9ubHkga2VlcCB2YWxpZCBrZXlzIGZvciB0
aGF0IHZpZXcuCi0gICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50S2V5IGluIGdfY3VycmVudFN0
YXRlKSB7CisgICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50S2V5IGluIGdfaGlzdG9yeS5kYXNo
Ym9hcmRTcGVjaWZpY1N0YXRlKSB7CiAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWRLZXlGb3JD
cm9zc0J1aWxkZXJWaWV3KGN1cnJlbnRLZXkpKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGdf
Y3VycmVudFN0YXRlW2N1cnJlbnRLZXldOworICAgICAgICAgICAgICAgIGRlbGV0ZSBnX2hpc3Rv
cnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVtjdXJyZW50S2V5XTsKICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGlzSW52YWxpZEtleUZvckNyb3NzQnVp
bGRlclZpZXcoa2V5KSkgewotICAgICAgICAgICAgZGVsZXRlIGdfY3VycmVudFN0YXRlLnRlc3Rz
OwotICAgICAgICAgICAgZGVsZXRlIGdfY3VycmVudFN0YXRlLnJlc3VsdDsKKyAgICAgICAgICAg
IGRlbGV0ZSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS50ZXN0czsKKyAgICAgICAg
ICAgIGRlbGV0ZSBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5yZXN1bHQ7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTI1NDUsNyArMjU0NSw3IEBAIGZ1bmN0aW9uIHNob3dMZWdlbmQo
KQogICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPScgKyBleHBlY3RhdGlvbiArICc+JyArIGV4
cGVjdGF0aW9uc01hcCgpW2V4cGVjdGF0aW9uXSArICc8L2Rpdj4nOwogCiAgICAgaHRtbCArPSAn
PGRpdiBjbGFzcz1tZXJnZT5XRUJLSVQgTUVSR0U8L2Rpdj4nOwotICAgIGlmIChpc0xheW91dFRl
c3RSZXN1bHRzKCkpIHsKKyAgICBpZiAoZ19oaXN0b3J5LmlzTGF5b3V0VGVzdFJlc3VsdHMoKSkg
ewogICAgICAgaHRtbCArPSAnPC9kaXY+PGJyIHN0eWxlPSJjbGVhcjpib3RoIj4nICsKICAgICAg
ICAgICAnPC9kaXY+PGgzPlRlc3QgZXhwZWN0YXRvbnMgZmFsbGJhY2sgb3JkZXIuPC9oMz4nOwog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Zs
YWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcwppbmRleCAz
OGRjMGMyMjk5NGRhNjkwNGFlNjRmZTkyZWE5NWI3YjMwZGRkNzYxLi45NTI0N2Q5MGMxMGFlYjNl
YzkzZDJiYzI5YjZhZWYxYzY3NjI0N2RkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCisr
KyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rh
c2hib2FyZF91bml0dGVzdHMuanMKQEAgLTI2LDYgKzI2LDcgQEAKIC8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAorLy8gRklYTUUoanBhcmVudCk6IFJlbmFtZSB0aGlzIG9uY2UgaXQg
aXNuJ3QgZ2xvYmFscy4KIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiB7CiAgICAgYWxsRXhwZWN0
YXRpb25zID0gbnVsbDsKQEAgLTM0LDEyICszNSwxMyBAQCBmdW5jdGlvbiByZXNldEdsb2JhbHMo
KQogICAgIGdfcmVzdWx0c0J5QnVpbGRlciA9IHt9OwogICAgIGdfYWxsRXhwZWN0YXRpb25zID0g
bnVsbDsKICAgICBnX2FsbFRlc3RzVHJpZSA9IG51bGw7Ci0gICAgZ19jdXJyZW50U3RhdGUgPSB7
fTsKLSAgICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUgPSB7fTsKKyAgICB2YXIgaGlzdG9yeUluc3Rh
bmNlID0gbmV3IGhpc3RvcnkuSGlzdG9yeSgpOworICAgIC8vIEZJWE1FKGpwYXJlbnQpOiBSZW1v
dmUgdGhpcyBvbmNlIGdsb2JhbCBpc24ndCB1c2VkLgorICAgIGdfaGlzdG9yeSA9IGhpc3RvcnlJ
bnN0YW5jZTsKICAgICBnX3Rlc3RUb1Jlc3VsdHNNYXAgPSB7fTsKIAotICAgIGZvciAodmFyIGtl
eSBpbiBnX2RlZmF1bHRDcm9zc0Rhc2hib2FyZFN0YXRlVmFsdWVzKQotICAgICAgICBnX2Nyb3Nz
RGFzaGJvYXJkU3RhdGVba2V5XSA9IGdfZGVmYXVsdENyb3NzRGFzaGJvYXJkU3RhdGVWYWx1ZXNb
a2V5XTsKKyAgICBmb3IgKHZhciBrZXkgaW4gaGlzdG9yeS5ERUZBVUxUX0NST1NTX0RBU0hCT0FS
RF9TVEFURV9WQUxVRVMpCisgICAgICAgIGhpc3RvcnlJbnN0YW5jZS5jcm9zc0Rhc2hib2FyZFN0
YXRlW2tleV0gPSBoaXN0b3J5LkRFRkFVTFRfQ1JPU1NfREFTSEJPQVJEX1NUQVRFX1ZBTFVFU1tr
ZXldOwogCiAgICAgTE9BRF9CVUlMREJPVF9EQVRBKFt7CiAgICAgICAgIG5hbWU6ICdDaHJvbWl1
bVdlYmtpdCcsCkBAIC01NCw2ICs1Niw4IEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiAgCiAg
ICAgZm9yICh2YXIgZ3JvdXAgaW4gTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTKQogICAgICAg
ICBMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9VUFNbZ3JvdXBdID0gbnVsbDsKKworICAgIHJldHVy
biBoaXN0b3J5SW5zdGFuY2U7CiB9CiAKIGZ1bmN0aW9uIHN0dWJSZXN1bHRzQnlCdWlsZGVyKGRh
dGEpCkBAIC0xNDEsNiArMTQ1LDExIEBAIHRlc3QoJ292ZXJyaWRlSnVzdEJ1aWxkVHlwZScsIDEy
LCBmdW5jdGlvbigpIHsKIH0pOwogCiB0ZXN0KCdwbGF0Zm9ybUFuZEJ1aWxkVHlwZScsIDc4LCBm
dW5jdGlvbigpIHsKKyAgICB2YXIgaGlzdG9yeUluc3RhbmNlID0gbmV3IGhpc3RvcnkuSGlzdG9y
eSgpOworICAgIC8vIEZJWE1FKGpwYXJlbnQpOiBDaGFuZ2UgdG8gdXNlIHRoZSBmbGFraW5lc3Nf
ZGIncyBoaXN0b3J5IG9iamVjdAorICAgIC8vIG9uY2UgaXQgZXhpc3RzLCByYXRoZXIgdGhhbiB0
cmFja2luZyBnbG9iYWwuCisgICAgZ19oaXN0b3J5ID0gaGlzdG9yeUluc3RhbmNlOworCiAgICAg
dmFyIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCA9IGZ1bmN0aW9uKGJ1aWxkZXIsIGV4cGVj
dGVkUGxhdGZvcm0sIGV4cGVjdGVkQnVpbGRUeXBlKSB7CiAgICAgICAgIGdfcGVyQnVpbGRlclBs
YXRmb3JtQW5kQnVpbGRUeXBlID0ge307CiAgICAgICAgIGJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5k
QnVpbGRUeXBlKGJ1aWxkZXIpOwpAQCAtMTcwLDggKzE3OSw4IEBAIHRlc3QoJ3BsYXRmb3JtQW5k
QnVpbGRUeXBlJywgNzgsIGZ1bmN0aW9uKCkgewogICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnWFAgVGVzdHMnLCAnQ0hST01JVU1fWFAnLCAnUkVMRUFTRScpOwogICAgIHJ1blBsYXRm
b3JtQW5kQnVpbGRUeXBlVGVzdCgnSW50ZXJhY3RpdmUgVGVzdHMgKGRiZyknLCAnQ0hST01JVU1f
WFAnLCAnREVCVUcnKTsKICAgICAKLSAgICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUuZ3JvdXAgPSAn
QFRvVCAtIHdlYmtpdC5vcmcnOwotICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9
ICdsYXlvdXQtdGVzdHMnOworICAgIGhpc3RvcnlJbnN0YW5jZS5jcm9zc0Rhc2hib2FyZFN0YXRl
Lmdyb3VwID0gJ0BUb1QgLSB3ZWJraXQub3JnJzsKKyAgICBoaXN0b3J5SW5zdGFuY2UuY3Jvc3NE
YXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9ICdsYXlvdXQtdGVzdHMnOwogICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gV2luIFJlbGVhc2UgKFRlc3RzKScsICdDSFJPTUlV
TV9YUCcsICdSRUxFQVNFJyk7CiAgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdDaHJv
bWl1bSBMaW51eCBSZWxlYXNlIChUZXN0cyknLCAnQ0hST01JVU1fTFVDSUQnLCAnUkVMRUFTRScp
OwogICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gTWFjIFJlbGVhc2Ug
KFRlc3RzKScsICdDSFJPTUlVTV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7CkBAIC0zMDMsMzUg
KzMxMiw0MSBAQCB0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNiwgZnVuY3Rpb24oKSB7CiB9KTsK
IAogdGVzdCgnc3Vic3RyaW5nTGlzdCcsIDIsIGZ1bmN0aW9uKCkgewotICAgIGdfY3Jvc3NEYXNo
Ym9hcmRTdGF0ZS50ZXN0VHlwZSA9ICdndGVzdCc7Ci0gICAgZ19jdXJyZW50U3RhdGUudGVzdHMg
PSAndGVzdC5GTEFLWV9mb28gdGVzdC5GQUlMU19mb28xIHRlc3QuRElTQUJMRURfZm9vMiB0ZXN0
Lk1BWUJFX2ZvbzMgdGVzdC5mb280JzsKKyAgICB2YXIgaGlzdG9yeUluc3RhbmNlID0gbmV3IGhp
c3RvcnkuSGlzdG9yeSgpOworICAgIC8vIEZJWE1FKGpwYXJlbnQpOiBSZW1vdmUgdGhpcyBvbmNl
IGdsb2JhbCBpc24ndCB1c2VkLgorICAgIGdfaGlzdG9yeSA9IGhpc3RvcnlJbnN0YW5jZTsKKyAg
ICBoaXN0b3J5SW5zdGFuY2UuY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9ICdndGVzdCc7
CisgICAgaGlzdG9yeUluc3RhbmNlLmRhc2hib2FyZFNwZWNpZmljU3RhdGUudGVzdHMgPSAndGVz
dC5GTEFLWV9mb28gdGVzdC5GQUlMU19mb28xIHRlc3QuRElTQUJMRURfZm9vMiB0ZXN0Lk1BWUJF
X2ZvbzMgdGVzdC5mb280JzsKICAgICBlcXVhbChzdWJzdHJpbmdMaXN0KCkudG9TdHJpbmcoKSwg
J3Rlc3QuZm9vLHRlc3QuZm9vMSx0ZXN0LmZvbzIsdGVzdC5mb28zLHRlc3QuZm9vNCcpOwogCi0g
ICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlID0gJ2xheW91dC10ZXN0cyc7Ci0gICAg
Z19jdXJyZW50U3RhdGUudGVzdHMgPSAnZm9vL2Jhci5GTEFLWV9mb28uaHRtbCc7CisgICAgaGlz
dG9yeUluc3RhbmNlLmNyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUgPSAnbGF5b3V0LXRlc3Rz
JzsKKyAgICBoaXN0b3J5SW5zdGFuY2UuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS50ZXN0cyA9ICdm
b28vYmFyLkZMQUtZX2Zvby5odG1sJzsKICAgICBlcXVhbChzdWJzdHJpbmdMaXN0KCkudG9TdHJp
bmcoKSwgJ2Zvby9iYXIuRkxBS1lfZm9vLmh0bWwnKTsKIH0pOwogCiB0ZXN0KCdodG1sRm9yVGVz
dHNXaXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJlcycsIDQsIGZ1bmN0aW9uKCkgeworICAgIHZh
ciBoaXN0b3J5SW5zdGFuY2UgPSBuZXcgaGlzdG9yeS5IaXN0b3J5KCk7CisgICAgLy8gRklYTUUo
anBhcmVudCk6IFJlbW92ZSB0aGlzIG9uY2UgZ2xvYmFsIGlzbid0IHVzZWQuCisgICAgZ19oaXN0
b3J5ID0gaGlzdG9yeUluc3RhbmNlOwogICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJv
bWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIGJ1aWxkZXIgPSAnV2ViS2l0IFdp
bic7CiAgICAgZ19wZXJCdWlsZGVyV2l0aEV4cGVjdGF0aW9uc0J1dE5vRmFpbHVyZXNbYnVpbGRl
cl0gPSBbJ3Bhc3NpbmctdGVzdDEuaHRtbCcsICdwYXNzaW5nLXRlc3QyLmh0bWwnXTsKICAgICBn
X3BlckJ1aWxkZXJTa2lwcGVkUGF0aHNbYnVpbGRlcl0gPSBbJ3NraXBwZWQtdGVzdDEuaHRtbCdd
OwogICAgIGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSA9IHsgYnVpbGROdW1iZXJzOiBbNSwg
NCwgMywgMV0gfTsKIAotICAgIGdfY3VycmVudFN0YXRlLnNob3dVbmV4cGVjdGVkUGFzc2VzID0g
dHJ1ZTsKLSAgICBnX2N1cnJlbnRTdGF0ZS5zaG93U2tpcHBlZCA9IHRydWU7CisgICAgaGlzdG9y
eUluc3RhbmNlLmRhc2hib2FyZFNwZWNpZmljU3RhdGUuc2hvd1VuZXhwZWN0ZWRQYXNzZXMgPSB0
cnVlOworICAgIGhpc3RvcnlJbnN0YW5jZS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dTa2lw
cGVkID0gdHJ1ZTsKIAotICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCA9ICdAVG9UIC0g
Y2hyb21pdW0ub3JnJzsKLSAgICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUgPSAnbGF5
b3V0LXRlc3RzJzsKKyAgICBoaXN0b3J5SW5zdGFuY2UuY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91
cCA9ICdAVG9UIC0gY2hyb21pdW0ub3JnJzsKKyAgICBoaXN0b3J5SW5zdGFuY2UuY3Jvc3NEYXNo
Ym9hcmRTdGF0ZS50ZXN0VHlwZSA9ICdsYXlvdXQtdGVzdHMnOwogICAgIAogICAgIHZhciBjb250
YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICBjb250YWluZXIuaW5u
ZXJIVE1MID0gaHRtbEZvclRlc3RzV2l0aEV4cGVjdGF0aW9uc0J1dE5vRmFpbHVyZXMoYnVpbGRl
cik7CiAgICAgZXF1YWwoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJyNwYXNzaW5nLXRlc3Rz
ID4gZGl2JykubGVuZ3RoLCAyKTsKICAgICBlcXVhbChjb250YWluZXIucXVlcnlTZWxlY3RvckFs
bCgnI3NraXBwZWQtdGVzdHMgPiBkaXYnKS5sZW5ndGgsIDEpOwogICAgIAotICAgIGdfY3VycmVu
dFN0YXRlLnNob3dVbmV4cGVjdGVkUGFzc2VzID0gZmFsc2U7Ci0gICAgZ19jdXJyZW50U3RhdGUu
c2hvd1NraXBwZWQgPSBmYWxzZTsKKyAgICBoaXN0b3J5SW5zdGFuY2UuZGFzaGJvYXJkU3BlY2lm
aWNTdGF0ZS5zaG93VW5leHBlY3RlZFBhc3NlcyA9IGZhbHNlOworICAgIGhpc3RvcnlJbnN0YW5j
ZS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnNob3dTa2lwcGVkID0gZmFsc2U7CiAgICAgCiAgICAg
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIGNvbnRh
aW5lci5pbm5lckhUTUwgPSBodG1sRm9yVGVzdHNXaXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJl
cyhidWlsZGVyKTsKQEAgLTM0Niw4ICszNjEsMTEgQEAgdGVzdCgnaGVhZGVyRm9yVGVzdFRhYmxl
SHRtbCcsIDEsIGZ1bmN0aW9uKCkgewogfSk7CiAKIHRlc3QoJ2h0bWxGb3JUZXN0VHlwZVN3aXRj
aGVyR3JvdXAnLCA2LCBmdW5jdGlvbigpIHsKKyAgICB2YXIgaGlzdG9yeUluc3RhbmNlID0gbmV3
IGhpc3RvcnkuSGlzdG9yeSgpOworICAgIC8vIEZJWE1FKGpwYXJlbnQpOiBSZW1vdmUgdGhpcyBv
bmNlIGdsb2JhbCBpc24ndCB1c2VkLgorICAgIGdfaGlzdG9yeSA9IGhpc3RvcnlJbnN0YW5jZTsK
ICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAg
Z19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlID0gJ3VpX3Rlc3RzJzsKKyAgICBoaXN0b3J5
SW5zdGFuY2UuY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9ICd1aV90ZXN0cyc7CiAgICAg
Y29udGFpbmVyLmlubmVySFRNTCA9IHVpLmh0bWwudGVzdFR5cGVTd2l0Y2hlcih0cnVlKTsKICAg
ICB2YXIgc2VsZWN0cyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3QnKTsKICAg
ICBlcXVhbChzZWxlY3RzLmxlbmd0aCwgMik7CkBAIC0zNTUsNyArMzczLDcgQEAgdGVzdCgnaHRt
bEZvclRlc3RUeXBlU3dpdGNoZXJHcm91cCcsIDYsIGZ1bmN0aW9uKCkgewogICAgIGVxdWFsKGdy
b3VwLnBhcmVudE5vZGUudGV4dENvbnRlbnQuaW5kZXhPZignR3JvdXA6JyksIDApOwogICAgIGVx
dWFsKGdyb3VwLmNoaWxkcmVuLmxlbmd0aCwgMyk7CiAKLSAgICBnX2Nyb3NzRGFzaGJvYXJkU3Rh
dGUudGVzdFR5cGUgPSAnbGF5b3V0LXRlc3RzJzsKKyAgICBoaXN0b3J5SW5zdGFuY2UuY3Jvc3NE
YXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9ICdsYXlvdXQtdGVzdHMnOwogICAgIGNvbnRhaW5lci5p
bm5lckhUTUwgPSB1aS5odG1sLnRlc3RUeXBlU3dpdGNoZXIodHJ1ZSk7CiAgICAgdmFyIHNlbGVj
dHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0Jyk7CiAgICAgZXF1YWwoc2Vs
ZWN0cy5sZW5ndGgsIDIpOwpAQCAtMzc3LDggKzM5NSw4IEBAIHRlc3QoJ2h0bWxGb3JJbmRpdmlk
dWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzTm9uZXhpc3RhbnQnLCAxLCBmdW5j
dGlvCiAgICAgICAgICc8ZGl2IGNsYXNzPSJub3QtZm91bmQiPlRlc3Qgbm90IGZvdW5kLiBFaXRo
ZXIgaXQgZG9lcyBub3QgZXhpc3QsIGlzIHNraXBwZWQgb3IgcGFzc2VzIG9uIGFsbCBwbGF0Zm9y
bXMuPC9kaXY+JyArCiAgICAgICAgICc8ZGl2IGNsYXNzPWV4cGVjdGF0aW9ucyB0ZXN0PWZvby9u
b25leGlzdGFudC5odG1sPicgKwogICAgICAgICAgICAgJzxkaXY+JyArCi0gICAgICAgICAgICAg
ICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93RXhw
ZWN0YXRpb25zXCcsIHRydWUpIj5TaG93IHJlc3VsdHM8L3NwYW4+IHwgJyArCi0gICAgICAgICAg
ICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93
TGFyZ2VFeHBlY3RhdGlvbnNcJywgdHJ1ZSkiPlNob3cgbGFyZ2UgdGh1bWJuYWlsczwvc3Bhbj4g
fCAnICsKKyAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9bGluayBvbmNsaWNrPSJnX2hpc3Rv
cnkuc2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93RXhwZWN0YXRpb25zXCcsIHRydWUpIj5TaG93IHJl
c3VsdHM8L3NwYW4+IHwgJyArCisgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25j
bGljaz0iZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0xhcmdlRXhwZWN0YXRpb25z
XCcsIHRydWUpIj5TaG93IGxhcmdlIHRodW1ibmFpbHM8L3NwYW4+IHwgJyArCiAgICAgICAgICAg
ICAgICAgJzxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3VsdHMvZGlmZnMgZnJvbSB0aGUgbW9zdCBy
ZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj4nICsKICAgICAgICAgICAgICc8L2Rpdj4n
ICsKICAgICAgICAgJzwvZGl2PicpOwpAQCAtNDA4LDE1ICs0MjYsMTUgQEAgdGVzdCgnaHRtbEZv
ckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhSZXN1bHRzTGlua3MnLCAxLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTGlu
dXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTWFjMTAuNzwv
ZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48L2Rpdj48ZGl2IGNsYXNz
PXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgV2luIChkYmcpPC9kaXY+JyArCiAgICAgICAgICc8L2Rp
dj4nICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0ZXN0Lmh0
bWw+JyArCi0gICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNldFF1
ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRzPC9z
cGFuPiB8ICcgKwotICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVl
cnlQYXJhbWV0ZXIoXCdzaG93TGFyZ2VFeHBlY3RhdGlvbnNcJywgdHJ1ZSkiPlNob3cgbGFyZ2Ug
dGh1bWJuYWlsczwvc3Bhbj4gfCAnICsKKyAgICAgICAgICAgICc8ZGl2PjxzcGFuIGNsYXNzPWxp
bmsgb25jbGljaz0iZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9u
c1wnLCB0cnVlKSI+U2hvdyByZXN1bHRzPC9zcGFuPiB8ICcgKworICAgICAgICAgICAgJzxzcGFu
IGNsYXNzPWxpbmsgb25jbGljaz0iZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0xh
cmdlRXhwZWN0YXRpb25zXCcsIHRydWUpIj5TaG93IGxhcmdlIHRodW1ibmFpbHM8L3NwYW4+IHwg
JyArCiAgICAgICAgICAgICAnPGI+T25seSBzaG93cyBhY3R1YWwgcmVzdWx0cy9kaWZmcyBmcm9t
IHRoZSBtb3N0IHJlY2VudCAqZmFpbHVyZSogb24gZWFjaCBib3QuPC9iPjwvZGl2PicgKwogICAg
ICAgICAnPC9kaXY+Jyk7CiB9KTsKIAogdGVzdCgnaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxC
dWlsZGVyc1dpdGhSZXN1bHRzTGlua3NXZWJraXRNYXN0ZXInLCAxLCBmdW5jdGlvbigpIHsKLSAg
ICByZXNldEdsb2JhbHMoKTsKLSAgICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUuZ3JvdXAgPSAnQFRv
VCAtIHdlYmtpdC5vcmcnOworICAgIHZhciBoaXN0b3J5SW5zdGFuY2UgPSByZXNldEdsb2JhbHMo
KTsKKyAgICBoaXN0b3J5SW5zdGFuY2UuY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCA9ICdAVG9U
IC0gd2Via2l0Lm9yZyc7CiAgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIHdlYmtpdC5vcmcn
LCAnbGF5b3V0LXRlc3RzJyk7CiAKICAgICB2YXIgYnVpbGRlck5hbWUgPSAnQXBwbGUgU25vd0xl
b3BhcmQgVGVzdHMnOwpAQCAtNDM5LDQ5ICs0NTcsNDkgQEAgdGVzdCgnaHRtbEZvckluZGl2aWR1
YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhSZXN1bHRzTGlua3NXZWJraXRNYXN0ZXInLCAxLCBmdW5j
dGkKICAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5RdCBMaW51eCBUZXN0
czwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPkNocm9taXVtIE1hYzEwLjcgVGVzdHM8
L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5HVEsgV2luPC9kaXY+JyArCiAgICAgICAg
ICc8L2Rpdj4nICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0
ZXN0Lmh0bWw+JyArCi0gICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9
InNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1
bHRzPC9zcGFuPiB8ICcgKwotICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0i
c2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93TGFyZ2VFeHBlY3RhdGlvbnNcJywgdHJ1ZSkiPlNob3cg
bGFyZ2UgdGh1bWJuYWlsczwvc3Bhbj4nICsKLSAgICAgICAgICAgICc8Zm9ybSBvbnN1Ym1pdD0i
c2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZpc2lvbi52YWx1ZSk7cmV0dXJuIGZh
bHNlOyI+JyArCisgICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9Imdf
aGlzdG9yeS5zZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dFeHBlY3RhdGlvbnNcJywgdHJ1ZSkiPlNo
b3cgcmVzdWx0czwvc3Bhbj4gfCAnICsKKyAgICAgICAgICAgICc8c3BhbiBjbGFzcz1saW5rIG9u
Y2xpY2s9ImdfaGlzdG9yeS5zZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dMYXJnZUV4cGVjdGF0aW9u
c1wnLCB0cnVlKSI+U2hvdyBsYXJnZSB0aHVtYm5haWxzPC9zcGFuPicgKworICAgICAgICAgICAg
Jzxmb3JtIG9uc3VibWl0PSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwn
LCByZXZpc2lvbi52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+JyArCiAgICAgICAgICAgICAgICAgJ1No
b3cgcmVzdWx0cyBmb3IgV2ViS2l0IHJldmlzaW9uOiA8aW5wdXQgbmFtZT1yZXZpc2lvbiBwbGFj
ZWhvbGRlcj0iZS5nLiA2NTU0MCIgdmFsdWU9IiIgaWQ9cmV2aXNpb24taW5wdXQ+JyArCiAgICAg
ICAgICAgICAnPC9mb3JtPjwvZGl2PicgKwogICAgICAgICAnPC9kaXY+Jyk7CiB9KTsKIAogdGVz
dCgnaHRtbEZvckluZGl2aWR1YWxUZXN0cycsIDQsIGZ1bmN0aW9uKCkgewotICAgIHJlc2V0R2xv
YmFscygpOworICAgIHZhciBoaXN0b3J5SW5zdGFuY2UgPSByZXNldEdsb2JhbHMoKTsKICAgICBs
b2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwog
ICAgIHZhciB0ZXN0MSA9ICdmb28vbm9uZXhpc3RhbnQuaHRtbCc7CiAgICAgdmFyIHRlc3QyID0g
J2Jhci9ub25leGlzdGFudC5odG1sJzsKIAotICAgIGdfY3VycmVudFN0YXRlLnNob3dDaHJvbWUg
PSBmYWxzZTsKKyAgICBoaXN0b3J5SW5zdGFuY2UuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5zaG93
Q2hyb21lID0gZmFsc2U7CiAKICAgICB2YXIgdGVzdHMgPSBbdGVzdDEsIHRlc3QyXTsKICAgICBl
cXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RzKHRlc3RzKSwKICAgICAgICAgJzxoMj48YSBocmVm
PSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvZm9vL25v
bmV4aXN0YW50Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5mb28vbm9uZXhpc3RhbnQuaHRtbDwvYT48
L2gyPicgKwogICAgICAgICBodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzKHRlc3Qx
KSArIAogICAgICAgICAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD1mb28vbm9uZXhpc3Rh
bnQuaHRtbD4nICsKLSAgICAgICAgICAgICc8ZGl2PjxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz1c
InNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKVwiPlNob3cgcmVz
dWx0czwvc3Bhbj4gfCAnICsKLSAgICAgICAgICAgICc8c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9
XCJzZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dMYXJnZUV4cGVjdGF0aW9uc1wnLCB0cnVlKVwiPlNo
b3cgbGFyZ2UgdGh1bWJuYWlsczwvc3Bhbj4gfCAnICsKKyAgICAgICAgICAgICc8ZGl2PjxzcGFu
IGNsYXNzPWxpbmsgb25jbGljaz1cImdfaGlzdG9yeS5zZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dF
eHBlY3RhdGlvbnNcJywgdHJ1ZSlcIj5TaG93IHJlc3VsdHM8L3NwYW4+IHwgJyArCisgICAgICAg
ICAgICAnPHNwYW4gY2xhc3M9bGluayBvbmNsaWNrPVwiZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1l
dGVyKFwnc2hvd0xhcmdlRXhwZWN0YXRpb25zXCcsIHRydWUpXCI+U2hvdyBsYXJnZSB0aHVtYm5h
aWxzPC9zcGFuPiB8ICcgKwogICAgICAgICAgICAgJzxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3Vs
dHMvZGlmZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj48
L2Rpdj4nICsKICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAnPGhyPicgKwogICAgICAgICAn
PGgyPjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9MYXlvdXRU
ZXN0cy9iYXIvbm9uZXhpc3RhbnQuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmJhci9ub25leGlzdGFu
dC5odG1sPC9hPjwvaDI+JyArCiAgICAgICAgIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVp
bGRlcnModGVzdDIpICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9YmFy
L25vbmV4aXN0YW50Lmh0bWw+JyArCi0gICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5r
IG9uY2xpY2s9XCJzZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dFeHBlY3RhdGlvbnNcJywgdHJ1ZSlc
Ij5TaG93IHJlc3VsdHM8L3NwYW4+IHwgJyArCi0gICAgICAgICAgICAnPHNwYW4gY2xhc3M9bGlu
ayBvbmNsaWNrPVwic2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93TGFyZ2VFeHBlY3RhdGlvbnNcJywg
dHJ1ZSlcIj5TaG93IGxhcmdlIHRodW1ibmFpbHM8L3NwYW4+IHwgJyArCisgICAgICAgICAgICAn
PGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9XCJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0
ZXIoXCdzaG93RXhwZWN0YXRpb25zXCcsIHRydWUpXCI+U2hvdyByZXN1bHRzPC9zcGFuPiB8ICcg
KworICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz1cImdfaGlzdG9yeS5zZXRR
dWVyeVBhcmFtZXRlcihcJ3Nob3dMYXJnZUV4cGVjdGF0aW9uc1wnLCB0cnVlKVwiPlNob3cgbGFy
Z2UgdGh1bWJuYWlsczwvc3Bhbj4gfCAnICsKICAgICAgICAgICAgICc8Yj5Pbmx5IHNob3dzIGFj
dHVhbCByZXN1bHRzL2RpZmZzIGZyb20gdGhlIG1vc3QgcmVjZW50ICpmYWlsdXJlKiBvbiBlYWNo
IGJvdC48L2I+PC9kaXY+JyArCiAgICAgICAgICc8L2Rpdj4nKTsKIAogICAgIHRlc3RzID0gW3Rl
c3QxXTsKICAgICBlcXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RzKHRlc3RzKSwgaHRtbEZvcklu
ZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0MSkgKwogICAgICAgICAnPGRpdiBjbGFzcz1l
eHBlY3RhdGlvbnMgdGVzdD1mb28vbm9uZXhpc3RhbnQuaHRtbD4nICsKLSAgICAgICAgICAgICc8
ZGl2PjxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz1cInNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4
cGVjdGF0aW9uc1wnLCB0cnVlKVwiPlNob3cgcmVzdWx0czwvc3Bhbj4gfCAnICsKLSAgICAgICAg
ICAgICc8c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9XCJzZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dM
YXJnZUV4cGVjdGF0aW9uc1wnLCB0cnVlKVwiPlNob3cgbGFyZ2UgdGh1bWJuYWlsczwvc3Bhbj4g
fCAnICsKKyAgICAgICAgICAgICc8ZGl2PjxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz1cImdfaGlz
dG9yeS5zZXRRdWVyeVBhcmFtZXRlcihcJ3Nob3dFeHBlY3RhdGlvbnNcJywgdHJ1ZSlcIj5TaG93
IHJlc3VsdHM8L3NwYW4+IHwgJyArCisgICAgICAgICAgICAnPHNwYW4gY2xhc3M9bGluayBvbmNs
aWNrPVwiZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0xhcmdlRXhwZWN0YXRpb25z
XCcsIHRydWUpXCI+U2hvdyBsYXJnZSB0aHVtYm5haWxzPC9zcGFuPiB8ICcgKwogICAgICAgICAg
ICAgJzxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3VsdHMvZGlmZnMgZnJvbSB0aGUgbW9zdCByZWNl
bnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj48L2Rpdj4nICsKICAgICAgICAgJzwvZGl2Picp
OwogCi0gICAgZ19jdXJyZW50U3RhdGUuc2hvd0Nocm9tZSA9IHRydWU7CisgICAgaGlzdG9yeUlu
c3RhbmNlLmRhc2hib2FyZFNwZWNpZmljU3RhdGUuc2hvd0Nocm9tZSA9IHRydWU7CiAKICAgICBl
cXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RzKHRlc3RzKSwKICAgICAgICAgJzxoMj48YSBocmVm
PSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvZm9vL25v
bmV4aXN0YW50Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5mb28vbm9uZXhpc3RhbnQuaHRtbDwvYT48
L2gyPicgKwpAQCAtNDk2LDE2ICs1MTQsMTYgQEAgdGVzdCgnaHRtbEZvckluZGl2aWR1YWxUZXN0
cycsIDQsIGZ1bmN0aW9uKCkgewogfSk7CiAKIHRlc3QoJ2h0bWxGb3JTaW5nbGVUZXN0Um93Jywg
MSwgZnVuY3Rpb24oKSB7Ci0gICAgcmVzZXRHbG9iYWxzKCk7CisgICAgdmFyIGhpc3RvcnlJbnN0
YW5jZSA9IHJlc2V0R2xvYmFscygpOwogICAgIHZhciBidWlsZGVyID0gJ2R1bW15QnVpbGRlcic7
CiAgICAgQlVJTERFUl9UT19NQVNURVJbYnVpbGRlcl0gPSBDSFJPTUlVTV9XRUJLSVRfQlVJTERF
Ul9NQVNURVI7CiAgICAgdmFyIHRlc3QgPSBjcmVhdGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCgnZm9v
L2V4aXN0cy5odG1sJywgYnVpbGRlcik7Ci0gICAgZ19jdXJyZW50U3RhdGUuc2hvd0NvcnJlY3RF
eHBlY3RhdGlvbnMgPSB0cnVlOworICAgIGhpc3RvcnlJbnN0YW5jZS5kYXNoYm9hcmRTcGVjaWZp
Y1N0YXRlLnNob3dDb3JyZWN0RXhwZWN0YXRpb25zID0gdHJ1ZTsKICAgICBnX3Jlc3VsdHNCeUJ1
aWxkZXJbYnVpbGRlcl0gPSB7YnVpbGROdW1iZXJzOiBbMiwgMV0sIHdlYmtpdFJldmlzaW9uOiBb
MTIzNCwgMTIzM119OwogICAgIHRlc3QucmF3UmVzdWx0cyA9IFtbMSwgJ0YnXSwgWzIsICdJJ11d
OwogICAgIHRlc3QucmF3VGltZXMgPSBbWzEsIDBdLCBbMiwgNV1dOwogICAgIHZhciBleHBlY3Rl
ZCA9ICc8dHI+JyArCi0gICAgICAgICc8dGQgY2xhc3M9InRlc3QtbGluayI+PHNwYW4gY2xhc3M9
ImxpbmsiIG9uY2xpY2s9InNldFF1ZXJ5UGFyYW1ldGVyKFwndGVzdHNcJyxcJ2Zvby9leGlzdHMu
aHRtbFwnKTsiPmZvby9leGlzdHMuaHRtbDwvc3Bhbj4nICsKKyAgICAgICAgJzx0ZCBjbGFzcz0i
dGVzdC1saW5rIj48c3BhbiBjbGFzcz0ibGluayIgb25jbGljaz0iZ19oaXN0b3J5LnNldFF1ZXJ5
UGFyYW1ldGVyKFwndGVzdHNcJyxcJ2Zvby9leGlzdHMuaHRtbFwnKTsiPmZvby9leGlzdHMuaHRt
bDwvc3Bhbj4nICsKICAgICAgICAgJzx0ZCBjbGFzcz1vcHRpb25zLWNvbnRhaW5lcj48YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9lbnRlcl9idWcuY2dpP2Fzc2lnbmVkX3RvPXdlYmtp
dC11bmFzc2lnbmVkJTQwbGlzdHMud2Via2l0Lm9yZyZwcm9kdWN0PVdlYktpdCZmb3JtX25hbWU9
ZW50ZXJfYnVnJmNvbXBvbmVudD1Ub29scyUyMCUyRiUyMFRlc3RzJnNob3J0X2Rlc2M9TGF5b3V0
JTIwVGVzdCUyMGZvbyUyRmV4aXN0cy5odG1sJTIwaXMlMjBmYWlsaW5nJmNvbW1lbnQ9VGhlJTIw
Zm9sbG93aW5nJTIwbGF5b3V0JTIwdGVzdCUyMGlzJTIwZmFpbGluZyUyMG9uJTIwJTVCaW5zZXJ0
JTIwcGxhdGZvcm0lNUQlMEElMEFmb28lMkZleGlzdHMuaHRtbCUwQSUwQVByb2JhYmxlJTIwY2F1
c2UlM0ElMEElMEElNUJpbnNlcnQlMjBwcm9iYWJsZSUyMGNhdXNlJTVEIiBjbGFzcz0iZmlsZS1i
dWciPkZJTEUgQlVHPC9hPicgKwogICAgICAgICAnPHRkIGNsYXNzPW9wdGlvbnMtY29udGFpbmVy
PicgKwogICAgICAgICAgICAgJzx0ZCBjbGFzcz1vcHRpb25zLWNvbnRhaW5lcj4nICsKQEAgLTU0
NSwxOCArNTYzLDYgQEAgdGVzdCgnaXNDaHJvbWl1bVdlYmtpdERlcHNUZXN0UnVubmVyJywgMSwg
ZnVuY3Rpb24oKSB7CiAgICAgZGVlcEVxdWFsKGJ1aWxkZXJMaXN0LmZpbHRlcihpc0Nocm9taXVt
V2Via2l0RGVwc1Rlc3RSdW5uZXIpLCBleHBlY3RlZEJ1aWxkZXJzKTsKIH0pOwogCi10ZXN0KCdw
YXJzZUNyb3NzRGFzaGJvYXJkUGFyYW1ldGVycycsIDIsIGZ1bmN0aW9uKCkgewotICAgIGVxdWFs
KHdpbmRvdy5sb2NhdGlvbi5oYXNoLCAnI3VzZVRlc3REYXRhPXRydWUnKTsKLSAgICBwYXJzZUNy
b3NzRGFzaGJvYXJkUGFyYW1ldGVycygpOwotCi0gICAgdmFyIGV4cGVjdGVkUGFyYW1ldGVycyA9
IHt9OwotICAgIGZvciAodmFyIGtleSBpbiBnX2RlZmF1bHRDcm9zc0Rhc2hib2FyZFN0YXRlVmFs
dWVzKQotICAgICAgICBleHBlY3RlZFBhcmFtZXRlcnNba2V5XSA9IGdfZGVmYXVsdENyb3NzRGFz
aGJvYXJkU3RhdGVWYWx1ZXNba2V5XTsKLSAgICBleHBlY3RlZFBhcmFtZXRlcnMudXNlVGVzdERh
dGEgPSB0cnVlOwotCi0gICAgZGVlcEVxdWFsKGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSwgZXhwZWN0
ZWRQYXJhbWV0ZXJzKTsKLX0pOwotCiB0ZXN0KCdidWlsZGVyR3JvdXBJc1RvVFdlYktpdEF0dHJp
YnV0ZScsIDIsIGZ1bmN0aW9uKCkgewogICAgIHZhciBkdW1teU1hc3RlciA9IG5ldyBidWlsZGVy
cy5CdWlsZGVyTWFzdGVyKCdDaHJvbWl1bScsICdkdW1teXVybCcsIHsnbGF5b3V0LXRlc3RzJzog
eydidWlsZGVycyc6IFsnV2ViS2l0IExpbnV4JywgJ1dlYktpdCBMaW51eCAoZGJnKScsICdXZWJL
aXQgTWFjMTAuNycsICdXZWJLaXQgV2luJ119fSk7CiAgICAgdmFyIHRlc3RCdWlsZGVyR3JvdXBz
ID0gewpAQCAtNjgzLDEzICs2ODksMTMgQEAgdGVzdCgnVGVzdFRyaWUnLCAzLCBmdW5jdGlvbigp
IHsKIH0pOwogCiB0ZXN0KCdjaGFuZ2VUZXN0VHlwZUludmFsaWRhdGVzR3JvdXAnLCAxLCBmdW5j
dGlvbigpIHsKLSAgICByZXNldEdsb2JhbHMoKTsKKyAgICB2YXIgaGlzdG9yeUluc3RhbmNlID0g
cmVzZXRHbG9iYWxzKCk7CiAgICAgdmFyIG9yaWdpbmFsR3JvdXAgPSAnQFRvVCAtIGNocm9taXVt
Lm9yZyc7CiAgICAgdmFyIG9yaWdpbmFsVGVzdFR5cGUgPSAnbGF5b3V0LXRlc3RzJzsKICAgICBs
b2FkQnVpbGRlcnNMaXN0KG9yaWdpbmFsR3JvdXAsIG9yaWdpbmFsVGVzdFR5cGUpOwotICAgIGdf
Y3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCA9IG9yaWdpbmFsR3JvdXA7Ci0gICAgZ19jcm9zc0Rh
c2hib2FyZFN0YXRlLnRlc3RUeXBlID0gb3JpZ2luYWxUZXN0VHlwZTsKKyAgICBoaXN0b3J5SW5z
dGFuY2UuY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCA9IG9yaWdpbmFsR3JvdXA7CisgICAgaGlz
dG9yeUluc3RhbmNlLmNyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUgPSBvcmlnaW5hbFRlc3RU
eXBlOwogCi0gICAgaW52YWxpZGF0ZVF1ZXJ5UGFyYW1ldGVycyh7J3Rlc3RUeXBlJzogJ3VpX3Rl
c3RzJ30pOwotICAgIG5vdEVxdWFsKGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCwgb3JpZ2lu
YWxHcm91cCwgImdyb3VwIHNob3VsZCBoYXZlIGJlZW4gaW52YWxpZGF0ZWQiKTsgICAKKyAgICBo
aXN0b3J5SW5zdGFuY2UuaW52YWxpZGF0ZVF1ZXJ5UGFyYW1ldGVycyh7J3Rlc3RUeXBlJzogJ3Vp
X3Rlc3RzJ30pOworICAgIG5vdEVxdWFsKGhpc3RvcnlJbnN0YW5jZS5jcm9zc0Rhc2hib2FyZFN0
YXRlLmdyb3VwLCBvcmlnaW5hbEdyb3VwLCAiZ3JvdXAgc2hvdWxkIGhhdmUgYmVlbiBpbnZhbGlk
YXRlZCIpOyAgIAogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9oaXN0b3J5LmpzIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9oaXN0b3J5LmpzCmluZGV4IDI4
ZDIzZGQyNGJmMmYyNWNjN2JiYTgwNTUyNzBiY2IxNGY2ZGQ1YjMuLjQ5YzcxMDg4NTI2ZTM5MjE4
ZGM1MDZjMjEzNzZiODUzZTRmNWNlZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvaGlzdG9yeS5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2hpc3RvcnkuanMKQEAgLTMxLDYgKzMxLDEzIEBAIHZhciBo
aXN0b3J5ID0gaGlzdG9yeSB8fCB7fTsKIAogKGZ1bmN0aW9uKCkgewogCitoaXN0b3J5LkRFRkFV
TFRfQ1JPU1NfREFTSEJPQVJEX1NUQVRFX1ZBTFVFUyA9IHsKKyAgICBncm91cDogbnVsbCwKKyAg
ICBzaG93QWxsUnVuczogZmFsc2UsCisgICAgdGVzdFR5cGU6ICdsYXlvdXQtdGVzdHMnLAorICAg
IHVzZVRlc3REYXRhOiBmYWxzZSwKK30gICAgCisKIGhpc3RvcnkudmFsaWRhdGVQYXJhbWV0ZXIg
PSBmdW5jdGlvbihzdGF0ZSwga2V5LCB2YWx1ZSwgdmFsaWRhdGVGbikKIHsKICAgICBpZiAodmFs
aWRhdGVGbigpKQpAQCAtNzQsOCArODEsNyBAQCBoaXN0b3J5LnF1ZXJ5SGFzaEFzTWFwID0gZnVu
Y3Rpb24oKQogICAgIHJldHVybiBwYXJhbXNNYXA7CiB9CiAKLS8vIFRPRE8oanBhcmVudCk6IE1h
a2UgcHJpdmF0ZSBvbmNlIGNhbGxlcnMgbW92ZSBoZXJlLgotaGlzdG9yeS5kaWZmU3RhdGVzID0g
ZnVuY3Rpb24ob2xkU3RhdGUsIG5ld1N0YXRlKQoraGlzdG9yeS5fZGlmZlN0YXRlcyA9IGZ1bmN0
aW9uKG9sZFN0YXRlLCBuZXdTdGF0ZSkKIHsKICAgICAvLyBJZiB0aGVyZSBpcyBubyBvbGQgc3Rh
dGUsIGV2ZXJ5dGhpbmcgaW4gdGhlIGN1cnJlbnQgc3RhdGUgaXMgbmV3LgogICAgIGlmICghb2xk
U3RhdGUpCkBAIC05Miw4ICs5OCw3IEBAIGhpc3RvcnkuZGlmZlN0YXRlcyA9IGZ1bmN0aW9uKG9s
ZFN0YXRlLCBuZXdTdGF0ZSkKICAgICByZXR1cm4gY2hhbmdlZFBhcmFtczsKIH0KIAotLy8gVE9E
TyhqcGFyZW50KTogTWFrZSBwcml2YXRlIG9uY2UgY2FsbGVycyBtb3ZlIGhlcmUuCi1oaXN0b3J5
LmZpbGxNaXNzaW5nVmFsdWVzID0gZnVuY3Rpb24odG8sIGZyb20pCitoaXN0b3J5Ll9maWxsTWlz
c2luZ1ZhbHVlcyA9IGZ1bmN0aW9uKHRvLCBmcm9tKQogewogICAgIGZvciAodmFyIHN0YXRlIGlu
IGZyb20pIHsKICAgICAgICAgaWYgKCEoc3RhdGUgaW4gdG8pKQpAQCAtMTAxLDQgKzEwNiwxNjkg
QEAgaGlzdG9yeS5maWxsTWlzc2luZ1ZhbHVlcyA9IGZ1bmN0aW9uKHRvLCBmcm9tKQogICAgIH0K
IH0KIAoraGlzdG9yeS5IaXN0b3J5ID0gZnVuY3Rpb24oKQoreworICB0aGlzLmNyb3NzRGFzaGJv
YXJkU3RhdGUgPSB7fTsKKyAgdGhpcy5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlID0ge307Cit9CisK
K3ZhciBSRUxPQURfUkVRVUlSSU5HX1BBUkFNRVRFUlMgPSBbJ3Nob3dBbGxSdW5zJywgJ2dyb3Vw
JywgJ3Rlc3RUeXBlJ107CisKK2hpc3RvcnkuSGlzdG9yeS5wcm90b3R5cGUgPSB7CisgICAgaXNM
YXlvdXRUZXN0UmVzdWx0czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
Y3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9PSAnbGF5b3V0LXRlc3RzJzsKKyAgICB9LAor
ICAgIGlzR1BVVGVzdFJlc3VsdHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLmNyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUgPT0gJ2dwdV90ZXN0cyc7CisgICAgfSwK
KyAgICBwYXJzZUNyb3NzRGFzaGJvYXJkUGFyYW1ldGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5jcm9zc0Rhc2hib2FyZFN0YXRlID0ge307CisgICAgICAgIHZhciBwYXJhbWV0
ZXJzID0gaGlzdG9yeS5xdWVyeUhhc2hBc01hcCgpOworICAgICAgICBmb3IgKHBhcmFtZXRlck5h
bWUgaW4gaGlzdG9yeS5ERUZBVUxUX0NST1NTX0RBU0hCT0FSRF9TVEFURV9WQUxVRVMpCisgICAg
ICAgICAgICB0aGlzLnBhcnNlUGFyYW1ldGVyKHBhcmFtZXRlcnMsIHBhcmFtZXRlck5hbWUpOwor
CisgICAgICAgIGhpc3RvcnkuX2ZpbGxNaXNzaW5nVmFsdWVzKHRoaXMuY3Jvc3NEYXNoYm9hcmRT
dGF0ZSwgaGlzdG9yeS5ERUZBVUxUX0NST1NTX0RBU0hCT0FSRF9TVEFURV9WQUxVRVMpOworICAg
IH0sCisgICAgLy8gVE9ETyhqcGFyZW50KTogTWFrZSBwcml2YXRlIG9uY2UgY2FsbGVycyBtb3Zl
IGhlcmUuCisgICAgcGFyc2VQYXJhbWV0ZXJzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgb2xkQ3Jvc3NEYXNoYm9hcmRTdGF0ZSA9IHRoaXMuY3Jvc3NEYXNoYm9hcmRTdGF0ZTsKKyAg
ICAgICAgdmFyIG9sZERhc2hib2FyZFNwZWNpZmljU3RhdGUgPSB0aGlzLmRhc2hib2FyZFNwZWNp
ZmljU3RhdGU7CisKKyAgICAgICAgdGhpcy5wYXJzZUNyb3NzRGFzaGJvYXJkUGFyYW1ldGVycygp
OworICAgICAgICAKKyAgICAgICAgLy8gU29tZSBwYXJhbWV0ZXJzIHJlcXVpcmUgbG9hZGluZyBk
aWZmZXJlbnQgSlNPTiBmaWxlcyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBEbyBhIHJlbG9hZC4K
KyAgICAgICAgaWYgKE9iamVjdC5rZXlzKG9sZENyb3NzRGFzaGJvYXJkU3RhdGUpLmxlbmd0aCkg
eworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuY3Jvc3NEYXNoYm9hcmRTdGF0ZSkg
eworICAgICAgICAgICAgICAgIGlmIChvbGRDcm9zc0Rhc2hib2FyZFN0YXRlW2tleV0gIT0gdGhp
cy5jcm9zc0Rhc2hib2FyZFN0YXRlW2tleV0gJiYgUkVMT0FEX1JFUVVJUklOR19QQVJBTUVURVJT
LmluZGV4T2Yoa2V5KSAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRp
b24ucmVsb2FkKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwYXJzZURhc2hi
b2FyZFNwZWNpZmljUGFyYW1ldGVycygpOworICAgICAgICB2YXIgZGFzaGJvYXJkU3BlY2lmaWNE
aWZmU3RhdGUgPSBoaXN0b3J5Ll9kaWZmU3RhdGVzKG9sZERhc2hib2FyZFNwZWNpZmljU3RhdGUs
IHRoaXMuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZSk7CisKKyAgICAgICAgaGlzdG9yeS5fZmlsbE1p
c3NpbmdWYWx1ZXModGhpcy5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLCBnX2RlZmF1bHREYXNoYm9h
cmRTcGVjaWZpY1N0YXRlVmFsdWVzKTsKKworICAgICAgICAvLyBGSVhNRTogZGFzaGJvYXJkX2Jh
c2Ugc2hvdWxkbid0IGtub3cgYW55dGhpbmcgYWJvdXQgc3BlY2lmaWMgZGFzaGJvYXJkIHNwZWNp
ZmljIGtleXMuCisgICAgICAgIGlmIChkYXNoYm9hcmRTcGVjaWZpY0RpZmZTdGF0ZS5idWlsZGVy
KQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS50ZXN0czsK
KyAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS50ZXN0cykKKyAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLmRhc2hib2FyZFNwZWNpZmljU3RhdGUuYnVpbGRlcjsKKworICAgICAg
ICB2YXIgc2hvdWxkR2VuZXJhdGVQYWdlID0gdHJ1ZTsKKyAgICAgICAgaWYgKE9iamVjdC5rZXlz
KGRhc2hib2FyZFNwZWNpZmljRGlmZlN0YXRlKS5sZW5ndGgpCisgICAgICAgICAgICBzaG91bGRH
ZW5lcmF0ZVBhZ2UgPSBoYW5kbGVRdWVyeVBhcmFtZXRlckNoYW5nZShkYXNoYm9hcmRTcGVjaWZp
Y0RpZmZTdGF0ZSk7CisgICAgICAgIHJldHVybiBzaG91bGRHZW5lcmF0ZVBhZ2U7CisgICAgfSwK
KyAgICAvLyBUT0RPKGpwYXJlbnQpOiBNYWtlIHByaXZhdGUgb25jZSBjYWxsZXJzIG1vdmUgaGVy
ZS4KKyAgICBwYXJzZVBhcmFtZXRlcjogZnVuY3Rpb24ocGFyYW1ldGVycywga2V5KQorICAgIHsK
KyAgICAgICAgaWYgKCEoa2V5IGluIHBhcmFtZXRlcnMpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB2YXIgdmFsdWUgPSBwYXJhbWV0ZXJzW2tleV07CisgICAgICAgIGlmICghdGhpcy5f
aGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyV3JhcHBlcihrZXksIHZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnNvbGUubG9nKCJJbnZhbGlkIHF1ZXJ5IHBhcmFtZXRlcjogIiArIGtleSArICc9JyArIHZh
bHVlKTsKKyAgICB9LAorICAgIC8vIFRha2VzIGEga2V5IGFuZCBhIHZhbHVlIGFuZCBzZXRzIHRo
ZSB0aGlzLmRhc2hib2FyZFNwZWNpZmljU3RhdGVba2V5XSA9IHZhbHVlIGlmZiBrZXkgaXMKKyAg
ICAvLyBhIHZhbGlkIGhhc2ggcGFyYW1ldGVyIGFuZCB0aGUgdmFsdWUgaXMgYSB2YWxpZCB2YWx1
ZSBmb3IgdGhhdCBrZXkuIEhhbmRsZXMKKyAgICAvLyBjcm9zcy1kYXNoYm9hcmQgcGFyYW1ldGVy
cyB0aGVuIGZhbGxzIGJhY2sgdG8gY2FsbGluZworICAgIC8vIGhhbmRsZVZhbGlkSGFzaFBhcmFt
ZXRlciBmb3IgZGFzaGJvYXJkLXNwZWNpZmljIHBhcmFtZXRlcnMuCisgICAgLy8KKyAgICAvLyBA
cmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBrZXkgd2hhdCBpbnNlcnRlZCBpbnRvIHRoZSB0
aGlzLmRhc2hib2FyZFNwZWNpZmljU3RhdGUuCisgICAgX2hhbmRsZVZhbGlkSGFzaFBhcmFtZXRl
cldyYXBwZXI6IGZ1bmN0aW9uKGtleSwgdmFsdWUpCisgICAgeworICAgICAgICBzd2l0Y2goa2V5
KSB7CisgICAgICAgIGNhc2UgJ3Rlc3RUeXBlJzoKKyAgICAgICAgICAgIGhpc3RvcnkudmFsaWRh
dGVQYXJhbWV0ZXIodGhpcy5jcm9zc0Rhc2hib2FyZFN0YXRlLCBrZXksIHZhbHVlLAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gVEVTVF9UWVBFUy5pbmRleE9mKHZhbHVlKSAh
PSAtMTsgfSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlICdncm91
cCc6CisgICAgICAgICAgICBoaXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKHRoaXMuY3Jvc3NEYXNo
Ym9hcmRTdGF0ZSwga2V5LCB2YWx1ZSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9V
UFMgfHwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpbiBDSFJPTUlVTV9HUFVfVEVTVFNf
QlVJTERFUl9HUk9VUFMgfHwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpbiBDSFJPTUlV
TV9JTlNUUlVNRU5UQVRJT05fVEVTVFNfQlVJTERFUl9HUk9VUFMgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSBpbiBDSFJPTUlVTV9HVEVTVFNfQlVJTERFUl9HUk9VUFM7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlICd1
c2VUZXN0RGF0YSc6CisgICAgICAgIGNhc2UgJ3Nob3dBbGxSdW5zJzoKKyAgICAgICAgICAgIHRo
aXMuY3Jvc3NEYXNoYm9hcmRTdGF0ZVtrZXldID0gdmFsdWUgPT0gJ3RydWUnOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBo
YW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9LAor
ICAgIHF1ZXJ5UGFyYW1ldGVyVmFsdWU6IGZ1bmN0aW9uKHBhcmFtZXRlcikKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLmRhc2hib2FyZFNwZWNpZmljU3RhdGVbcGFyYW1ldGVyXSB8fCB0aGlz
LmNyb3NzRGFzaGJvYXJkU3RhdGVbcGFyYW1ldGVyXTsKKyAgICB9LCAKKyAgICAvLyBTZXRzIHRo
ZSBwYWdlIHN0YXRlLiBUYWtlcyB2YXJhcmdzIG9mIGtleSwgdmFsdWUgcGFpcnMuCisgICAgc2V0
UXVlcnlQYXJhbWV0ZXI6IGZ1bmN0aW9uKHZhcl9hcmdzKQorICAgIHsKKyAgICAgICAgdmFyIHF1
ZXJ5UGFyYW1zQXNTdGF0ZSA9IHt9OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgdmFyIGtleSA9IGFyZ3VtZW50c1tp
XTsKKyAgICAgICAgICAgIHF1ZXJ5UGFyYW1zQXNTdGF0ZVtrZXldID0gYXJndW1lbnRzW2kgKyAx
XTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuaW52YWxpZGF0ZVF1ZXJ5UGFyYW1ldGVycyhx
dWVyeVBhcmFtc0FzU3RhdGUpOworCisgICAgICAgIHZhciBuZXdTdGF0ZSA9IHRoaXMuX2NvbWJp
bmVkRGFzaGJvYXJkU3RhdGUoKTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHF1ZXJ5UGFyYW1z
QXNTdGF0ZSkgeworICAgICAgICAgICAgbmV3U3RhdGVba2V5XSA9IHF1ZXJ5UGFyYW1zQXNTdGF0
ZVtrZXldOworICAgICAgICB9CisKKyAgICAgICAgLy8gTm90ZTogV2UgdXNlIHdpbmRvdy5sb2Nh
dGlvbi5oYXNoIHJhdGhlciB0aGF0IHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlCisgICAgICAgIC8v
IGJlY2F1c2Ugb2YgYnVncyBpbiBDaHJvbWUgd2hlcmUgZXh0cmEgZW50cmllcyB3ZXJlIGdldHRp
bmcgY3JlYXRlZAorICAgICAgICAvLyB3aGVuIGJhY2sgYnV0dG9uIHdhcyBwcmVzc2VkIGFuZCBm
dWxsIHBhZ2UgbmF2aWdhdGlvbiB3YXMgb2NjdXJpbmcuCisgICAgICAgIC8vIEZJWE1FOiBmaWxl
IHRob3NlIGJ1Z3MuCisgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gdGhpcy5fcGVybWFM
aW5rVVJMSGFzaChuZXdTdGF0ZSk7CisgICAgfSwKKyAgICB0b2dnbGVRdWVyeVBhcmFtZXRlcjog
ZnVuY3Rpb24ocGFyYW0pCisgICAgeworICAgICAgICB0aGlzLnNldFF1ZXJ5UGFyYW1ldGVyKHBh
cmFtLCAhdGhpcy5xdWVyeVBhcmFtZXRlclZhbHVlKHBhcmFtKSk7CisgICAgfSwKKyAgICBpbnZh
bGlkYXRlUXVlcnlQYXJhbWV0ZXJzOiBmdW5jdGlvbihxdWVyeVBhcmFtc0FzU3RhdGUpCisgICAg
eworICAgICAgICBmb3IgKHZhciBrZXkgaW4gcXVlcnlQYXJhbXNBc1N0YXRlKSB7CisgICAgICAg
ICAgICBpZiAoa2V5IGluIENST1NTX0RCX0lOVkFMSURBVElOR19QQVJBTUVURVJTKQorICAgICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLmNyb3NzRGFzaGJvYXJkU3RhdGVbQ1JPU1NfREJfSU5WQUxJ
REFUSU5HX1BBUkFNRVRFUlNba2V5XV07CisgICAgICAgICAgICBpZiAoREJfU1BFQ0lGSUNfSU5W
QUxJREFUSU5HX1BBUkFNRVRFUlMgJiYga2V5IGluIERCX1NQRUNJRklDX0lOVkFMSURBVElOR19Q
QVJBTUVURVJTKQorICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRhc2hib2FyZFNwZWNpZmlj
U3RhdGVbREJfU1BFQ0lGSUNfSU5WQUxJREFUSU5HX1BBUkFNRVRFUlNba2V5XV07CisgICAgICAg
IH0KKyAgICB9LAorICAgIF9qb2luUGFyYW1ldGVyczogZnVuY3Rpb24oc3RhdGVPYmplY3QpCisg
ICAgeworICAgICAgICB2YXIgc3RhdGUgPSBbXTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHN0
YXRlT2JqZWN0KSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdGF0ZU9iamVjdFtrZXldOwor
ICAgICAgICAgICAgaWYgKHZhbHVlICE9IGRlZmF1bHRWYWx1ZShrZXkpKQorICAgICAgICAgICAg
ICAgIHN0YXRlLnB1c2goa2V5ICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXRlLmpvaW4oJyYnKTsKKyAgICB9LCAKKyAgICBf
cGVybWFMaW5rVVJMSGFzaDogZnVuY3Rpb24ob3B0X3N0YXRlKQorICAgIHsKKyAgICAgICAgdmFy
IHN0YXRlID0gb3B0X3N0YXRlIHx8IHRoaXMuX2NvbWJpbmVkRGFzaGJvYXJkU3RhdGUoKTsKKyAg
ICAgICAgcmV0dXJuICcjJyArIHRoaXMuX2pvaW5QYXJhbWV0ZXJzKHN0YXRlKTsKKyAgICB9LAor
ICAgIF9jb21iaW5lZERhc2hib2FyZFN0YXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgY29tYmluZWRTdGF0ZSA9IE9iamVjdC5jcmVhdGUodGhpcy5kYXNoYm9hcmRTcGVjaWZpY1N0
YXRlKTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuY3Jvc3NEYXNoYm9hcmRTdGF0ZSkK
KyAgICAgICAgICAgIGNvbWJpbmVkU3RhdGVba2V5XSA9IHRoaXMuY3Jvc3NEYXNoYm9hcmRTdGF0
ZVtrZXldOworICAgICAgICByZXR1cm4gY29tYmluZWRTdGF0ZTsgICAgCisgICAgfQorfQorCiB9
KSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvaGlzdG9yeV91bml0dGVzdHMuanMgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2hpc3RvcnlfdW5pdHRlc3RzLmpz
CmluZGV4IDUxYzAyYzQ1MjQ5ODI1ZTJmMGY5MTgwOWQ3MTcwY2U4YmEyYjM3MWUuLjc1NTk0NTM2
YzJhZGE5N2FjMWNmZDJlYWVkNWE1OTZiNjFlYjAzOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvaGlzdG9yeV91bml0dGVzdHMuanMKKysrIGIv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9oaXN0b3J5X3VuaXR0ZXN0
cy5qcwpAQCAtMzMsMTggKzMzLDMzIEBAIHRlc3QoJ3F1ZXJ5SGFzaEFzTWFwJywgMiwgZnVuY3Rp
b24oKSB7CiAKIHRlc3QoJ2RpZmZTdGF0ZXMnLCA1LCBmdW5jdGlvbigpIHsKICAgICB2YXIgbmV3
U3RhdGUgPSB7YTogMSwgYjogMn07Ci0gICAgZGVlcEVxdWFsKGhpc3RvcnkuZGlmZlN0YXRlcyhu
dWxsLCBuZXdTdGF0ZSksIG5ld1N0YXRlKTsKKyAgICBkZWVwRXF1YWwoaGlzdG9yeS5fZGlmZlN0
YXRlcyhudWxsLCBuZXdTdGF0ZSksIG5ld1N0YXRlKTsKIAogICAgIHZhciBvbGRTdGF0ZSA9IHth
OiAxfTsKLSAgICBkZWVwRXF1YWwoaGlzdG9yeS5kaWZmU3RhdGVzKG9sZFN0YXRlLCBuZXdTdGF0
ZSksIHtiOiAyfSk7CisgICAgZGVlcEVxdWFsKGhpc3RvcnkuX2RpZmZTdGF0ZXMob2xkU3RhdGUs
IG5ld1N0YXRlKSwge2I6IDJ9KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmQgb2Ygd2Vp
cmQuIEkgdGhpbmsgdGhlIGV4aXN0aW5nIHVzZXJzIG9mIHRoaXMgY29kZSB3b3JrIGNvcnJlY3Rs
eSwgYnV0IGl0J3MgYSBjb25mdXNpbmcgcmVzdWx0LgogICAgIHZhciBvbGRTdGF0ZSA9IHtjOiAx
fTsKLSAgICBkZWVwRXF1YWwoaGlzdG9yeS5kaWZmU3RhdGVzKG9sZFN0YXRlLCBuZXdTdGF0ZSks
IHthOjEsIGI6IDJ9KTsKKyAgICBkZWVwRXF1YWwoaGlzdG9yeS5fZGlmZlN0YXRlcyhvbGRTdGF0
ZSwgbmV3U3RhdGUpLCB7YToxLCBiOiAyfSk7CiAKICAgICB2YXIgb2xkU3RhdGUgPSB7YTogMSwg
YjogMn07Ci0gICAgZGVlcEVxdWFsKGhpc3RvcnkuZGlmZlN0YXRlcyhvbGRTdGF0ZSwgbmV3U3Rh
dGUpLCB7fSk7CisgICAgZGVlcEVxdWFsKGhpc3RvcnkuX2RpZmZTdGF0ZXMob2xkU3RhdGUsIG5l
d1N0YXRlKSwge30pOwogCiAgICAgdmFyIG9sZFN0YXRlID0ge2E6IDIsIGI6IDN9OwotICAgIGRl
ZXBFcXVhbChoaXN0b3J5LmRpZmZTdGF0ZXMob2xkU3RhdGUsIG5ld1N0YXRlKSwge2E6IDEsIGI6
IDJ9KTsKLX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBkZWVwRXF1YWwoaGlz
dG9yeS5fZGlmZlN0YXRlcyhvbGRTdGF0ZSwgbmV3U3RhdGUpLCB7YTogMSwgYjogMn0pOworfSk7
CisKK3Rlc3QoJ3BhcnNlQ3Jvc3NEYXNoYm9hcmRQYXJhbWV0ZXJzJywgMiwgZnVuY3Rpb24oKSB7
CisgICAgdmFyIGhpc3RvcnlJbnN0YW5jZSA9IG5ldyBoaXN0b3J5Lkhpc3RvcnkoKTsKKyAgICAv
LyBGSVhNRShqcGFyZW50KTogUmVtb3ZlIHRoaXMgb25jZSBwYXJzZVBhcmFtZXRlcnMgbW92ZXMg
b250byBoaXN0b3J5IG9iai4KKyAgICBnX2hpc3RvcnkgPSBoaXN0b3J5SW5zdGFuY2U7CisgICAg
ZXF1YWwod2luZG93LmxvY2F0aW9uLmhhc2gsICcjdXNlVGVzdERhdGE9dHJ1ZScpOworICAgIGhp
c3RvcnlJbnN0YW5jZS5wYXJzZUNyb3NzRGFzaGJvYXJkUGFyYW1ldGVycygpOworCisgICAgdmFy
IGV4cGVjdGVkUGFyYW1ldGVycyA9IHt9OworICAgIGZvciAodmFyIGtleSBpbiBoaXN0b3J5LkRF
RkFVTFRfQ1JPU1NfREFTSEJPQVJEX1NUQVRFX1ZBTFVFUykKKyAgICAgICAgZXhwZWN0ZWRQYXJh
bWV0ZXJzW2tleV0gPSBoaXN0b3J5LkRFRkFVTFRfQ1JPU1NfREFTSEJPQVJEX1NUQVRFX1ZBTFVF
U1trZXldOworICAgIGV4cGVjdGVkUGFyYW1ldGVycy51c2VUZXN0RGF0YSA9IHRydWU7CisKKyAg
ICBkZWVwRXF1YWwoaGlzdG9yeUluc3RhbmNlLmNyb3NzRGFzaGJvYXJkU3RhdGUsIGV4cGVjdGVk
UGFyYW1ldGVycyk7Cit9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvbG9hZGVyLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy9sb2FkZXIuanMKaW5kZXggYTdiM2IxODk5OTNiY2YzNjQyMTg4ZTdhMmFmYjhj
MTk4ZmEyYzdiZi4uYTUyNmVlYjUyOGM3NmVhODU1NWUwY2RlN2U4MWYyNjg4MmY5YWM4YSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXIu
anMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXIu
anMKQEAgLTM3LDcgKzM3LDcgQEAgdmFyIENIUk9NSVVNX0VYUEVDVEFUSU9OU19VUkwgPSAnaHR0
cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0wKIGZ1bmN0aW9uIHBh
dGhUb0J1aWxkZXJSZXN1bHRzRmlsZShidWlsZGVyTmFtZSkgewogICAgIHJldHVybiBURVNUX1JF
U1VMVFNfU0VSVkVSICsgJ3Rlc3RmaWxlP2J1aWxkZXI9JyArIGJ1aWxkZXJOYW1lICsKICAgICAg
ICAgICAgJyZtYXN0ZXI9JyArIGJ1aWxkZXJNYXN0ZXIoYnVpbGRlck5hbWUpLm5hbWUgKwotICAg
ICAgICAgICAnJnRlc3R0eXBlPScgKyBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUgKyAn
Jm5hbWU9JzsKKyAgICAgICAgICAgJyZ0ZXN0dHlwZT0nICsgZ19oaXN0b3J5LmNyb3NzRGFzaGJv
YXJkU3RhdGUudGVzdFR5cGUgKyAnJm5hbWU9JzsKIH0KIAogbG9hZGVyLnJlcXVlc3QgPSBmdW5j
dGlvbih1cmwsIHN1Y2Nlc3MsIGVycm9yLCBvcHRfaXNCaW5hcnlEYXRhKQpAQCAtNjksNiArNjks
OCBAQCBsb2FkZXIuTG9hZGVyID0gZnVuY3Rpb24ob3B0X29uTG9hZGluZ0NvbXBsZXRlKQogICAg
IHRoaXMuX3N0YWxlQnVpbGRlcnMgPSBbXTsKICAgICB0aGlzLl9lcnJvcnMgPSBuZXcgdWkuRXJy
b3JzKCk7CiAgICAgdGhpcy5fb25Mb2FkaW5nQ29tcGxldGUgPSBvcHRfb25Mb2FkaW5nQ29tcGxl
dGUgfHwgZnVuY3Rpb24oKSB7fTsKKyAgICAvLyBUT0RPKGpwYXJlbnQpOiBQYXNzIGluIHRoZSBh
cHByb3ByaWF0ZSBoaXN0b3J5IG9iaiBwZXIgZGIuCisgICAgdGhpcy5faGlzdG9yeSA9IGdfaGlz
dG9yeTsKIH0KIAogLy8gVE9ETyhhYm94aGFsbCk6IGZpZ3VyZSBvdXQgd2hldGhlciB0aGlzIGlz
IGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBhbmQKQEAgLTExMiw3ICsxMTQsNyBAQCBsb2FkZXIu
TG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogICAgIF9sb2FkQnVpbGRlcnNMaXN0OiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBsb2FkQnVpbGRlcnNMaXN0KGN1cnJlbnRCdWlsZGVyR3Jv
dXBOYW1lKCksIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSk7CisgICAgICAgIGxvYWRC
dWlsZGVyc0xpc3QoY3VycmVudEJ1aWxkZXJHcm91cE5hbWUoKSwgdGhpcy5faGlzdG9yeS5jcm9z
c0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlKTsKICAgICAgICAgdGhpcy5fbG9hZE5leHQoKTsKICAg
ICB9LAogICAgIF9sb2FkUmVzdWx0c0ZpbGVzOiBmdW5jdGlvbigpCkBAIC0xMjUsNyArMTI3LDcg
QEAgbG9hZGVyLkxvYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHRzRmlsZW5h
bWU7CiAgICAgICAgIGlmIChoaXN0b3J5LmlzVHJlZU1hcCgpKQogICAgICAgICAgICAgcmVzdWx0
c0ZpbGVuYW1lID0gJ3RpbWVzX21zLmpzb24nOwotICAgICAgICBlbHNlIGlmIChnX2Nyb3NzRGFz
aGJvYXJkU3RhdGUuc2hvd0FsbFJ1bnMpCisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2hpc3Rvcnku
Y3Jvc3NEYXNoYm9hcmRTdGF0ZS5zaG93QWxsUnVucykKICAgICAgICAgICAgIHJlc3VsdHNGaWxl
bmFtZSA9ICdyZXN1bHRzLmpzb24nOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHRz
RmlsZW5hbWUgPSAncmVzdWx0cy1zbWFsbC5qc29uJzsKQEAgLTIxNCw3ICsyMTYsNyBAQCBsb2Fk
ZXIuTG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogICAgIF9sb2FkRXhwZWN0YXRpb25zRmls
ZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNGbGFraW5lc3NEYXNoYm9hcmQo
KSAmJiAhZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnVzZVRlc3REYXRhKSB7CisgICAgICAgIGlmICgh
aXNGbGFraW5lc3NEYXNoYm9hcmQoKSAmJiAhdGhpcy5faGlzdG9yeS5jcm9zc0Rhc2hib2FyZFN0
YXRlLnVzZVRlc3REYXRhKSB7CiAgICAgICAgICAgICB0aGlzLl9sb2FkTmV4dCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMKaW5kZXggYWZh
OGYzY2JiYTRlZGQ3MjlkNjA4NzA5MDdlYTJjZWYxYmJmNDk0NS4uMjNlYWIzMTg3OTcwNTM0YmU0
YTAyNGVkNWU3NWM3ZjQ0NTJkNDgwYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzCisrKyBiL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0ZXN0cy5qcwpAQCAtODYs
NyArODYsNyBAQCB0ZXN0KCdyZXN1bHRzIGZpbGVzIGxvYWRpbmcnLCAxMSwgZnVuY3Rpb24oKSB7
CiAKIHRlc3QoJ2V4cGVjdGF0aW9ucyBmaWxlcyBsb2FkaW5nJywgMSwgZnVuY3Rpb24oKSB7CiAg
ICAgcmVzZXRHbG9iYWxzKCk7Ci0gICAgcGFyc2VDcm9zc0Rhc2hib2FyZFBhcmFtZXRlcnMoKTsK
KyAgICBnX2hpc3RvcnkucGFyc2VDcm9zc0Rhc2hib2FyZFBhcmFtZXRlcnMoKTsKICAgICB2YXIg
ZXhwZWN0ZWRMb2FkZWRQbGF0Zm9ybXMgPSBbImNocm9taXVtIiwgImNocm9taXVtLWFuZHJvaWQi
LCAiZWZsIiwgImVmbC13azEiLCAiZWZsLXdrMiIsICJndGsiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZ3RrLXdrMiIsICJtYWMiLCAibWFjLWxpb24iLCAibWFjLXNub3ds
ZW9wYXJkIiwgInF0IiwgIndpbiIsICJ3azIiXTsKICAgICB2YXIgbG9hZGVkUGxhdGZvcm1zID0g
W107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L3RpbWVsaW5lX2V4cGxvcmVyLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5qcwppbmRleCAwMGRhOWMzMjVkZGJmNTMzM2FjYzQ0
YWFhZWMzNTQwNmFhNGU3NmEwLi5kZDQ5OGJkNWVmZGViZTk2MDUxZmQ4NmViNTUzYTJjNWY0ODNm
YmI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L3RpbWVsaW5lX2V4cGxvcmVyLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuanMKQEAgLTM4LDE1ICszOCwxNSBAQCB2YXIg
Z19jdXJyZW50QnVpbGRlclRlc3RSZXN1bHRzOwogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIHsK
ICAgICBnX2J1aWxkSW5kaWNlc0J5VGltZXN0YW1wID0ge307Ci0gICAgdmFyIHJlc3VsdHMgPSBn
X3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlciB8fCBjdXJyZW50QnVpbGRl
ckdyb3VwKCkuZGVmYXVsdEJ1aWxkZXIoKV07CisgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNC
eUJ1aWxkZXJbZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuYnVpbGRlciB8fCBjdXJy
ZW50QnVpbGRlckdyb3VwKCkuZGVmYXVsdEJ1aWxkZXIoKV07CiAKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlc3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXS5sZW5ndGg7IGkrKykgewogICAgICAg
ICB2YXIgYnVpbGREYXRlID0gbmV3IERhdGUocmVzdWx0c1tUSU1FU1RBTVBTX0tFWV1baV0gKiAx
MDAwKTsKICAgICAgICAgZ19idWlsZEluZGljZXNCeVRpbWVzdGFtcFtidWlsZERhdGUuZ2V0VGlt
ZSgpXSA9IGk7CiAgICAgfQogCi0gICAgaWYgKGdfY3VycmVudFN0YXRlLmJ1aWxkVGltZXN0YW1w
ICE9IC0xICYmIGdfY3VycmVudFN0YXRlLmJ1aWxkVGltZXN0YW1wIGluIGdfYnVpbGRJbmRpY2Vz
QnlUaW1lc3RhbXApIHsKLSAgICAgICAgdmFyIG5ld0J1aWxkSW5kZXggPSBnX2J1aWxkSW5kaWNl
c0J5VGltZXN0YW1wW2dfY3VycmVudFN0YXRlLmJ1aWxkVGltZXN0YW1wXTsKKyAgICBpZiAoZ19o
aXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuYnVpbGRUaW1lc3RhbXAgIT0gLTEgJiYgZ19o
aXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuYnVpbGRUaW1lc3RhbXAgaW4gZ19idWlsZElu
ZGljZXNCeVRpbWVzdGFtcCkgeworICAgICAgICB2YXIgbmV3QnVpbGRJbmRleCA9IGdfYnVpbGRJ
bmRpY2VzQnlUaW1lc3RhbXBbZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUuYnVpbGRU
aW1lc3RhbXBdOwogCiAgICAgICAgIGlmIChuZXdCdWlsZEluZGV4ID09IGdfY3VycmVudEJ1aWxk
SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHNlbGVjdEJ1aWxkIGlz
IGNhbGxlZCwgd2hpY2ggdXBkYXRlcyB0aGUgVUkKQEAgLTYxLDcgKzYxLDcgQEAgZnVuY3Rpb24g
Z2VuZXJhdGVQYWdlKCkKICAgICBpbml0Q3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cygpOwogCiAg
ICAgJCgndGVzdC10eXBlLXN3aXRjaGVyJykuaW5uZXJIVE1MID0gdWkuaHRtbC50ZXN0VHlwZVN3
aXRjaGVyKCBmYWxzZSwKLSAgICAgICAgdWkuaHRtbC5jaGVja2JveCgnaWdub3JlRmxha3lUZXN0
cycsICdJZ25vcmUgZmxha3kgdGVzdHMnLCBnX2N1cnJlbnRTdGF0ZS5pZ25vcmVGbGFreVRlc3Rz
LCAnZ19jdXJyZW50QnVpbGRJbmRleCA9IC0xJykKKyAgICAgICAgdWkuaHRtbC5jaGVja2JveCgn
aWdub3JlRmxha3lUZXN0cycsICdJZ25vcmUgZmxha3kgdGVzdHMnLCBnX2hpc3RvcnkuZGFzaGJv
YXJkU3BlY2lmaWNTdGF0ZS5pZ25vcmVGbGFreVRlc3RzLCAnZ19jdXJyZW50QnVpbGRJbmRleCA9
IC0xJykKICAgICApOwogCiAgICAgdXBkYXRlVGltZWxpbmVGb3JCdWlsZGVyKCk7CkBAIC03MCw3
ICs3MCw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRlUGFnZSgpCiBmdW5jdGlvbiBpbml0Q3VycmVudEJ1
aWxkZXJUZXN0UmVzdWx0cygpCiB7CiAgICAgdmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7Ci0g
ICAgZ19jdXJyZW50QnVpbGRlclRlc3RSZXN1bHRzID0gX2RlY29tcHJlc3NSZXN1bHRzKGdfcmVz
dWx0c0J5QnVpbGRlcltnX2N1cnJlbnRTdGF0ZS5idWlsZGVyIHx8IGN1cnJlbnRCdWlsZGVyR3Jv
dXAoKS5kZWZhdWx0QnVpbGRlcigpXSk7CisgICAgZ19jdXJyZW50QnVpbGRlclRlc3RSZXN1bHRz
ID0gX2RlY29tcHJlc3NSZXN1bHRzKGdfcmVzdWx0c0J5QnVpbGRlcltnX2hpc3RvcnkuZGFzaGJv
YXJkU3BlY2lmaWNTdGF0ZS5idWlsZGVyIHx8IGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5kZWZhdWx0
QnVpbGRlcigpXSk7CiAgICAgY29uc29sZS5sb2coICdUaW1lIHRvIGdldCB0ZXN0IHJlc3VsdHMg
YnkgYnVpbGQ6ICcgKyAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkpOwogfQogCkBAIC03OCwxNCAr
NzgsMTQgQEAgZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpCiB7
CiAgICAgc3dpdGNoKGtleSkgewogICAgIGNhc2UgJ2J1aWxkZXInOgotICAgICAgICBoaXN0b3J5
LnZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVlLAorICAgICAgICBo
aXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVyKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRl
LCBrZXksIHZhbHVlLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB2YWx1ZSBpbiBj
dXJyZW50QnVpbGRlcnMoKTsgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgJ2J1
aWxkVGltZXN0YW1wJzoKLSAgICAgICAgZ19jdXJyZW50U3RhdGUuYnVpbGRUaW1lc3RhbXAgPSBw
YXJzZUludCh2YWx1ZSwgMTApOworICAgICAgICBnX2hpc3RvcnkuZGFzaGJvYXJkU3BlY2lmaWNT
dGF0ZS5idWlsZFRpbWVzdGFtcCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGNhc2UgJ2lnbm9yZUZsYWt5VGVzdHMnOgotICAgICAgICBnX2N1cnJlbnRT
dGF0ZS5pZ25vcmVGbGFreVRlc3RzID0gdmFsdWUgPT0gJ3RydWUnOworICAgICAgICBnX2hpc3Rv
cnkuZGFzaGJvYXJkU3BlY2lmaWNTdGF0ZS5pZ25vcmVGbGFreVRlc3RzID0gdmFsdWUgPT0gJ3Ry
dWUnOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMTAsNyArMTEwLDcgQEAgZnVuY3Rpb24gc2hvdWxkU2hvd1dlYktpdFJldmlz
aW9uc09ubHkoKQogCiBmdW5jdGlvbiB1cGRhdGVUaW1lbGluZUZvckJ1aWxkZXIoKQogewotICAg
IHZhciBidWlsZGVyID0gZ19jdXJyZW50U3RhdGUuYnVpbGRlciB8fCBjdXJyZW50QnVpbGRlckdy
b3VwKCkuZGVmYXVsdEJ1aWxkZXIoKTsKKyAgICB2YXIgYnVpbGRlciA9IGdfaGlzdG9yeS5kYXNo
Ym9hcmRTcGVjaWZpY1N0YXRlLmJ1aWxkZXIgfHwgY3VycmVudEJ1aWxkZXJHcm91cCgpLmRlZmF1
bHRCdWlsZGVyKCk7CiAgICAgdmFyIHJlc3VsdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRl
cl07CiAgICAgdmFyIGdyYXBoRGF0YSA9IFtdOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgZnVuY3Rp
b24gdXBkYXRlVGltZWxpbmVGb3JCdWlsZGVyKCkKICAgICAgICAgLy8gZXhjbHVkZSBydW5zIHdo
ZXJlIGV2ZXJ5IHRlc3QgZmFpbGVkLgogICAgICAgICB2YXIgZmFpbHVyZUNvdW50ID0gTWF0aC5t
aW4ocmVzdWx0c1tGSVhBQkxFX0NPVU5UX0tFWV1baV0sIDEwMDAwKTsKIAotICAgICAgICBpZiAo
Z19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cykKKyAgICAgICAgaWYgKGdfaGlzdG9yeS5k
YXNoYm9hcmRTcGVjaWZpY1N0YXRlLmlnbm9yZUZsYWt5VGVzdHMpCiAgICAgICAgICAgICBmYWls
dXJlQ291bnQgLT0gZ19jdXJyZW50QnVpbGRlclRlc3RSZXN1bHRzLmZsYWt5RGVsdGFzQnlCdWls
ZFtpXS50b3RhbCB8fCAwOwogCiAgICAgICAgIGdyYXBoRGF0YS5wdXNoKFtidWlsZERhdGUsIGZh
aWx1cmVDb3VudF0pOwpAQCAtMTgyLDcgKzE4Miw3IEBAIGZ1bmN0aW9uIHNlbGVjdEJ1aWxkKHJl
c3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KQogICAgIGdfY3VycmVudEJ1aWxkSW5kZXgg
PSBpbmRleDsKICAgICB1cGRhdGVCdWlsZEluZGljYXRvcihyZXN1bHRzLCBkeWdyYXBoKTsKICAg
ICB1cGRhdGVCdWlsZEluc3BlY3RvcihyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBpbmRleCk7
Ci0gICAgc2V0UXVlcnlQYXJhbWV0ZXIoJ2J1aWxkVGltZXN0YW1wJywgcmVzdWx0c1tUSU1FU1RB
TVBTX0tFWV1baW5kZXhdICogMTAwMCk7CisgICAgZ19oaXN0b3J5LnNldFF1ZXJ5UGFyYW1ldGVy
KCdidWlsZFRpbWVzdGFtcCcsIHJlc3VsdHNbVElNRVNUQU1QU19LRVldW2luZGV4XSAqIDEwMDAp
OwogfQogCiBmdW5jdGlvbiB1cGRhdGVCdWlsZEluZGljYXRvcihyZXN1bHRzLCBkeWdyYXBoKQpA
QCAtMjU3LDcgKzI1Nyw3IEBAIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5zcGVjdG9yKHJlc3VsdHMs
IGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KQogICAgICAgICBpZiAoZXhwZWN0YXRpb25LZXkgaW4g
cmVzdWx0c1tGSVhBQkxFX0NPVU5UU19LRVldW2luZGV4XSkgewogICAgICAgICAgICAgdmFyIGN1
cnJlbnRDb3VudCA9IHJlc3VsdHNbRklYQUJMRV9DT1VOVFNfS0VZXVtpbmRleF1bZXhwZWN0YXRp
b25LZXldOwogICAgICAgICAgICAgdmFyIHByZXZpb3VzQ291bnQgPSByZXN1bHRzW0ZJWEFCTEVf
Q09VTlRTX0tFWV1baW5kZXggKyAxXVtleHBlY3RhdGlvbktleV07Ci0gICAgICAgICAgICBpZiAo
Z19jdXJyZW50U3RhdGUuaWdub3JlRmxha3lUZXN0cykgeworICAgICAgICAgICAgaWYgKGdfaGlz
dG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLmlnbm9yZUZsYWt5VGVzdHMpIHsKICAgICAgICAg
ICAgICAgICBjdXJyZW50Q291bnQgLT0gZmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4XVtleHBlY3Rh
dGlvbktleV0gfHwgMDsKICAgICAgICAgICAgICAgICBwcmV2aW91c0NvdW50IC09IGZsYWt5RGVs
dGFzQnlCdWlsZFtpbmRleCArIDFdW2V4cGVjdGF0aW9uS2V5XSB8fCAwOwogICAgICAgICAgICAg
fQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5zcGVjdG9yKHJlc3Vs
dHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KQogCiAgICAgdmFyIGN1cnJlbnRUb3RhbCA9IHJl
c3VsdHNbRklYQUJMRV9DT1VOVF9LRVldW2luZGV4XTsKICAgICB2YXIgcHJldmlvdXNUb3RhbCA9
IHJlc3VsdHNbRklYQUJMRV9DT1VOVF9LRVldW2luZGV4ICsgMV07Ci0gICAgaWYgKGdfY3VycmVu
dFN0YXRlLmlnbm9yZUZsYWt5VGVzdHMpIHsKKyAgICBpZiAoZ19oaXN0b3J5LmRhc2hib2FyZFNw
ZWNpZmljU3RhdGUuaWdub3JlRmxha3lUZXN0cykgewogICAgICAgICBjdXJyZW50VG90YWwgLT0g
Zmxha3lEZWx0YXNCeUJ1aWxkW2luZGV4XS50b3RhbCB8fCAwOwogICAgICAgICBwcmV2aW91c1Rv
dGFsIC09IGZsYWt5RGVsdGFzQnlCdWlsZFtpbmRleCArIDFdLnRvdGFsIHx8IDA7CiAgICAgfQpA
QCAtMzA4LDcgKzMwOCw3IEBAIGZ1bmN0aW9uIHNob3dSZXN1bHRzRGVsdGEoaW5kZXgsIGJ1aWxk
TnVtYmVyLCBidWlsZFVybCwgcmVzdWx0c1VybCkKICAgICB2YXIgZGVsdGFzID0ge307CiAgICAg
ZnVuY3Rpb24gYWRkRGVsdGEoY2F0ZWdvcnksIHRlc3RJbmRleCkKICAgICB7Ci0gICAgICAgIGlm
IChnX2N1cnJlbnRTdGF0ZS5pZ25vcmVGbGFreVRlc3RzICYmIGZsYWt5VGVzdHNbdGVzdEluZGV4
XSkKKyAgICAgICAgaWYgKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLmlnbm9yZUZs
YWt5VGVzdHMgJiYgZmxha3lUZXN0c1t0ZXN0SW5kZXhdKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAoIShjYXRlZ29yeSBpbiBkZWx0YXMpKQogICAgICAgICAgICAgZGVsdGFzW2Nh
dGVnb3J5XSA9IFtdOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgaWYgKGdfY3VycmVudEJ1aWxkSW5kZXgg
PT0gLTEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZhciBidWlsZGVyID0gZ19jdXJyZW50U3Rh
dGUuYnVpbGRlciB8fCBjdXJyZW50QnVpbGRlckdyb3VwKCkuZGVmYXVsdEJ1aWxkZXIoKTsKKyAg
ICB2YXIgYnVpbGRlciA9IGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLmJ1aWxkZXIg
fHwgY3VycmVudEJ1aWxkZXJHcm91cCgpLmRlZmF1bHRCdWlsZGVyKCk7CiAgICAgc3dpdGNoIChl
LmtleUlkZW50aWZpZXIpIHsKICAgICBjYXNlICdMZWZ0JzoKICAgICAgICAgc2VsZWN0QnVpbGQo
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3Ry
ZWVtYXAuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVt
YXAuanMKaW5kZXggYWQ5YWQ2ZGZmOTNmODFlYzMzMWM0MDhlOWQxY2Q1NDI4MGNmYTBmMS4uYTI2
MWRmZDBhZDQ1NDkxN2ZkNzcxM2Y4OTZiZDIwY2Y5YTUzMzM4MiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmpzCisrKyBiL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1hcC5qcwpAQCAtMTQyLDEy
ICsxNDIsMTIgQEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIAogICAgIGdfaXNHZW5lcmF0aW5n
UGFnZSA9IHRydWU7CiAKLSAgICB2YXIgcmF3VHJlZSA9IGdfcmVzdWx0c0J5QnVpbGRlcltnX2N1
cnJlbnRTdGF0ZS5idWlsZGVyIHx8IGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5kZWZhdWx0QnVpbGRl
cigpXTsKKyAgICB2YXIgcmF3VHJlZSA9IGdfcmVzdWx0c0J5QnVpbGRlcltnX2hpc3RvcnkuZGFz
aGJvYXJkU3BlY2lmaWNTdGF0ZS5idWlsZGVyIHx8IGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5kZWZh
dWx0QnVpbGRlcigpXTsKICAgICBnX3dlYlRyZWUgPSBjb252ZXJ0VG9XZWJUcmVlbWFwRm9ybWF0
KCdMYXlvdXRUZXN0cycsIHJhd1RyZWUpOwogICAgIGFwcGVuZFRyZWVtYXAoJCgnbWFwJyksIGdf
d2ViVHJlZSk7CiAKLSAgICBpZiAoZ19jdXJyZW50U3RhdGUudHJlZW1hcGZvY3VzKQotICAgICAg
ICBmb2N1c1BhdGgoZ193ZWJUcmVlLCBnX2N1cnJlbnRTdGF0ZS50cmVlbWFwZm9jdXMpCisgICAg
aWYgKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLnRyZWVtYXBmb2N1cykKKyAgICAg
ICAgZm9jdXNQYXRoKGdfd2ViVHJlZSwgZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNpZmljU3RhdGUu
dHJlZW1hcGZvY3VzKQogCiAgICAgZ19pc0dlbmVyYXRpbmdQYWdlID0gZmFsc2U7CiB9CkBAIC0x
ODIsMTIgKzE4MiwxMiBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2
YWx1ZSkKIHsKICAgICBzd2l0Y2goa2V5KSB7CiAgICAgY2FzZSAnYnVpbGRlcic6Ci0gICAgICAg
IGhpc3RvcnkudmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCisg
ICAgICAgIGhpc3RvcnkudmFsaWRhdGVQYXJhbWV0ZXIoZ19oaXN0b3J5LmRhc2hib2FyZFNwZWNp
ZmljU3RhdGUsIGtleSwgdmFsdWUsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZh
bHVlIGluIGN1cnJlbnRCdWlsZGVycygpOyB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBjYXNlICd0cmVlbWFwZm9jdXMnOgotICAgICAgICBoaXN0b3J5LnZhbGlkYXRlUGFyYW1ldGVy
KGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVlLAorICAgICAgICBoaXN0b3J5LnZhbGlkYXRlUGFy
YW1ldGVyKGdfaGlzdG9yeS5kYXNoYm9hcmRTcGVjaWZpY1N0YXRlLCBrZXksIHZhbHVlLAogICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZXJlJ3Mg
cHJvYmFibHkgYSBzaW1wbGVyIHJlZ2V4cCBoZXJlLiBKdXN0IHRyeWluZyB0byBtYXRjaCBhc2Np
aSArIGZvcndhcmQtc2xhc2guCiAgICAgICAgICAgICAgICAgLy8gZS5nLiBMYXlvdXRUZXN0cy9m
b28vYmFyLmh0bWwKQEAgLTI0Nyw3ICsyNDcsNyBAQCBmdW5jdGlvbiBoYW5kbGVGb2N1cyh0cmVl
KQogCiAgICAgdmFyIG5hbWUgPSBmdWxsTmFtZSh0cmVlKTsKIAotICAgIGlmICghdHJlZS5jaGls
ZHJlbiAmJiAhdHJlZS5leHRyYURvbSAmJiBpc0xheW91dFRlc3RSZXN1bHRzKCkpIHsKKyAgICBp
ZiAoIXRyZWUuY2hpbGRyZW4gJiYgIXRyZWUuZXh0cmFEb20gJiYgZ19oaXN0b3J5LmlzTGF5b3V0
VGVzdFJlc3VsdHMoKSkgewogICAgICAgICB0cmVlLmV4dHJhRG9tID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgncHJlJyk7CiAgICAgICAgIHRyZWUuZXh0cmFEb20uY2xhc3NOYW1lID0gJ2V4dHJh
LWRvbSc7CiAgICAgICAgIHRyZWUuZG9tLmFwcGVuZENoaWxkKHRyZWUuZXh0cmFEb20pOwpAQCAt
MjY2LDcgKzI2Niw3IEBAIGZ1bmN0aW9uIGhhbmRsZUZvY3VzKHRyZWUpCiAKICAgICAvLyBXZSBk
b24ndCB3YW50IHRoZSBmb2N1cyBjYWxscyBkdXJpbmcgZ2VuZXJhdGVQYWdlIHRvIHRyeSB0byBt
b2RpZnkgdGhlIHF1ZXJ5IHN0YXRlLgogICAgIGlmICghZ19pc0dlbmVyYXRpbmdQYWdlKQotICAg
ICAgICBzZXRRdWVyeVBhcmFtZXRlcigndHJlZW1hcGZvY3VzJywgbmFtZSk7CisgICAgICAgIGdf
aGlzdG9yeS5zZXRRdWVyeVBhcmFtZXRlcigndHJlZW1hcGZvY3VzJywgbmFtZSk7CiB9CiAKIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3VpLmpzIGIvVG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy91aS5qcwppbmRleCA5Zjc5MWEzMzE4MzE4
MWVkNmI2Y2FhYzczMjhmNWMzNDU5N2Y3NDUxLi44OTA3OTg2ZmJlMTEyNWVmNzJlZDFiY2E3YjZk
N2JlNzcyOGE3YTA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL3VpLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvdWkuanMKQEAgLTgwLDcgKzgwLDcgQEAgdWkuaHRtbC5jaGVja2JveCA9IGZ1bmN0aW9u
KHF1ZXJ5UGFyYW1ldGVyLCBsYWJlbCwgaXNDaGVja2VkLCBvcHRfZXh0cmFKYXZhU2NyaXAKIHsK
ICAgICB2YXIganMgPSBvcHRfZXh0cmFKYXZhU2NyaXB0IHx8ICcnOwogICAgIHJldHVybiAnPGxh
YmVsIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDJlbSI+JyArCi0gICAgICAgICc8aW5wdXQgdHlwZT0i
Y2hlY2tib3giIG9uY2hhbmdlPSJ0b2dnbGVRdWVyeVBhcmFtZXRlcihcJycgKyBxdWVyeVBhcmFt
ZXRlciArICdcJyk7JyArIGpzICsgJyIgJyArCisgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2ti
b3giIG9uY2hhbmdlPSJnX2hpc3RvcnkudG9nZ2xlUXVlcnlQYXJhbWV0ZXIoXCcnICsgcXVlcnlQ
YXJhbWV0ZXIgKyAnXCcpOycgKyBqcyArICciICcgKwogICAgICAgICAgICAgKGlzQ2hlY2tlZCA/
ICdjaGVja2VkJyA6ICcnKSArICc+JyArIGxhYmVsICsKICAgICAgICAgJzwvbGFiZWw+ICc7CiB9
CkBAIC04OCwxMiArODgsMTIgQEAgdWkuaHRtbC5jaGVja2JveCA9IGZ1bmN0aW9uKHF1ZXJ5UGFy
YW1ldGVyLCBsYWJlbCwgaXNDaGVja2VkLCBvcHRfZXh0cmFKYXZhU2NyaXAKIHVpLmh0bWwuc2Vs
ZWN0ID0gZnVuY3Rpb24obGFiZWwsIHF1ZXJ5UGFyYW1ldGVyLCBvcHRpb25zKQogewogICAgIHZh
ciBodG1sID0gJzxsYWJlbCBzdHlsZT0icGFkZGluZy1sZWZ0OiAyZW0iPicgKyBsYWJlbCArICc6
ICcgKwotICAgICAgICAnPHNlbGVjdCBvbmNoYW5nZT0ic2V0UXVlcnlQYXJhbWV0ZXIoXCcnICsg
cXVlcnlQYXJhbWV0ZXIgKyAnXCcsIHRoaXNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZSkiPic7
CisgICAgICAgICc8c2VsZWN0IG9uY2hhbmdlPSJnX2hpc3Rvcnkuc2V0UXVlcnlQYXJhbWV0ZXIo
XCcnICsgcXVlcnlQYXJhbWV0ZXIgKyAnXCcsIHRoaXNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1
ZSkiPic7CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1tpXTsKICAgICAgICAgaHRtbCArPSAnPG9wdGlv
biB2YWx1ZT0iJyArIHZhbHVlICsgJyIgJyArCi0gICAgICAgICAgICAocXVlcnlQYXJhbWV0ZXJW
YWx1ZShxdWVyeVBhcmFtZXRlcikgPT0gdmFsdWUgPyAnc2VsZWN0ZWQnIDogJycpICsKKyAgICAg
ICAgICAgIChnX2hpc3RvcnkucXVlcnlQYXJhbWV0ZXJWYWx1ZShxdWVyeVBhcmFtZXRlcikgPT0g
dmFsdWUgPyAnc2VsZWN0ZWQnIDogJycpICsKICAgICAgICAgICAgICc+JyArIHZhbHVlICsgJzwv
b3B0aW9uPicKICAgICB9CiAgICAgaHRtbCArPSAnPC9zZWxlY3Q+PC9sYWJlbD4gJzsKQEAgLTEy
Myw3ICsxMjMsNyBAQCB1aS5odG1sLnRlc3RUeXBlU3dpdGNoZXIgPSBmdW5jdGlvbihvcHRfbm9C
dWlsZGVyTWVudSwgb3B0X2V4dHJhSHRtbCwgb3B0X2luY2x1ZAogICAgICAgICBPYmplY3Qua2V5
cyhjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkoKSkpOwogCiAgICAgaWYgKCFoaXN0b3J5Lmlz
VHJlZU1hcCgpKQotICAgICAgICBodG1sICs9IHVpLmh0bWwuY2hlY2tib3goJ3Nob3dBbGxSdW5z
JywgJ1Nob3cgYWxsIHJ1bnMnLCBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUuc2hvd0FsbFJ1bnMpOwor
ICAgICAgICBodG1sICs9IHVpLmh0bWwuY2hlY2tib3goJ3Nob3dBbGxSdW5zJywgJ1Nob3cgYWxs
IHJ1bnMnLCBnX2hpc3RvcnkuY3Jvc3NEYXNoYm9hcmRTdGF0ZS5zaG93QWxsUnVucyk7CiAKICAg
ICBpZiAob3B0X2V4dHJhSHRtbCkKICAgICAgICAgaHRtbCArPSBvcHRfZXh0cmFIdG1sOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>