<?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>89438</bug_id>
          
          <creation_ts>2012-06-19 00:06:04 -0700</creation_ts>
          <short_desc>Use testRunner instead of layoutTestController in fast/doctypes, dom, dynamic, encoding, events, eventsource, and exclusions tests</short_desc>
          <delta_ts>2012-06-19 20:29:06 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88210</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652129</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-19 00:06:04 -0700</bug_when>
    <thetext>Use testRunner instead of layoutTestController in fast/doctypes, dom, dynamic, encoding, events, eventsource, and exclusions tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652133</commentid>
    <comment_count>1</comment_count>
      <attachid>148271</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-19 00:16:50 -0700</bug_when>
    <thetext>Created attachment 148271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653139</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-19 20:29:06 -0700</bug_when>
    <thetext>Committed r120792: &lt;http://trac.webkit.org/changeset/120792&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148271</attachid>
            <date>2012-06-19 00:16:50 -0700</date>
            <delta_ts>2012-06-19 10:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89438-20120619001649.patch</filename>
            <type>text/plain</type>
            <size>943933</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMDY4MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA2LTE5ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSB0ZXN0UnVubmVyIGluc3RlYWQgb2YgbGF5
b3V0VGVzdENvbnRyb2xsZXIgaW4gZmFzdC9kb2N0eXBlcywgZG9tLCBkeW5hbWljLCBlbmNvZGlu
ZywgZXZlbnRzLCBldmVudHNvdXJjZSwgYW5kIGV4Y2x1c2lvbnMgdGVzdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvY3R5cGVzLzAwNS1j
YXNlLXByZXNlcnZpbmcuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvY3R5cGVzL2RvY3R5cGUtYWZ0
ZXItY29tbWVudC5odG1sOgorICAgICAgICAqIGZhc3QvZG9jdHlwZXMvZG9jdHlwZS1hdC1lbmQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2RvY3R5cGVzL2RvY3R5cGUtaW4tZWxlbWVudC5odG1sOgor
ICAgICAgICAqIGZhc3QvZG9jdHlwZXMvZG9jdHlwZS1wYXJzaW5nLmh0bWw6CisgICAgICAgICog
ZmFzdC9kb2N0eXBlcy9odG1sLWRvY3R5cGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvY3R5cGVz
L3hodG1sLXdpdGgteGh0bWxtcC1kb2N0eXBlLnhodG1sOgorICAgICAgICAqIGZhc3QvZG9jdHlw
ZXMveG1sLWRvY3R5cGUueGh0bWw6CisgICAgICAgICogZmFzdC9kb20vOgorICAgICAgICAqIGZh
c3QvZHluYW1pYy81ODcyNjcxLmh0bWw6CisgICAgICAgICogZmFzdC9keW5hbWljL2FuY2VzdG9y
LXRvLWFic29sdXRlLmh0bWw6CisgICAgICAgICogZmFzdC9keW5hbWljL2NoZWNrYm94LXNlbGVj
dGlvbi1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvZHluYW1pYy9jb250YWluaW5nLWJsb2Nr
LWNoYW5nZS5odG1sOgorICAgICAgICAqIGZhc3QvZHluYW1pYy9jcmFzaC1nZW5lcmF0ZWQtY291
bnRlci5odG1sOgorICAgICAgICAqIGZhc3QvZHluYW1pYy9jcmFzaC1nZW5lcmF0ZWQtaW1hZ2Uu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2R5bmFtaWMvY3Jhc2gtZ2VuZXJhdGVkLXF1b3RlLmh0bWw6
CisgICAgICAgICogZmFzdC9keW5hbWljL2NyYXNoLWdlbmVyYXRlZC10ZXh0Lmh0bWw6CisgICAg
ICAgICogZmFzdC9keW5hbWljL2NyYXNoLXBhaW50LW5vLWRvY3VtZW50RWxlbWVudC1yZW5kZXJl
ci5odG1sLWRpc2FibGVkOgorICAgICAgICAqIGZhc3QvZHluYW1pYy9mbG9hdC1yZW1vdmUtYWJv
dmUtbGluZS0yLmh0bWw6CisgICAgICAgICogZmFzdC9keW5hbWljL2Zsb2F0LXJlbW92ZS1hYm92
ZS1saW5lLmh0bWw6CisgICAgICAgICogZmFzdC9keW5hbWljL2hvdmVyLWJlZm9yZS1wb3NpdGlv
bi1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbDoKKyAgICAgICAgKiBmYXN0L2R5bmFtaWMvaG92ZXIt
YmVmb3JlLXBvc2l0aW9uLWFmdGVyLXN0eWxlLWNoYW5nZTIuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2R5bmFtaWMvaG92ZXItc3R5bGUtcmVjYWxjLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9k
eW5hbWljL2hvdmVyZWQtZGV0YWNoLmh0bWw6CisgICAgICAgICogZmFzdC9keW5hbWljL2lubGlu
ZS10by1ibG9jay1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvZHluYW1pYy9pbnNlcnRBZGph
Y2VudEVsZW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2R5bmFtaWMvaW5zZXJ0QWRqYWNlbnRI
VE1MLWFsbG93ZWQtcGFyZW50cy5odG1sOgorICAgICAgICAqIGZhc3QvZHluYW1pYy9pbnNlcnRB
ZGphY2VudEhUTUwuaHRtbDoKKyAgICAgICAgKiBmYXN0L2R5bmFtaWMvaW5zZXJ0QWRqYWNlbnRU
ZXh0Lmh0bWw6CisgICAgICAgICogZmFzdC9keW5hbWljL2pRdWVyeS1hbmltYXRpb24tY3Jhc2gu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2R5bmFtaWMvbGF5ZXItaGl0LXRlc3QtY3Jhc2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2R5bmFtaWMvbGF5ZXItbm8tbG9uZ2VyLXBhZ2luYXRlZC5odG1sOgor
ICAgICAgICAqIGZhc3QvZHluYW1pYy9vdXRlckhUTUwtbm8tZWxlbWVudC5odG1sOgorICAgICAg
ICAqIGZhc3QvZHluYW1pYy9wYXVzZWQtZXZlbnQtZGlzcGF0Y2guaHRtbDoKKyAgICAgICAgKiBm
YXN0L2R5bmFtaWMvcG9zaXRpb24tYWJzb2x1dGUtdG8tZml4ZWQtY3Jhc2guaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2R5bmFtaWMvcG9zaXRpb24tY2hhbmdlLWxheW91dC5odG1sOgorICAgICAgICAq
IGZhc3QvZHluYW1pYy9yZWN1cnNpdmUtbGF5b3V0Lmh0bWw6CisgICAgICAgICogZmFzdC9keW5h
bWljL3N0eWxlLWFjY2Vzcy1sYXRlLXN0eWxlc2hlZXQtbG9hZC5odG1sOgorICAgICAgICAqIGZh
c3QvZHluYW1pYy9zdWJ0cmVlLWNvbW1vbi1yb290Lmh0bWw6CisgICAgICAgICogZmFzdC9keW5h
bWljL3N1YnRyZWUtdGFibGUtY2VsbC1oZWlnaHQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2R5bmFt
aWMvc3VidHJlZS11bnJvb3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvZW5jb2RpbmcvOgorICAg
ICAgICAqIGZhc3QvZXZlbnRzLzoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy9kcmFnLWRvd25sb2FkVVJMLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWw6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvcnRsLXNjcm9sbGJhci5odG1sOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXItbWV0YWtleS5odG1sOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2Rhc2hib2FyZC1zcmMt
cXVpcmsuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vY2hhcmFjdGVyLWlu
ZGV4LWZvci1wb2ludC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9vYmpj
LXdyYXBwZXItaWRlbnRpdHkuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20v
d3JhcHBlci1jbGFzc2VzLW9iamMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9k
b20vd3JhcHBlci1yb3VuZC10cmlwcGluZy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L2V2ZW50cy9vYmpjLWV2ZW50LWFwaS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L2V2ZW50cy9vYmpjLWtleWJvYXJkLWV2ZW50LWNyZWF0aW9uLmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLWtleWRvd24tZnJhbWUuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvYWx0LW51bXBhZC5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9hbHQtc3BhY2Utc2Nyb2xsLmh0bWw6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL2RvdWJsZS1kZWFkLWNoYXIuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMva2V5TG9jYXRpb24tbnVtcGFkLmh0
bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3BhblNjcm9sbC1jb3JyZWN0
LWRpcmVjdGlvbi5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9wYW5T
Y3JvbGwtZXZlbnQtZmlyZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9ldmVu
dHMvcGFuU2Nyb2xsLWltYWdlLW5vLXNjcm9sbC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtaW1hZ2VNYXAtaHJlZi1uby1zY3JvbGwuaHRtbDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWltYWdlTWFwLW5vSHJl
Zi1zY3JvbGwuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Ny
b2xsLW5lc3RlZC1kaXZzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRz
L3BhblNjcm9sbC1uby1pZnJhbWUtanVtcC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9m
YXN0L2V2ZW50cy9wYW5TY3JvbGwtcHJldmVudERlZmF1bHQuaHRtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL2NvbnRleHQtY2xpY2stZXZlbnRzLmpz
OgorCiAyMDEyLTA2LTE4ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBmYWlsaW5nIHRlc3RzLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy8wMDUtY2FzZS1wcmVzZXJ2aW5nLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy8wMDUtY2FzZS1wcmVzZXJ2
aW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9jdHlwZXMv
MDA1LWNhc2UtcHJlc2VydmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAog
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KIDwh
LS0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmIChkb2N1bWVudC5kb2N0eXBlKQogICAgIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9jdHlwZXMvZG9jdHlwZS1hZnRlci1jb21tZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy9kb2N0eXBlLWFmdGVyLWNvbW1l
bnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy9k
b2N0eXBlLWFmdGVyLWNvbW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAK
IDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgbG9nID0gZnVuY3Rpb24obXNnKQogICAgICAg
ICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvY3R5cGVzL2RvY3R5cGUtYXQtZW5kLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy9kb2N0eXBlLWF0LWVuZC5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvY3R5cGVzL2RvY3R5
cGUtYXQtZW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxo
ZWFkPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiAgICAgICAgIGxvZyA9IGZ1bmN0aW9uKG1zZykKICAgICAgICAgewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy9kb2N0eXBlLWluLWVsZW1lbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvY3R5cGVzL2RvY3R5cGUtaW4tZWxlbWVudC5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvY3R5cGVzL2RvY3R5cGUt
aW4tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8
aGVhZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICAgICAgICBsb2cgPSBmdW5jdGlvbihtc2cpCiAgICAgICAgIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9jdHlwZXMvZG9jdHlwZS1wYXJzaW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy9kb2N0eXBlLXBhcnNpbmcuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy9kb2N0eXBlLXBhcnNp
bmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvVGVzdERvY3R5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAg
IHRlc3QgPSBmdW5jdGlvbihtb2RlLCBkb2N0eXBlKQogICAgICAgICB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvY3R5cGVzL2h0bWwtZG9jdHlwZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9jdHlwZXMvaHRtbC1kb2N0eXBlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9jdHlwZXMvaHRtbC1kb2N0eXBlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbCA+CiA8aGVhZD4KICAgICA8c2NyaXB0PgotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBsb2cg
PSBmdW5jdGlvbihtc2cpCiAgICAgICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9jdHlw
ZXMveGh0bWwtd2l0aC14aHRtbG1wLWRvY3R5cGUueGh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb2N0eXBlcy94aHRtbC13aXRoLXhodG1sbXAtZG9jdHlwZS54aHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb2N0eXBlcy94aHRtbC13aXRoLXho
dG1sbXAtZG9jdHlwZS54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIDxib2R5
PgogPHA+VGVzdCB0aGF0IFhIVE1MIGVudGl0aWVzIGFyZSByZWNvZ25pemVkIGluIGRvY3VtZW50
cyB3aXRoIHhodG1sLW1vYmlsZTEwIERURC48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8
L3NjcmlwdD4KIDxwIHN0eWxlPSJkaXNwbGF5Om5vbmUiPkZBSUwgLSBub3QgdHJlYXRlZCBhcyBY
SFRNTC48L3A+CiA8cD5TVUNDRVNTICh1bmxlc3MgdGhlcmUgaXMgY2xlYXIgc2lnbiBvZiBmYWls
dXJlIG5lYXJieSwgbGlrZSBhIGJpZyByZWQgZXJyb3IgYm94KS4mbmJzcDs8L3A+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvY3R5cGVzL3htbC1kb2N0eXBlLnhodG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9jdHlwZXMveG1sLWRvY3R5cGUueGh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9jdHlwZXMveG1sLWRvY3R5cGUueGh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBsb2cgPSBmdW5jdGlvbihtc2cp
CiAgICAgICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVBhcnNlci1hc3NpZ24t
dmFyaWFibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01QYXJz
ZXItYXNzaWduLXZhcmlhYmxlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVBhcnNlci1hc3NpZ24tdmFyaWFibGUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOSw3ICs5LDcgQEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiB9CiAKIGZ1bmN0aW9uIHJ1blRl
c3RzKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogICAgIHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2Vy
KCk7CiAgICAgcGFyc2VyLnRlc3QgPSAidGVzdCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0ltYWdlRG9jdW1lbnQtaW1hZ2UtZGVsZXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9JbWFnZURvY3VtZW50LWltYWdlLWRlbGV0aW9uLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0ltYWdlRG9jdW1lbnQtaW1hZ2UtZGVs
ZXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxoZWFkPgogICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9OYW1lZE5vZGVNYXAtc2V0TmFtZWRJdGVtLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vTmFtZWROb2RlTWFwLXNldE5hbWVkSXRlbS1jcmFzaC5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9OYW1lZE5vZGVNYXAt
c2V0TmFtZWRJdGVtLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8
c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgb25sb2FkID0gZnVu
Y3Rpb24oKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlLWluc2VydE5v
ZGUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS1p
bnNlcnROb2RlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1JhbmdlLWluc2VydE5vZGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4
ICs5LDggQEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgICAgICAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAg
ICB0cnkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vWE1MU2VyaWFsaXplci1kb2N0eXBl
Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1hNTFNlcmlhbGl6ZXIt
ZG9jdHlwZTIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
WE1MU2VyaWFsaXplci1kb2N0eXBlMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBA
QAogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
ICAgICAgICAgdmFyIGRvY1R5cGUgPSB3aW5kb3cuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3Jl
YXRlRG9jdW1lbnRUeXBlKCJhRG9jVHlwZU5hbWUiLCAiYVB1YmxpY0lEIiwgImFTeXN0ZW1JRCIp
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9YTUxTZXJpYWxpemVyLWRvY3R5cGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9YTUxTZXJpYWxpemVyLWRvY3R5
cGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vWE1MU2Vy
aWFsaXplci1kb2N0eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiAgICAg
ICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdmFyIGRvY1R5cGUgPSB3aW5kb3cuZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCJhRG9jVHlwZU5hbWUiLCAiYVB1YmxpY0lEIiwg
ImFTeXN0ZW1JRCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vWE1MU2VyaWFsaXplci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1hNTFNlcmlhbGl6ZXIuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vWE1MU2VyaWFsaXpl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBAIGZ1bmN0aW9uIHBhcnNlRG9j
dW1lbnQoKSB7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotCWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAJbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIAl0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAl9CiAKIAlkb2MgPSBwYXJzZURvY3VtZW50KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2FjY2Vzcy1rZXktaWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2FjY2Vzcy1rZXktaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDggKzQzLDggQEAgZnVuY3Rpb24gY3JlYXRlRG9tSW5Eb2N1bWVudChkb2MsIHRhZ05hbQog
CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IHZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKICAgICBz
YW5kYm94LmFwcGVuZENoaWxkKGNyZWF0ZURvbUluRG9jdW1lbnQoZG9jdW1lbnQsICdpbnB1dCcs
IHsnaWQnOiAnaW5wdXRCJ30pKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Fkb3B0LW5v
ZGUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZG9wdC1u
b2RlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L2Fkb3B0LW5vZGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxk
aXYgaWQ9Im5vZGUtdG8tYWRvcHQiPjwvZGl2PgogPGlmcmFtZT48L2lmcmFtZT4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogdmFyIG5vZGVUb0Fkb3B0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ25vZGUtdG8tYWRvcHQnKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYW5jaG9y
LWJhY2tzbGFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FuY2hv
ci1iYWNrc2xhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vYW5jaG9yLWJhY2tzbGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgbG9nKCJwYXRocyBsaWtlIHRo
aXMgc2hvdWxkIHR1cm4gYWxsIFxcIGNoYXJhY3RlcnMgaW50byAvOiBcIiIgKyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiMSIpLnBhdGhuYW1lICsgIlwiIik7CiAgICAgICAgICAgICAgICAgbG9n
KCJxdWVyeSBzdHJpbmdzIGxpa2UgdGhpcyBvbmUgc2hvdWxkIHN0aWxsIGhhdmUgXFwgY2hhcmFj
dGVyczogXCIiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjIiKS5zZWFyY2ggKyAiXCIiKTsK
ICAgICAgICAgICAgICAgICBsb2coInF1ZXJ5IHN0cmluZ3MgbGlrZSB0aGlzIG9uZSBzaG91bGQg
c3RpbGwgaGF2ZSBcXCBjaGFyYWN0ZXJzIGV2ZW4gaWYgdGhlIFVSTCBpcyBvbmx5IGEgcXVlcnk6
IFwiIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIzIikuc2VhcmNoICsgIlwiIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hbmNob3Itb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vYW5jaG9yLW9yaWdpbi5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hbmNob3Itb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbD4KIDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiB2YXIgY2FzZXMgPSBbCiAgICAgImh0dHA6Ly9leGFtcGxlLmNvbS9mb28vYmFyIiwKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2FuY2hvci10b1N0cmluZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FuY2hvci10b1N0cmluZy5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hbmNob3ItdG9TdHJpbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgQSBsaW5rIQogPGJyPgogPHNjcmlwdD4KICAgICB7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAg
IHZhciBhbmNob3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYW5jaG9yIik7CiAgICAgICAg
IGRvY3VtZW50LndyaXRlKCJXcml0aW5nIGp1c3QgdGhlIGFuY2hvciBvYmplY3QgLSAiICsgYW5j
aG9yKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2FycmF5LXNwZWNpYWwtYWNjZXNzb3Jz
LXNob3VsZC1pZ25vcmUtaXRlbXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9hcnJheS1zcGVjaWFsLWFjY2Vzc29ycy1zaG91bGQtaWdub3JlLWl0ZW1zLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2FycmF5LXNwZWNpYWwtYWNj
ZXNzb3JzLXNob3VsZC1pZ25vcmUtaXRlbXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3
LDggQEAKIAk8b3B0aW9uIHZhbHVlPSIxIj4xPC9vcHRpb24+CiA8L3NlbGVjdD4KIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0Jd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKwl3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB2YXIgc2VsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdCIpOwogdmFyIGJyYWNrZXRaZXJvID0gc2Vs
WzBdOwogdmFyIGl0ZW1aZXJvID0gc2VsLml0ZW0oMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9hc3NpZ24tdG8td2luZG93LXN0YXR1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2Fzc2lnbi10by13aW5kb3ctc3RhdHVzLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Fzc2lnbi10by13aW5kb3ctc3RhdHVzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wU3RhdHVzQ2FsbGJhY2tzKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBTdGF0dXNDYWxsYmFja3MoKTsKIH0KIAogZnVuY3Rpb24gbG9nKHMpCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyX2RlYWRfZG9jLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cl9kZWFkX2RvYy5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyX2RlYWRfZG9jLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDEzICsxMCwxMyBAQCBmdW5jdGlvbiBzZXRJbWcoKSB7CiB9CiAKIGZ1bmN0
aW9uIGluaXQoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiAgICAgfQogICAgIGdldEltZygpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyaWdodCIpLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZiA9ICJhYm91dDpibGFuayI7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBzZXRUaW1l
b3V0KCJzZXRJbWcoKTsgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsi
LDEwMCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHNldFRpbWVvdXQo
InNldEltZygpOyB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IiwxMDApOwogICAgIH0K
ICAgICBlbHNlIHsKICAgICAgICAgc2V0VGltZW91dCgic2V0SW1nKCk7IiwxMDApOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWNhc2Utc2Vuc2l0aXZpdHkyLnhodG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2
aXR5Mi54aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0
cmlidXRlLWNhc2Utc2Vuc2l0aXZpdHkyLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsy
Nyw4IEBACiAgIAogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgIAotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgcmVzdWx0TG9nKCJQYXJzZXIgVGVzdHM6IikK
ICAgICBjaGVja0F0dHJpYnV0ZShnZXRUZXN0RWxlbWVudCgxKSwgJ2Nhc2UnKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2aXR5Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWNhc2Utc2Vuc2l0aXZpdHku
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRl
LWNhc2Utc2Vuc2l0aXZpdHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAog
ICAKICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAKICAgICByZXN1bHRMb2coIlBhcnNlciBUZXN0czoiKQogICAgIGNoZWNr
QXR0cmlidXRlKGdldFRlc3RFbGVtZW50KDEpLCAnY2FzZScpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vYXR0cmlidXRlLWNoYW5nZS1vbi1tdXRhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtY2hhbmdlLW9uLW11dGF0ZS5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtY2hhbmdlLW9u
LW11dGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWRvd25jYXN0LXJpZ2h0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWRvd25jYXN0LXJpZ2h0Lmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1kb3duY2Fz
dC1yaWdodC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPFNDUklQVD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiB2YXIgb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzIikK
IHZhciBvRWxlbWVudE5TID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtZW1wdHktdmFsdWUtbm8tY2hpbGRyZW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtZW1wdHktdmFsdWUt
bm8tY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vYXR0cmlidXRlLWVtcHR5LXZhbHVlLW5vLWNoaWxkcmVuLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiAgICAgPGhlYWQ+CiAgICAgICAgIDx0aXRsZT5BdHRyIGVtcHR5IHZh
bHVlIHRlc3RzPC90aXRsZT4KICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGZ1bmN0aW9uIGlzUmVhbGx5RW1wdHkoYXR0cikgewogICAgICAgICAg
ICAgICAgIHJldHVybiBhdHRyLnZhbHVlID09PSAiIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vYXR0cmlidXRlLW5hbWVzcGFjZXMtZ2V0LXNldC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1uYW1lc3BhY2VzLWdldC1zZXQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLW5hbWVzcGFjZXMt
Z2V0LXNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIGZ1bmN0aW9uIHNo
b3VsZEJlKGEsIGIpCiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICAgICAgICAKICAgICB2YXIgc3JjID0gJzxyb290IHhtbG5zOmZvbz0i
aHR0cDovL3d3dy5leGFtcGxlLmNvbSIgYXR0cj0idGVzdDIiIGZvbzphdHRyPSJ0ZXN0IiAvPic7
CiAgICAgdmFyIGRvYyA9IChuZXcgRE9NUGFyc2VyKCkpLnBhcnNlRnJvbVN0cmluZyhzcmMsICd0
ZXh0L3htbCcpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtbmFtZXNwYWNl
cy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtbmFt
ZXNwYWNlcy54aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
YXR0cmlidXRlLW5hbWVzcGFjZXMueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBA
IGZ1bmN0aW9uIGRlYnVnKHN0cikgewogfQogCiBmdW5jdGlvbiBydW5UZXN0cygpIHsKLQlpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgCWxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAJdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAJfQogCiAJdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iYWNrZ3JvdW5kLXNob3J0aGFuZC1jc3N0
ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYmFja2dyb3VuZC1z
aG9ydGhhbmQtY3NzdGV4dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9iYWNrZ3JvdW5kLXNob3J0aGFuZC1jc3N0ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDggKzI4LDggQEAgZnVuY3Rpb24gc2hvdWxkQmUoYSwgYikKIAogZnVuY3Rpb24gdGVz
dCgpIAogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogICAgIHNob3VsZEJl
KCJkb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmQgPT0gJ2dyZWVuJyIsIHRydWUpOwogICAg
IHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2MScpLnN0eWxlLmJhY2tncm91
bmQgPT0gJ3JlcGVhdC14LCByZXBlYXQteSB3aGl0ZSciLCB0cnVlKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2JhZC1ocmVmLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2JhZC1ocmVmLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iYWQtaHJlZi1hdHRyaWJ1dGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwPlNob3VsZCBzYXkgUEFTUzo8L3A+CiA8cHJlIGlk
ID0gbG9nPjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobXNn
KQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYmFzZS1hdHRyaWJ1dGUtcGFyc2luZy54
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iYXNlLWF0dHJpYnV0ZS1w
YXJzaW5nLnhodG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9i
YXNlLWF0dHJpYnV0ZS1wYXJzaW5nLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBA
QAogPHAgeG1sOmJhc2U9ItGRIj5UZXN0IGhvdyB4bWw6YmFzZSB2YWx1ZSBpcyBwYXJzZWQgKDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODg1OCI+YnVn
IDI4ODU4PC9hPikuIFBhc3NlZCBpZiBubyBhc3NlcnRpb24gZmFpbHVyZS48L3A+CiA8cCBpZD0i
cmVzdWx0Ij48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBlbHNlCiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJSZXN1bHQ6ICIgKyBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLmJhc2VVUkk7CiA8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2JsYW5rLWlubmVySFRNTC54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ibGFuay1pbm5lckhUTUwueGh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JsYW5rLWlubmVySFRNTC54aHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxib2R5PgogICAgIFRoaXMgdGVzdCBkaWQgPHNw
YW4gaWQ9Im5vdCI+Tk9UPC9zcGFuPiBwYXNzLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub3QnKS5pbm5lckhUTUwgPSAnJzsKICAg
ICA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JvZHktY2xv
bmUtbGluay1kZWNsLXBhcmVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2JvZHktY2xvbmUtbGluay1kZWNsLXBhcmVudC1jcmFzaC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ib2R5LWNsb25lLWxpbmstZGVjbC1w
YXJlbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIFRlc3QgcGFz
c2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLg0KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KIDxz
Y3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogDQogaWZyYW1lMSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2lmcmFtZScpOw0KIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lMSk7DQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmli
dXRlLWpzLW51bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52
YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRy
aWJ1dGUtanMtbnVsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBACiAKICAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwogICAgICAgICAg
ICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2NhcHR1cmluZy1ldmVudC1saXN0ZW5lcnMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYXB0dXJpbmctZXZlbnQtbGlzdGVuZXJzLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhcHR1cmluZy1ldmVudC1s
aXN0ZW5lcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsOCBAQCBmdW5jdGlvbiBo
YW5kbGVyKGV2ZW50KSB7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIAogICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RoZUJ1dHRvbicpCiAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIs
IHRydWUpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2hpbGRub2RlLWl0ZW0tYWZ0ZXIt
aXRlbW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jaGlsZG5v
ZGUtaXRlbS1hZnRlci1pdGVtbmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jaGlsZG5vZGUtaXRlbS1hZnRlci1pdGVtbmFtZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02LDggKzYsOCBAQCBXZWJLaXQgc2hvdWxkIHJldHJpZXZlIGVhY2ggZWxlbWVu
dCBjb3JyCiA8c3BhbiBpZD0iaXRlbSI+PC9zcGFuPjxzcGFuIGlkPSJ0ZXN0cyIgc3R5bGU9ImRp
c3BsYXk6IG5vbmU7Ij4xPHNwYW4gaWQ9Iml0ZW0iPjI8L3NwYW4+PC9zcGFuPgogPHNjcmlwdD4K
IAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKIHZhciB0ZXN0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0
ZXN0cycpOwogZG9jdW1lbnQud3JpdGVsbih0ZXN0cy5jaGlsZE5vZGVzWydpdGVtJ10udGV4dENv
bnRlbnQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2xhc3MtYWxsLXdoaXRlc3BhY2Uu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jbGFzcy1hbGwtd2hpdGVz
cGFjZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jbGFz
cy1hbGwtd2hpdGVzcGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAg
ICAgICBkaXYuY2xhc3MgeyAgfQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdD4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NsYXNzLWF0dHItY2hhbmdl
LWRvdWJsZS1tdXRhdGlvbi1maXJlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vY2xhc3MtYXR0ci1jaGFuZ2UtZG91YmxlLW11dGF0aW9uLWZpcmUuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2xhc3MtYXR0ci1jaGFuZ2UtZG91
YmxlLW11dGF0aW9uLWZpcmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKICAg
ICAjdGVzdCB7fQ0KIDwvc3R5bGU+DQogPHNjcmlwdD4NCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQ0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiANCiB2
YXIgY291bnQgPSAwOw0KIA0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NsaWVudC13aWR0
aC1oZWlnaHQtcXVpcmtzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y2xpZW50LXdpZHRoLWhlaWdodC1xdWlya3MuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC1xdWlya3MuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICAgICAgfQogICAgIAogICAgICAgICBmdW5jdGlv
biBydW5UZXN0cygpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGll
bnRXaWR0aCAhPSB3aW5kb3cuaW5uZXJXaWR0aCB8fAogICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuY2xpZW50SGVpZ2h0ICE9IHdpbmRvdy5pbm5lckhlaWdodCkgewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2NsaWVudC13aWR0aC1oZWlnaHQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgICAgICB9CiAgICAgCiAgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3RzKCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuY2xpZW50V2lkdGggIT0gd2luZG93LmlubmVyV2lkdGggfHwKICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICE9IHdpbmRvdy5p
bm5lckhlaWdodCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2xpZW50V2lkdGhBZnRl
ckRvY3VtZW50SXNSZW1vdmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vY2xpZW50V2lkdGhBZnRlckRvY3VtZW50SXNSZW1vdmVkLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NsaWVudFdpZHRoQWZ0ZXJEb2N1bWVudElzUmVt
b3ZlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogPC9pZnJhbWU+CiAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAg
IHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib25seWJlYXIiKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nsb25lLW5vZGUtZm9ybS1lbGVtZW50cy13aXRoLWF0dHIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jbG9uZS1ub2RlLWZvcm0t
ZWxlbWVudHMtd2l0aC1hdHRyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2Nsb25lLW5vZGUtZm9ybS1lbGVtZW50cy13aXRoLWF0dHIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiB9CiAKIGZ1bmN0
aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAK
ICAgICB2YXIgaW5wdXQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0MScpOwogICAg
IGlucHV0MS52YWx1ZSA9ICdUZXN0JzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nsb25l
LW5vZGUtZm9ybS1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2Nsb25lLW5vZGUtZm9ybS1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9jbG9uZS1ub2RlLWZvcm0tZWxlbWVudHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiB9CiAKIGZ1bmN0
aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAK
ICAgICB2YXIgaW5wdXQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0MScpOwogICAg
IGlucHV0MS52YWx1ZSA9ICdUZXN0JzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nsb25l
LW5vZGUtc3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jbG9u
ZS1ub2RlLXN0eWxlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2Nsb25lLW5vZGUtc3R5bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCw4
IEBAIGZ1bmN0aW9uIGdhcmJhZ2VDb2xsZWN0KCkKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAvLyBDcmVhdGUgYW4gYXJteSBvZiBjbG9uZXMsIHJlbW92aW5nIHRoZSBvcmlnaW5hbHMuCiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nsb25lLW5vZGUtei1pbmRleC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nsb25lLW5vZGUtei1pbmRleC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jbG9uZS1ub2RlLXotaW5k
ZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBjbG9uZU5vZGUoKSBkb2Vz
IG5vdCBwcmVzZXJ2ZSB6LWluZGV4IHdpCiAKIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQi
PgogCi12YXIgbGMgPSB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXI7Cit2YXIgbGMgPSB3aW5k
b3cudGVzdFJ1bm5lcjsKIGlmIChsYykgewogICAgIGxjLmR1bXBBc1RleHQoKTsKIH0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nsb25lTm9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2Nsb25lTm9kZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jbG9uZU5vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksOCAr
MTksOCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgeG1sRG9jID0gZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20i
LCAiZm9vOmJhciIsIG51bGwpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0
aW9uLW5hbWVkSXRlbS12aWEtaXRlbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRJdGVtLXZpYS1pdGVtLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRJdGVtLXZpYS1pdGVt
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAgICAgICAgIH0KICAgICAgICAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBsb2coImRvY3Vt
ZW50LmFsbC5pdGVtKCcxJykgPT0gZG9jdW1lbnQuYWxsLml0ZW0oMSkiKTsKICAgICAgICAgICAg
IGxvZygiZG9jdW1lbnQuYWxsLml0ZW0oJ3RhcmdldCcpID09IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0YXJnZXQnKSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1u
dWxsLWxpa2UtYXJndW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vY29sbGVjdGlvbi1udWxsLWxpa2UtYXJndW1lbnRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbnVsbC1saWtlLWFyZ3VtZW50cy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBAIGZ1bmN0aW9uIGdldERlc2NyaXB0
aW9uKHZhbHVlKQogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gb25sb2FkKCkKIHsKLSAgICBp
ZiAoImxheW91dFRlc3RDb250cm9sbGVyIiBpbiB0aGlzKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKCJ0ZXN0UnVubmVyIiBpbiB0aGlzKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBhcmd1bWVudHMgPSBbCiAg
ICAgICAgIDAsCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb21tZW50LWRvY3VtZW50LWZy
YWdtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29tbWVudC1k
b2N1bWVudC1mcmFnbWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9jb21tZW50LWRvY3VtZW50LWZyYWdtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsNyArNCw3IEBACiAgICAgIGlmIHlvdSBkb24ndCBzZWUgU1VDRVNTIHRoZW4gdGhlIERPTSB3
YXMKICAgICAgbm90IGJ1aWx0IGNvcnJlY3RseSBiZWNhdXNlIG9mIHRoaXMgY29tbWVudCAtLT4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogU1VDRVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jb21tZW50LWRvbS1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vY29tbWVudC1kb20tbm9kZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb21tZW50LWRvbS1ub2RlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxkaXYgaWQ9InRlc3QiPjwhLS1TVUNFU1MtLT48
L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdCIpLmZpcnN0Q2hpbGQ7CiBpZiAoeCAmJiB4Lm5vZGVUeXBlID09IE5vZGUuQ09NTUVO
VF9OT0RFKQogICAgIGRvY3VtZW50LndyaXRlKHgubm9kZVZhbHVlKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2NvbXBhdE1vZGUtQWxtb3N0U3RyaWN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vY29tcGF0TW9kZS1BbG1vc3RTdHJpY3QuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29tcGF0TW9kZS1BbG1vc3RTdHJp
Y3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCBmdW5jdGlvbiBkZWJ1Zyhz
dHIpIHsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICBpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCIpCiAg
ICAgICAgIGRlYnVnKCdTVUNDRVNTJykKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbXBh
dE1vZGUtQ29tcGF0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29t
cGF0TW9kZS1Db21wYXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vY29tcGF0TW9kZS1Db21wYXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDgg
QEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgaWYgKGRvY3VtZW50LmNvbXBhdE1vZGUg
PT0gIkJhY2tDb21wYXQiKQogICAgICAgICBkZWJ1ZygnU1VDQ0VTUycpCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jb21wYXRNb2RlLVN0cmljdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2NvbXBhdE1vZGUtU3RyaWN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbXBhdE1vZGUtU3RyaWN0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDggKzEwLDggQEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiB9CiAKIGZ1bmN0
aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgaWYg
KGRvY3VtZW50LmNvbXBhdE1vZGUgPT0gIkNTUzFDb21wYXQiKQogICAgICAgICBkZWJ1ZygnU1VD
Q0VTUycpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb21wdXRlZC1zdHlsZS1zZXQtcHJv
cGVydHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb21wdXRlZC1z
dHlsZS1zZXQtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY29tcHV0ZWQtc3R5bGUtc2V0LXByb3BlcnR5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiA8cD5Zb3Ugc2hvdWxkIHNlZSB0d28gIlBBU1MiIG1lc3NhZ2VzIGJl
bG93OjwvcD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRvY3VtZW50LndyaXRlKCJDb21wdXRl
ZCBzdHlsZSBwYXJlbnQgKHNob3VsZCBiZSBudWxsKTogIiArIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkucGFyZW50UnVsZSk7CiB0cnkg
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29uc3RhbnRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29uc3RhbnRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnN0YW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw4ICszNSw4IEBAIGZ1bmN0aW9uIHNob3VsZEJlKGEsIGIpCiB2YXIgY3NzUnVsZSwgY3Nz
VmFsdWUsIG5vZGVGaWx0ZXIsIGV2ZW50OwogCiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAKICAgICBjc3NSdWxlID0gZG9jdW1lbnQuc3R5
bGVTaGVldHNbMF0uY3NzUnVsZXNbMF07CiAgICAgc2hvdWxkQmUoImNzc1J1bGUuVU5LTk9XTl9S
VUxFIiwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3Rvci1pbi1yZW1v
dmVkLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29uc3Ry
dWN0b3ItaW4tcmVtb3ZlZC1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3Rvci1pbi1yZW1vdmVkLWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOSArNCw5IEBACiA8c2NyaXB0PgogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24oKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgICAgIHZhciBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignaWZyYW1lJyk7CiAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rp
b24oKSB7CkBAIC0xNyw3ICsxNyw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgIGZyYW1lLldpbmRvdzsKIAogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS50ZXh0
Q29udGVudCA9ICdQQVNTJzsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9
OwogICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICdkYXRhOnRleHQvaHRtbCxQQVNTJzsKICAg
ICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3RvcnMtb3ZlcnJpZGluZy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnN0cnVjdG9ycy1vdmVy
cmlkaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nv
bnN0cnVjdG9ycy1vdmVycmlkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDgg
QEAgZnVuY3Rpb24gc2hvdWxkQmUoYSwgYikKIAogZnVuY3Rpb24gdGVzdCgpIAogewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAKICAgICB3aW5kb3cuSW1hZ2UgPSAxOwog
ICAgIHdpbmRvdy5PcHRpb24gPSAxOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFp
bmVyTm9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnRhaW5l
ck5vZGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29u
dGFpbmVyTm9kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw4ICsxNiw4IEBACiAKICAgICAg
ICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgdmFy
IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAg
ICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vY29yZURPTS1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLnhodG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NvcmVET00tZWxlbWVudC1hdHRyaWJ1
dGUtanMtbnVsbC54aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vY29yZURPTS1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLnhodG1sCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw4ICs0Miw4IEBACiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICB2YXIgbGlzdGluZyA9IFsKICAgICAgICAg
ICAgICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVBdHRyaWJ1dGUtZXhj
ZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlQXR0
cmlidXRlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9jcmVhdGVBdHRyaWJ1dGUtZXhjZXB0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTUsOCArNSw4IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgICB0cnkgewogICAgICAgICB2YXIgYXR0cmlidXRlID0gZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlKCJiYTp0ZXN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVEb2N1bWVu
dC1lbXB0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZURv
Y3VtZW50LWVtcHR5Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NyZWF0ZURvY3VtZW50LWVtcHR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4
IEBAIGZ1bmN0aW9uIGRlYnVnKHN0cikgewogICAgIHByZS5hcHBlbmRDaGlsZCh0eHQpCiB9CiBm
dW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IHZhciB1cmkgPSAnaHR0cDovL3d3dy5leGFtcGxlLm9yZyc7CiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2NyZWF0ZURvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3JlYXRlRG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3JlYXRlRG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4
ICs3LDggQEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiAgICAgcHJlLmFwcGVuZENoaWxkKHR4dCkK
IH0KIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgdmFyIHhodG1sVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnCiAgICAg
dmFyIGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KHhodG1sVVJJ
LCAnaHRtbCcsIG51bGwpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVEb2N1bWVu
dFR5cGUyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlRG9j
dW1lbnRUeXBlMi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jcmVhdGVEb2N1bWVudFR5cGUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBA
IGZ1bmN0aW9uIGRlYnVnKHN0cikKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB0cnkgewogICAgICAgICAvLyBhZGQgdHdvIGRvY1R5
cGUgZWxlbWVudHMgdG8gdGVzdCBoYW5kbGluZyBtdWx0aXBsZSBhZGRpdGlvbiBvZiBkb2NUeXBl
cywgc2luY2UgZG9jdW1lbnQgaGFzIG5vIGRvY1R5cGUgaW5pdGlhbGx5CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50LXdpdGgtY29sdW1uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlRWxlbWVudC13aXRoLWNvbHVtbi5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50LXdp
dGgtY29sdW1uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8dGl0bGU+Y3Jl
YXRlRWxlbWVudCgnYTpiJykgaW4gSFRNTDwvdGl0bGU+CiA8cD5GQUlMIChzY3JpcHQgZGlkbid0
IHJ1bik8L3A+CiA8c2NyaXB0PgotIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogIHZhciBnb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdhOmInKS5sb2NhbE5hbWU7CiAgdmFyIGV4cGVjdGVkID0gJ2E6Yic7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50LXdpdGgtY29sdW1uLnht
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50LXdpdGgt
Y29sdW1uLnhtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Jl
YXRlRWxlbWVudC13aXRoLWNvbHVtbi54bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBA
CiAgPGJvZHk+CiAgIDxwPkZBSUwgKHNjcmlwdCBkaWRuJ3QgcnVuKTwvcD4KICAgPHNjcmlwdD4K
LSAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgZ290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYTpiJykubG9jYWxOYW1lOwogICAgdmFyIGV4cGVjdGVkID0gJ2E6Yic7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3JlYXRlRWxlbWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTgsOCArOCw4IEBACiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAg
ICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIHZhciB0ZCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGQubmFt
ZXNwYWNlVVJJKSk7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0
ZUVsZW1lbnROUy1lbXB0eS1uYW1lc3BhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtZW1wdHktbmFtZXNwYWNlLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy1lbXB0eS1u
YW1lc3BhY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxwPlRlc3QgdGhh
dCBjcmVhdGVFbGVtZW50TlMoIiIsIC4uLikgY3JlYXRlcyBhbiBlbGVtZW50IGluIG51bGwgbmFt
ZXNwYWNlLiBQZXIgRE9NIDMgQ29yZSw8L3A+CiA8cHJlPkluIHByb2dyYW1taW5nIGxhbmd1YWdl
cyB3aGVyZSBlbXB0eSBzdHJpbmdzIGNhbiBiZSBkaWZmZXJlbnRpYXRlZCBmcm9tIG51bGwsIGVt
cHR5IHN0cmluZ3MsIHdoZW4gZ2l2ZW4gYXMgYSBuYW1lc3BhY2UgVVJJLCBhcmUgY29udmVydGVk
IHRvIG51bGwuPC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBlbGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCIiLCAicCIpOwogZG9jdW1lbnQud3JpdGUoZWxlbS5uYW1l
c3BhY2VVUkkgPT09IG51bGwgPyAiUEFTUyIgOiAoIkZBSUw6ICciICsgZWxlbS5uYW1lc3BhY2VV
UkkgKyAiJyIpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVt
ZW50TlMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgZnVuY3Rpb24gZGVidWco
c3RyKQogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgIHRyeSB7CiAgICAgICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJodG1sIikpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Jvc3MtZnJhbWUtbm9kZS1wcm90b3R5cGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcm9zcy1mcmFtZS1ub2RlLXBy
b3RvdHlwZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9j
cm9zcy1mcmFtZS1ub2RlLXByb3RvdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2NTIwIj5idWcgMjY1MjA8L2E+OgogQWNjZXNzaW5nIGEgRE9NIG5vZGUgZnJv
bSBhIHBhcmVudCB3aW5kb3cgaW4gYSBjaGlsZCBpZnJhbWUgbW92ZXMgdGhlIHByb3RvdHlwZSB0
byB0aGUgY2hpbGQgaWZyYW1lIGFuZCByZXNldHMgaXQgaW4gdGhlIHBhcmVudCB3aW5kb3cuPC9w
PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIEhUTUxJ
bnB1dEVsZW1lbnQucHJvdG90eXBlLmZvbyA9ICdmb28nOwogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9jc3MtY2FjaGVkLWltcG9ydC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3NzLWNhY2hlZC1pbXBvcnQtcnVsZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3MtY2FjaGVkLWltcG9ydC1ydWxlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTExLDExICsxMSwxMSBAQCBkaXYgewogZnVuY3Rpb24gdGVzdCgp
IHsKICAgICBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5pbnNlcnRSdWxlKCdAaW1wb3J0IHVybCgi
cmVzb3VyY2VzL2Nzcy1pbnNlcnQtaW1wb3J0LXJ1bGUuY3NzIik7JywgMCk7CiAgICAgaWYgKGxv
Y2F0aW9uLmhyZWYuaW5kZXhPZigiPyIpID09IC0xKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBsb2NhdGlvbi5ocmVmID0gbG9j
YXRpb24uaHJlZiArICI/IjsKLSAgICB9IGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0g
ZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogPC9zY3JpcHQ+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nzcy1kZWxl
dGUtZG9jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLWRlbGV0
ZS1kb2MuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Nz
LWRlbGV0ZS1kb2MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBmdW5jdGlv
biBzdGVwMmEoKQogICAgIH0KICAgICBjYXRjaChlKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHku
aW5uZXJUZXh0ID0gJ0ZBSUwsIHRocmV3IGV4Y2VwdGlvbi4nOwotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIAogICAgIH0gICAgCiB9CkBAIC01NCw4ICs1NCw4
IEBAIGZ1bmN0aW9uIHN0ZXAyYigpCiAgICAgICAgIHNoZWV0Lmluc2VydFJ1bGUoJ2EgeyB9Jywg
MCk7CiAgICAgICAgIGlmIChpdGVyYXRpb24rKyA9PSAxMCkgewogICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5pbm5lclRleHQgPSAnUEFTUyc7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAKQEAgLTYzLDggKzYzLDggQEAgZnVuY3Rpb24gc3RlcDJiKCkKICAg
ICB9CiAgICAgY2F0Y2goZSkgewogICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICdG
QUlMLCB0aHJldyBleGNlcHRpb24uJzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAKICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3Mt
ZG9tLXJlYWQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nzcy1k
b20tcmVhZC0yLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L2Nzcy1kb20tcmVhZC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAgZnVu
Y3Rpb24gZGVidWcocykgewogfQogCiBmdW5jdGlvbiBydW5UZXN0cygpIHsKLQlpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotCQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogCW9yaWdpbmFsU3R5bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGUnKS5maXJz
dENoaWxkLm5vZGVWYWx1ZTsKIAlkZWJ1ZyhvcmlnaW5hbFN0eWxlKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2Nzcy1kb20tcmVhZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2Nzcy1kb20tcmVhZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jc3MtZG9tLXJlYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4
LDggQEAgSSB7IGRpc3BsYXk6IGJsb2NrOyB9CiA8L3N0eWxlPgogPHNjcmlwdD4KIGZ1bmN0aW9u
IHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB0ID0gZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3N0eWxlJyku
aXRlbSgwKS5maXJzdENoaWxkLm5vZGVWYWx1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RvY1N0eWxlJykuYXBwZW5kQ2hpbGQodCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jc3MtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2Nzcy1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nzcy1lbGVtZW50LWF0dHJpYnV0
ZS1qcy1udWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgICAg
fQogCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIHZh
ciBydWxlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpWzFdLnNoZWV0
LmNzc1J1bGVzOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3MtaW5uZXJIVE1MLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLWlubmVySFRNTC5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3MtaW5uZXJIVE1M
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8cD5TaG91bGQgc2F5IFBBU1M6
PC9wPgogPGRpdiBpZD0idGVzdCI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZh
ciBlPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogZS5pbm5lckhUTUw9ICI8cD5m
b29iYXI8L3A+IjsgLy8geWVzLCB0aGF0J3MgaW52YWxpZCBDU1MKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2Nzcy1tZWRpYXJ1bGUtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3NzLW1lZGlhcnVsZS1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLW1lZGlhcnVsZS1mdW5jdGlvbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOCArMTUsOCBAQAogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ICAgICAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5
bGUxJykuc2hlZXQ7CiAgICAgICAgICAgICAgICAgdmFyIG1lZGlhUnVsZSA9IHN0eWxlU2hlZXQu
Y3NzUnVsZXNbMF07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3Mtc2VsZWN0b3JUZXh0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLXNlbGVjdG9yVGV4
dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3Mtc2Vs
ZWN0b3JUZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDggQEAgZGl2IHNwYW4j
Zm9vLnRlc3QgZGl2OmhvdmVyI2JhciBhIHsgbWFyZwogPGJvZHk+CiA8cHJlIGlkPSJyZXN1bHQi
PjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVu
dC5zdHlsZVNoZWV0cy5pdGVtKDApOwogdmFyIHMgPSAiIjsKIGZvciAodmFyIGkgPSAwOyBpIDwg
c3R5bGVTaGVldC5jc3NSdWxlcy5sZW5ndGg7IGkrKykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vY3NzLXNldC1wcm9wZXJ0eS1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jc3Mtc2V0LXByb3BlcnR5LWV4Y2VwdGlvbi5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3Mtc2V0LXByb3BlcnR5LWV4Y2Vw
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBAIGZ1bmN0aW9uIHNldElu
aXRpYWxTdHlsZUZvckUoKQogfQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKICAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlJyk7
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Nzcy1zaG9ydEhhbmRzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLXNob3J0SGFuZHMuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLXNob3J0SGFuZHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQCBkaXYgeyBib3JkZXItcmlnaHQ6IHJlZDsg
fQogPGJvZHk+CiA8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5pdGVtKDApOwogdmFyIHMg
PSAiIjsKIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVTaGVldC5jc3NSdWxlcy5sZW5ndGg7IGkr
KykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY3NzLXNob3J0aGFuZC1jb21tb24tdmFs
dWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jc3Mtc2hvcnRoYW5k
LWNvbW1vbi12YWx1ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9jc3Mtc2hvcnRoYW5kLWNvbW1vbi12YWx1ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw4ICsxMCw4IEBACiA8L3ByZT4KIAogPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgdmFy
IHNoZWV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGUnKS5zaGVldDsKICAgdmFyIGV4
cGVjdGVkID0gJ3NvbGlkIHJlZCc7CiAgIHZhciBhY3R1YWwgPSBzaGVldC5jc3NSdWxlc1swXS5z
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2Nzc1RhcmdldC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2Nzc1RhcmdldC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9jc3NUYXJnZXQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0
LDkgQEAKIDxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iR0VUIiBhY3Rpb249IiNhIj48L2Zvcm0+CiA8
ZGl2IGlkPSJhbmNob3JzIj48YSBuYW1lPSJhIj48L2E+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHN0b3BwZWQgPSBmYWxzZTsK
QEAgLTE0LDggKzE0LDggQEAgc2V0VGltZW91dCgiZG9JdCgpIiwgMCk7CiBzZXRUaW1lb3V0KCJz
dG9wcGVkID0gdHJ1ZTsiLCAxMDApOwogZnVuY3Rpb24gZG9JdCgpIHsKICAgICBpZiAoc3RvcHBl
ZCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBkb2N1bWVudC5mb3Jtcy5mLnN1Ym1pdCgpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vZGVmYXVsdFZpZXcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9kZWZhdWx0Vmlldy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9kZWZhdWx0Vmlldy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04
LDggKzgsOCBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlKSB7CiB9CiAKIGZ1bmN0aW9uIHRlc3Qo
KSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KICAgICAKICAgICBp
ZiAod2luZG93ID09PSBkb2N1bWVudC5kZWZhdWx0VmlldykKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2Rlc3Ryb3ktc2VsZWN0ZWQtcmFkaW8tYnV0dG9uLWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZGVzdHJveS1zZWxlY3RlZC1yYWRpby1idXR0b24t
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZGVz
dHJveS1zZWxlY3RlZC1yYWRpby1idXR0b24tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDggQEAKIDxodG1sPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJykuaW5uZXJIVE1MID0gJyc7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3JhZGlvJykuY2hlY2tlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kaXIt
bm8tYm9keS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Rpci1uby1i
b2R5Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Rpci1u
by1ib2R5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAgZnVuY3Rpb24gcHJp
bnQobWVzc2FnZSwgY29sb3IpIAogCiBmdW5jdGlvbiB0ZXN0KCkgCiB7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIHZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1l
bnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpOwogICAgIGRvYy5ib2R5LnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZG9jLmJvZHkpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdHlw
ZS1ldmVudC1saXN0ZW5lci1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2RvY3R5cGUtZXZlbnQtbGlzdGVuZXItY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdHlwZS1ldmVudC1saXN0ZW5lci1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogPHByZT5QQVNTOiBZb3UgZGlkbid0
IGNyYXNoLjwvcHJlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB2YXIgZG9jdHlwZSA9IGRv
Y3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgiaHRtbCIsIDAsIDApOwog
ZG9jdHlwZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgfSwgZmFsc2Up
OwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwtaW5w
dXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwt
aW5wdXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9j
dW1lbnQtYWxsLWlucHV0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxz
Y3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICBkb2N1bWVudC5hbGwuaW5wdXQudmFsdWUgPSAiUEFTUyIKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcycpLmlubmVyVGV4dCA9IGRvY3VtZW50LmFsbC5p
bnB1dC52YWx1ZTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9j
dW1lbnQtYWxsLXNlbGVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L2RvY3VtZW50LWFsbC1zZWxlY3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLXNlbGVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hdHRyaWJ1
dGUtanMtbnVsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3Vt
ZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2RvY3VtZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDggKzQ5LDggQEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgICAgICAgICAvLyBPdGhlcnMgdG8gdGVzdDoKICAgICAgICAgICAg
IC8vICBGdW5jdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWNsZWFy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtY2xlYXIu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQt
Y2xlYXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kb2N1bWVudC1jbGVhci5qcyI+PC9zY3JpcHQ+CiAgIDxwPkNhbGxpbmcgZG9j
dW1lbnQuY2xlYXIoKSBmcm9tIGFuIGV4dGVybmFsIHNjcmlwdCBzaG91bGQgbm90IGNyYXNoLjwv
cD4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICA8L3NjcmlwdD4KICAg
PHA+SWYgc3VjY2Vzc2Z1bCwgdGhlcmUgd2lsbCBiZSA0IGxpbmVzIHRvdGFsPC9wPgogPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtaW1wb3J0Tm9kZS1hcmd1bWVu
dHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1pbXBv
cnROb2RlLWFyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9kb2N1bWVudC1pbXBvcnROb2RlLWFyZ3VtZW50cy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC04LDggKzgsOCBAQAogPHNjcmlwdD4KIHZhciBpbXBvcnRlZDsKIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIHZhciBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiBkLmlubmVySFRNTCA9
ICI8c3Bhbj5oZWxsbyA8L3NwYW4+PHNwYW4+d29ybGQ8L3NwYW4+IjsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2RvY3VtZW50LXNjcmlwdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1zY3JpcHRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LXNjcmlwdHMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMzUsOCArMzUsOCBAQCBmdW5jdGlvbiBzaG91bGRCZShhLCBiKQogfQogCiBmdW5jdGlv
biBydW5UZXN0cygpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgCiAg
ICAgc2hvdWxkQmUoZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGgsIDIpOwogICAgIHNob3VsZEJlKCJk
b2N1bWVudC5zY3JpcHRzWzBdLmlkIiwgImZpcnN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9kb2N1bWVudC1zZXQtdGl0bGUtbXV0YXRpb24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1zZXQtdGl0bGUtbXV0YXRpb24tY3Jhc2gu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQt
c2V0LXRpdGxlLW11dGF0aW9uLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTEgKzIs
MTEgQEAKIDxodG1sPg0KIDxzY3JpcHQ+DQogdmFyIGNvdW50ID0gMDsNCi1pZiAoIXdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikNCitpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQ0KICAgICBkb2N1
bWVudC53cml0ZSgiVGhpcyB0ZXN0IHJlcXVpcmVzIEdDQ29udHJvbGxlci4iKTsNCiBlbHNlIHsN
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
Ow0KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiANCiAgICAgZnVuY3Rpb24gY3Jh
c2goKSB7DQogICAgICAgICBpZiAoKytjb3VudCA+IDEpDQpAQCAtMTUsNyArMTUsNyBAQCBlbHNl
IHsNCiAgICAgICAgIGRvY3VtZW50LndyaXRlKCdQQVNTJyk7DQogICAgICAgICBkb2N1bWVudC5j
bG9zZSgpOw0KICAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsNCi0gICAgICAgIHNldFRp
bWVvdXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDApOw0KKyAgICAgICAg
c2V0VGltZW91dCgidGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiLCAwKTsNCiAgICAgfQ0KIA0KICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9k
b2N1bWVudC1zdHlsZXNoZWV0cy1lbXB0eS1zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LXN0eWxlc2hlZXRzLWVtcHR5LXN0eWxlLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LXN0eWxlc2hl
ZXRzLWVtcHR5LXN0eWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8cD5U
ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2NDkiPmJ1ZyAxNTY0OTwvYT46CiBFbXB0eSBTVFlMRSBlbGVtZW50cyBhcmUgbm90IHJlZmxl
Y3RlZCBpbnRvIHRoZSBkb2N1bWVudC5zdHlsZVNoZWV0cyBvYmplY3QuPC9wPgogPHNjcmlwdD4K
LSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQn
KVswXS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKTsKICAgZG9j
dW1lbnQud3JpdGUoZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoID09IDIgPyAiU1VDQ0VTUyIg
OiAiRkFJTFVSRTogIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCArICIgc3R5bGVzaGVl
dHMiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtd2lk
dGgtaGVpZ2h0LWZvcmNlLWxheW91dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2RvY3VtZW50LXdpZHRoLWhlaWdodC1mb3JjZS1sYXlvdXQuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtd2lkdGgtaGVpZ2h0LWZv
cmNlLWxheW91dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogCiAgICAgICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgbG9nKCJkb2N1
bWVudC5ib2R5LmNsaWVudFdpZHRoID0gIiArIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpOwog
ICAgICAgICAgICAgbG9nKCJkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCA9ICIgKyBkb2N1bWVu
dC5ib2R5LmNsaWVudEhlaWdodCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVu
dEVsZW1lbnQtbnVsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Rv
Y3VtZW50RWxlbWVudC1udWxsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2RvY3VtZW50RWxlbWVudC1udWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OCArNSw4IEBACiA8dGl0bGU+V2VlZSE8L3RpdGxlPgogPHNjcmlwdD4KIHdpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIHZhciBt
ZXRocyA9IFsKICAgICBkb2N1bWVudC5sb29rdXBOYW1lc3BhY2VVUkksCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb2N1bWVudF93cml0ZV9wYXJhbXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudF93cml0ZV9wYXJhbXMuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnRfd3JpdGVfcGFyYW1zLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8Yj4gRXhwZWN0ZWQgb3V0cHV0OiBB
QiA8L2I+PC9wPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHZhciBwYXJhbV9vbmU9IkEiOwogdmFy
IHBhcmFtX3R3bz0iQiI7CiBkb2N1bWVudC53cml0ZShwYXJhbV9vbmUscGFyYW1fdHdvKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50dXJpLWxvc2VzLXRvLWJhc2UtdGFnLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnR1cmktbG9zZXMt
dG8tYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9jdW1lbnR1cmktbG9zZXMtdG8tYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Myw4ICszLDggQEAKIDxiYXNlIGhyZWY9Imh0dHA6Ly9wYXNzLmV4YW1wbGUuY29tLyI+CiA8Ym9k
eT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBkb2N1bWVudC5kb2N1bWVudFVSSSA9ICdodHRwOi8v
ZmFpbC5leGFtcGxlLmNvbS8nOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9kb2N1bWVudHVyaS1ub3QtYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudHVyaS1ub3QtYWZmZWN0ZWQtYnktYmFzZS10
YWcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1l
bnR1cmktbm90LWFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9u
IG5vcm1hbGl6ZVVSTCh1cmwpIHsKICAgcmV0dXJuIHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRl
eE9mKCdMYXlvdXRUZXN0cycpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50
dXJpLXJlYWRvbmx5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9j
dW1lbnR1cmktcmVhZG9ubHkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZG9jdW1lbnR1cmktcmVhZG9ubHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4
ICsyLDggQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgdmFyIG9sZFZhbHVlID0gZG9j
dW1lbnQuZG9jdW1lbnRVUkk7CiAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50VVJJID0gJ2h0dHA6
Ly9mYWlsLmV4YW1wbGUuY29tLyc7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb20tYWRk
LW9wdGlvbmVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9k
b20tYWRkLW9wdGlvbmVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vZG9tLWFkZC1vcHRpb25lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTksOCArOSw4IEBAIFB1cnBvc2U6IFRvIHRlc3QgaWYgdGhlIGJvdGggRE9NMSBhbmQgRE8KIDwv
Zm9ybT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAvLyBET00xCiBkb2N1bWVudC5teV9m
b3JtLm15X3NlbGVjdC5hZGQobmV3IE9wdGlvbigiYyIsICJjIikpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vZG9tLWluc3RhbmNlb2YuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9kb20taW5zdGFuY2VvZi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9kb20taW5zdGFuY2VvZi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
NCw4ICsxNCw4IEBAIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKSAKIAogZnVuY3Rpb24g
dGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBpZihkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpIGluc3RhbmNlb2YgRWxlbWVudCkKICAgICAgICAg
cHJpbnQoIlBBU1MiLCAiZ3JlZW4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbS1t
ZXRob2QtZG9jdW1lbnQtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vZG9tLW1ldGhvZC1kb2N1bWVudC1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tLW1ldGhvZC1kb2N1bWVudC1jaGFuZ2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKIGhhbmRsZXIgPSBmdW5jdGlvbigpCiB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9kb20tcGFyc2Utc2VyaWFsaXplLWRpc3BsYXkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb20tcGFyc2Utc2VyaWFsaXplLWRpc3BsYXkuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tLXBhcnNlLXNlcmlh
bGl6ZS1kaXNwbGF5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAgcHJlIHsK
IDwvc3R5bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiBmdW5jdGlvbiBleGVjdXRlKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Rv
bS1wYXJzZS1zZXJpYWxpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9kb20tcGFyc2Utc2VyaWFsaXplLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2RvbS1wYXJzZS1zZXJpYWxpemUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOCArMzMsOCBAQCBwcmUgewogPC9zdHlsZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGV4ZWN1dGUoKQogewpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vZHVwbGljYXRlLWlkcy1kb2N1bWVudC1vcmRlci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2R1cGxpY2F0ZS1pZHMtZG9jdW1lbnQtb3Jk
ZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZHVwbGlj
YXRlLWlkcy1kb2N1bWVudC1vcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4
IEBAIGZ1bmN0aW9uIGRlYnVnKHN0cikgewogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsgCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsgCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KICAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvbyIpOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsg
KytpKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kdXBsaWNhdGUtaWRzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZHVwbGljYXRlLWlkcy5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kdXBsaWNhdGUtaWRzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CiB9
CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgeyAKLQlpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7IAotCQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7IAorCQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAl9CiAJZGl2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cGxpY2F0ZScpOwogCWR1cDEgPSBkaXYucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChkaXYpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZWFybHkt
ZnJhbWUtdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZWFybHkt
ZnJhbWUtdXJsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L2Vhcmx5LWZyYW1lLXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4K
IDxmcmFtZXNldCBjb2xzPSIxOTAsKiIgZnJhbWVib3JkZXI9IjAiIGJvcmRlcj0iMCIgZnJhbWVz
cGFjaW5nPSIwIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnQtYXR0cmlidXRl
LWpzLW51bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50
LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2VsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNTIsOCArNTIsOCBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICAgICAgICAgIC8vIE90aGVycyB0byB0ZXN0OgogICAgICAgICAgICAgLy8g
IENvcmUgRE9NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXJl
bGF0aXZlLXRvLXZpZXdwb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vZWxlbWVudEZyb21Qb2ludC1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXJlbGF0aXZl
LXRvLXZpZXdwb3J0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAKICAgICAg
ICAgYWxlcnQoZS5jbGllbnRYICsgIiAiICsgZS5jbGllbnRZICsgIiAiICsgZG9jdW1lbnQuZWxl
bWVudEZyb21Qb2ludChlLmNsaWVudFgsIGUuY2xpZW50WSkudGV4dENvbnRlbnQpOwogICAgIH0K
IAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZGVzY3JpcHRpb24oJ1RoaXMg
dGVzdCBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50IGlzIGV2YWx1YXRlZCBpbiB3aXRoIHJlc3Bl
Y3QgdG8gdGhlIHZpZXdwb3J0LCBub3QgdGhlIGRvY3VtZW50LicpOwogCkBAIC05Nyw3ICs5Nyw3
IEBACiAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKICAgICB0ZXN0RWxlbWVudChlbGVt
ZW50SW5pdGlhbCwgIkluaXRpYWwiLCBvZmZzZXQubGVmdCwgb2Zmc2V0LnRvcCwgLyogaGFzWm9v
bSAqLyB0cnVlKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsKICAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGFyZWEpOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2VtcHR5LWhh
c2gtYW5kLXNlYXJjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Vt
cHR5LWhhc2gtYW5kLXNlYXJjaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9lbXB0eS1oYXNoLWFuZC1zZWFyY2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTAsOSArMTAsOSBAQCBIYXNoIGFuZCBzZWFyY2ggcHJvcGVydGllcyBzaG91bGQgYmUgbm9uCiA8
YSBpZD0ibGluazMiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8/c2VhcmNoI3Rlc3QiPmxp
bmsgd2l0aCBoYXNoPC9hPgogPGRpdiBpZD0ib3V0Ij48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAod2luZG93LmxvY2F0aW9uLnRv
U3RyaW5nKCkuY2hhckF0KHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpLmxlbmd0aCAtIDEpICE9
ICIjIikgewpAQCAtMjYsOCArMjYsOCBAQCBpZiAod2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCku
Y2hhckF0KHdpCiAgICAgICAgICAgICAgICAgICArICJsaW5rMS5zZWFyY2g6ICIgKyBsaW5rMS5z
ZWFyY2ggKyAiPGJyPiIKICAgICAgICAgICAgICAgICAgICsgImxpbmsyLnNlYXJjaDogIiArIGxp
bmsyLnNlYXJjaCArICI8YnI+IgogICAgICAgICAgICAgICAgICAgKyAibGluazMuc2VhcmNoOiAi
ICsgbGluazMuc2VhcmNoICsgIjxicj4iCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZQogICAgICAgICB3aW5kb3cubG9jYXRpb24gKz0gIj8j
IjsKIApAQCAtNDUsOCArNDUsOCBAQCBpZiAod2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCkuY2hh
ckF0KHdpCiAgICAgICAgICAgICAgICAgICArICJsaW5rMi5zZWFyY2g6ICIgKyBsaW5rMi5zZWFy
Y2ggKyAiPGJyPiIKICAgICAgICAgICAgICAgICAgICsgImxpbmszLnNlYXJjaDogIiArIGxpbmsz
LnNlYXJjaCArICI8YnI+IgogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZXZlcnl0aGluZy10by1zdHJpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ldmVyeXRoaW5nLXRvLXN0
cmluZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ldmVy
eXRoaW5nLXRvLXN0cmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQCBTb21l
IHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb2Ygd2luZG93IGFuCiANCiA8c2NyaXB0Pg0KIA0KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogDQogdHJ5IHsNCiAgIHZhciBjdXJyUHJvcGVydHk7DQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZXhjZXB0aW9uLWdldHRpbmctZXZlbnQtaGFuZGxl
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2V4Y2VwdGlvbi1nZXR0
aW5nLWV2ZW50LWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZXhjZXB0aW9uLWdldHRpbmctZXZlbnQtaGFuZGxlci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00LDggKzQsOCBAQAogaGFuZGxlRXZlbnQgcHJvcGVydHkgb2YgYW4gZXZlbnQgbGlz
dGVuZXIgZG9lcyBub3QgY3Jhc2guPC9wPgogPGhyPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiBmdW5jdGlvbiBsb2FkZWQoKSB7CiAgICAgdmFyIG8gPSB7fTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2V4Y2VwdGlvbi1uby1mcmFtZS10aW1lb3V0LWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZXhjZXB0aW9uLW5vLWZyYW1lLXRpbWVvdXQtY3Jh
c2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZXhjZXB0
aW9uLW5vLWZyYW1lLXRpbWVvdXQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5
LDggQEAgZnJvbSBhIHRpbWVvdXQuCiA8L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwv
c2NyaXB0PgogCiA8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0nZXhjZXB0aW9uLW5vLWZyYW1lLXRp
bWVvdXQtY3Jhc2gtaWZyYW1lLmh0bWwnPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZmVhdHVyZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9m
ZWF0dXJlcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9m
ZWF0dXJlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZh
ciB1bmRlZmluZWQ7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ZpcnN0bGV0dGVyLXRh
YmxlY2VsbC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Zp
cnN0bGV0dGVyLXRhYmxlY2VsbC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9maXJzdGxldHRlci10YWJsZWNlbGwtY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogPHN0eWxlPio6bnRoLWNoaWxkKDIpOmZpcnN0LWxldHRlciB7IHZlcnRpY2FsLWFsaWduOiBz
dXBlcjsgfTwvc3R5bGU+CiA8YT4uLi48L2E+PGRlbCBzdHlsZT0iZGlzcGxheTp0YWJsZS1jZWxs
OyI+VGhpcyB0ZXh0IHNob3VsZCBiZSBkaXNwbGF5ZWQgd2l0aG91dCBjcmFzaGluZwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vZmlyc3RsaW5lLWZpeGVkLWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZmlyc3RsaW5lLWZpeGVkLWNyYXNoLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ZpcnN0bGluZS1maXhlZC1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiAqOm50aC1jaGlsZCgyKTpmaXJzdC1saW5lIHsg
bWFyZ2luLWJvdHRvbTogMXB4OyB9PC9zdHlsZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2ZyYW1lLWNvbnRlbnRXaW5kb3ctY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9mcmFtZS1jb250ZW50V2luZG93LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ZyYW1lLWNvbnRlbnRXaW5kb3ctY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgVGhpcyB0ZXN0cyBIVE1MRnJhbWVFbGVt
ZW50LmNvbnRlbnRXaW5kbwogCiBJZiB0aGVyZSBpcyBubyBjcmFzaCB0aGlzIHRlc3QgcGFzc2Vz
LgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZnJhbWUnKS5jb250ZW50V2lu
ZG93OwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9mcmFtZS1kZWxldGVk
LWluLWRvY3VtZW50LW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9mcmFtZS1kZWxldGVkLWluLWRvY3VtZW50LW9wZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZnJhbWUtZGVsZXRlZC1pbi1kb2N1bWVudC1vcGVuLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vZnJhbWUtbG9hZGluZy12aWEtZG9jdW1lbnQtd3JpdGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9mcmFtZS1sb2FkaW5nLXZpYS1k
b2N1bWVudC13cml0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9mcmFtZS1sb2FkaW5nLXZpYS1kb2N1bWVudC13cml0ZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02LDEwICs2LDEwIEBACiAKIGZ1bmN0aW9uIGJ1aWxkRnJhbWVzZXQoKQogewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgfQogCiAgICAgdmFy
IG91dEhUTUw9IjxmcmFtZXNldCByb3dzPVwiMzMlLCAzMyUsIDMzJVwiPiIrCkBAIC0zMyw4ICsz
Myw4IEBAIGZ1bmN0aW9uIGJ1aWxkRnJhbWVzZXQoKQogICAgIGZyYW1lc1sndG9wUm93J10uZG9j
dW1lbnQuY2xvc2UoKTsKIAogICAgIHZhciBsb2NhbEltYWdlTG9jYXRpb24gPSAiZmlsZTovLy90
bXAvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2FiZS5wbmciOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxvY2FsSW1hZ2VMb2NhdGlvbiA9IGxh
eW91dFRlc3RDb250cm9sbGVyLnBhdGhUb0xvY2FsUmVzb3VyY2UobG9jYWxJbWFnZUxvY2F0aW9u
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGxvY2FsSW1hZ2VMb2NhdGlv
biA9IHRlc3RSdW5uZXIucGF0aFRvTG9jYWxSZXNvdXJjZShsb2NhbEltYWdlTG9jYXRpb24pOwog
CiAgICAgLy8gV2UgY2hlY2sgaW1hZ2UgbG9hZGluZyB2aWEgYW4gb25sb2FkIGhhbmRsZXIgb24g
dGhlIDxpbWc+IGluc3RlYWQgb2YgdGhlIDxib2R5PiBiZWNhdXNlIGR1ZSB0byBodHRwczovL3dl
YmtpdC5vcmcvYi8yOTYxNQogICAgIC8vIHRoZSBkb2N1bWVudCBvbmxvYWQgbWF5IGZpcmUgYmVm
b3JlIHRoZSBpbWFnZSBoYXMgbG9hZGVkLgpAQCAtNjYsOCArNjYsOCBAQCB2YXIgZnJhbWVMb2Fk
Q291bnRlciA9IDM7CiBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiB7CiAgICAgZnJhbWVMb2FkQ291
bnRlci0tOwotICAgIGlmIChmcmFtZUxvYWRDb3VudGVyID09IDAgJiYgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKGZyYW1lTG9hZENvdW50ZXIgPT0gMCAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGJ1aWxkRnJhbWVzZXQoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nYy0xLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2djLTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOCBAQCBmdW5j
dGlvbiBkb2l0KCkKICAgICBvdXRwdXQuaW5uZXJIVE1MICs9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzcGFuLUIiKS5jdXN0b21Qcm9wZXJ0eSArICI8QlI+IjsKIH0KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0yLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTIuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMjksOCArMjksOCBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICB9CiB9CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDggQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAgfQogfQogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2MtNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTQuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDggKzksOCBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlKSB7CiB9CiAK
IGZ1bmN0aW9uIHRlc3QoKSB7Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
CQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisJaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisJCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCX0KIAogCWZvciAoeCA9IDA7IHgg
PCAxMDAwOyB4KyspIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01Lmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsOCArMjQsOCBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy02Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNi5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy02Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE4LDggKzE4LDggQEAgZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQogICAgIG91dHB1dC5pbm5l
ckhUTUwgKz0gc3BhbkIucGFyZW50Tm9kZSArICI8QlI+IjsKICAgICBvdXRwdXQuaW5uZXJIVE1M
ICs9IHNwYW5CLm93bmVyRG9jdW1lbnQgKyAiPEJSPiI7CiAgICAgCi0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGRvaXQoKQpAQCAtMzEsOSArMzEsOSBAQCBmdW5j
dGlvbiBkb2l0KCkKICAgICBmcmFtZS5zcmMgPSAiYWJvdXQ6YmxhbmsiOyAgICAKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy03Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2MtNy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nYy03Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDggQEAgZnVuY3Rpb24g
ZnJhbWVMb2FkZWQoKQogICAgIG91dHB1dC5pbm5lckhUTUwgKz0gc3BhbkIucGFyZW50Tm9kZSAr
ICI8QlI+IjsKICAgICBvdXRwdXQuaW5uZXJIVE1MICs9IHNwYW5CLm93bmVyRG9jdW1lbnQgKyAi
PEJSPiI7CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAKIH0KIAog
ZnVuY3Rpb24gZG9pdCgpCkBAIC0zMiw5ICszMiw5IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIGZy
YW1lLnNyYyA9ICdhYm91dDpibGFuaycKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy04
Lmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtOC5o
dG1sLWRpc2FibGVkCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
Yy04Lmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDIyICsxMywyMiBAQCBmdW5j
dGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikgCiAKIGZ1bmN0aW9uIHRlc3QoKSAKIHsKLSAgICBp
ZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICAgICAgcHJpbnQoIkZBSUw6IFRoaXMgdGVzdCBjYW4gb25seSBydW4gZnJv
bSBpbnNpZGUgRHVtcFJlbmRlclRyZWUuIiwgInJlZCIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAKICAgICBkb2N1bWVudC5i
b2R5LnN0eWxlLm15Q3VzdG9tUHJvcGVydHkgPSBuZXcgU3RyaW5nKCIxIik7CiAgICAgbmV3IERh
dGUoKTsgLy8gYWxsb2NhdGUgYW5vdGhlciBvYmplY3QgdG8gY3JlYXRlIGhlYXAgZW50cm9weQog
ICAgIC8vIENvbGxlY3Rpbmcgb24gYSB0aW1lb3V0IHNlZW1zIHRvIG1ha2UgdGhlIGNyYXNoIG1v
cmUgcmVwcm9kdWNpYmxlIC0tIG5vdCBleGFjdGx5IHN1cmUgd2h5CiAgICAgc2V0VGltZW91dCgn
R0NDb250cm9sbGVyLmNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZCh0cnVlKTsnLCAwKTsKLSAgICBz
ZXRUaW1lb3V0KCdkb2N1bWVudC5ib2R5LnN0eWxlLm15Q3VzdG9tUHJvcGVydHk7IHByaW50KCJQ
QVNTOiB5b3UgZGlkblwndCBjcmFzaCIpOyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7JywgMSk7CisgICAgc2V0VGltZW91dCgnZG9jdW1lbnQuYm9keS5zdHlsZS5teUN1c3RvbVBy
b3BlcnR5OyBwcmludCgiUEFTUzogeW91IGRpZG5cJ3QgY3Jhc2giKTsgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7JywgMSk7CiAgICAgCiAgICAgLy8gZmFpbC1zYWZlCi0gICAgc2V0VGltZW91dCgn
cHJpbnQoIkZBSUw6IFRlc3QgaHVuZyAtLSBiYWlsaW5nIG91dCIpOyBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7JywgMik7CisgICAgc2V0VGltZW91dCgncHJpbnQoIkZBSUw6IFRl
c3QgaHVuZyAtLSBiYWlsaW5nIG91dCIpOyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsnLCAyKTsK
IH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy05Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtOS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy05Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTkyLDggKzkyLDggQEAgZnVuY3Rpb24gdGVzdERPTUltcGxlbWVudGF0aW9uKCkKIAogZnVuY3Rp
b24gdGVzdCgpIAogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAKICAg
ICBwcmludCgiRE9NIE9CSkVDVFMgQkVGT1JFIEdBUkJBR0UgQ09MTEVDVElPTjoiKTsKICAgICBn
ZW5lcmF0ZVByb3BlcnRpZXMoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTExLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTEuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTEuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIj4KICA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogPC9zY3JpcHQ+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
QEAgLTIyLDggKzIyLDggQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBkb2N1bWVudC53cml0ZSh4bWxOb2RlLm93bmVyRG9j
dW1lbnQuZGF0YSA/ICI8cD5TVUNDRVNTPC9wPiIgOiAiPHA+RkFJTFVSRTwvcD4iKTsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICBm
dW5jdGlvbiBsb2FkRGF0YSgpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLWFjaWQz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtYWNpZDMuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtYWNpZDMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKICAgPC9kaXY+CiA8cD5UaGVyZSBzaG91bGQg
YmUgbm8gYXNzZXJ0aW9uIGZhaWx1cmVzIGJlbG93LCBidXQgdGhlIHdvcmQgRE9ORSBzaG91bGQg
c2hvdyB1cC48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtY3VzdG9tLXByb3RvdHlwZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLWN1c3RvbS1wcm90b3R5
cGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtY3Vz
dG9tLXByb3RvdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIGZ1bmN0
aW9uIHNob3VsZEJlTm9uTnVsbChhRGVzY3JpcHRpb24sIGEKIH0KIAogKGZ1bmN0aW9uICgpIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHNob3VsZEJlTm9uTnVsbCgiJCgn
cCcpLl9fcHJvdG9fXyIsICQoJ3AnKS5fX3Byb3RvX18pOwogICAgICQoJ3AnKS5fX3Byb3RvX18g
PSBudWxsOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtaW1hZ2UtZWxlbWVudC0yLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtaW1hZ2UtZWxlbWVudC0y
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLWltYWdl
LWVsZW1lbnQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogCiA8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiAkKGlk
KQpAQCAtMzIsOCArMzIsOCBAQCBmdW5jdGlvbiBjcmVhdGVJbWFnZSgpCiAgICAgICAgIC0taW1h
Z2VDb3VudDsKICAgICAgICAgaWYgKCFpbWFnZUNvdW50KSB7CiAgICAgICAgICAgICBsb2coIlBB
U1MiKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfTsKICAgICBpbWFnZSA9IG51bGw7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1pbWFnZS1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtaW1hZ2UtZWxlbWVudC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1pbWFnZS1lbGVtZW50Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDE1ICsyNSwxNSBAQCBmdW5jdGlvbiBjcmVhdGVJbWFnZSgpCiAgICAg
ICAgIC0taW1hZ2VDb3VudDsKICAgICAgICAgaWYgKGltYWdlQ291bnQpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
IH07CiB9CiAKIChmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZhciBpbWFnZSA9IG5l
dyBJbWFnZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dlbmVyaWMtZm9ybS1lbGVtZW50
LWFzc2VydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dlbmVyaWMt
Zm9ybS1lbGVtZW50LWFzc2VydC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZW5lcmljLWZvcm0tZWxlbWVudC1hc3NlcnQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5
VGFnTmFtZS1sb2NhbE5hbWUtbWF0Y2hpbmcyLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlUYWdOYW1lLWxvY2FsTmFtZS1tYXRjaGluZzIueGh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlUYWdOYW1lLWxvY2FsTmFtZS1tYXRjaGluZzIueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYs
OCArNiw4IEBACiA8ZGl2IGlkPSJjb250YWluZXIiPjxGT08+PGZvbz48bGluZWFyR3JhZGllbnQv
PjwvZm9vPjwvRk9PPjxpbWcvPjwvZGl2PgogCiA8c2NyaXB0PjwhW0NEQVRBWwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVy
Jyk7CiB2YXIgc3ZnZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZygKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlUYWdOYW1lLWxvY2FsTmFtZS1tYXRj
aGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlUYWdOYW1lLWxvY2FsTmFtZS1tYXRjaGluZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5VGFnTmFtZS1sb2NhbE5hbWUtbWF0Y2hp
bmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIDxkaXYgaWQ9ImNvbnRhaW5l
ciI+PEZPTz48Zm9vPjxsaW5lYXJHcmFkaWVudC8+PC9mb28+PC9GT08+PGltZy8+PC9kaXY+CiAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250YWluZXInKTsKIHZhciBzdmdkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFy
c2VGcm9tU3RyaW5nKApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudGJ5bmFt
ZS1pbnZhbGlkYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
ZXRlbGVtZW50YnluYW1lLWludmFsaWRhdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50YnluYW1lLWludmFsaWRhdGlvbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogICA8cD48L3A+CiAgIDxwPjwvcD4KICAgPHNj
cmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRyeSB7CiAgICAgICB2YXIgZGl2
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJteV9hIik7CiAgICAgICBkaXZzWzBdLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoZGl2c1swXSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRlbGVtZW50c2J5dGFnbmFtZW5zLW1peGVkLW5hbWVzcGFjZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5dGFnbmFtZW5zLW1peGVkLW5h
bWVzcGFjZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0ZWxlbWVudHNieXRhZ25hbWVucy1taXhlZC1uYW1lc3BhY2VzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOCArMyw4IEBACiAgIDxzcGFuPlRlc3QgdG8gZW5zdXJlIHRoYXQgbm9kZSBsaXN0
IGNhY2hpbmcgcGF5cyBhdHRlbnRpb24gdG8gbmFtZXNwYWNlczwvc3Bhbj48YnI+CiAgIDxkaXY+
ZGl2IDE8L2Rpdj4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRy
eSB7CiAgICAgICB2YXIgZGl2cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYi
KTsKICAgICAgIGRvY3VtZW50LndyaXRlKCJTaG91bGQgYmUgMTogIiArIGRpdnMubGVuZ3RoICsg
Ijxicj4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldHRlci1vbi13aW5kb3ctb2Jq
ZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0dGVyLW9uLXdp
bmRvdy1vYmplY3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0dGVyLW9uLXdpbmRvdy1vYmplY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDggQEAKIDxodG1sPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIHdpbmRvdy5fX2RlZmluZUdldHRlcl9f
KCJmb28iLCBmdW5jdGlvbigpIHsgcmV0dXJuICJiYXIiOyB9KTsKICAgICAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQCBmdW5jdGlvbiBzaG91bGRCZShhLCBiKQog
CiBmdW5jdGlvbiB0ZXN0KCkgCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICBkb21QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7CiAgICAgc2hvdWxkQmUoIkRPTVBhcnNlci5w
cm90b3R5cGUuaXNQcm90b3R5cGVPZihkb21QYXJzZXIpIiwgdHJ1ZSk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9oaWRkZW4taWZyYW1lLW5vLWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vaGlkZGVuLWlmcmFtZS1uby1mb2N1cy5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9oaWRkZW4taWZyYW1lLW5vLWZvY3Vz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAgd2luZG93LmZyYW1lc1swXS5k
b2N1bWVudC5ib2R5Lm9uZm9jdXMgPQogdmFyIGV4cGVjdGVkID0gWydhJywgJ2InXTsKIHZhciBp
ID0gMDsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICBk
b2N1bWVudC5ib2R5LmZvY3VzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9l
c250LWZpcmUtb25zY3JvbGwuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xs
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAKIAogICAgICAgICAgICAgb25s
b2FkID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBkb2N1bWVudC5vbnNjcm9sbD1mdW5jdGlvbigpe2xv
ZygiRkFJTCAtIHNjcm9sbCBldmVudCByZWNlaXZlZCEiKTt9CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxi
YXItaW4tcnRsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKIAogICAgICAg
ICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbCBiYXIgcHJl
c2VudHMgYW5kIHdhcyBpbml0aWFsbHkgYXQgdGhlIHJpZ2h0IGZvciBSVEwgcGFnZS4KICAgICAg
ICAgICAgICAgICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlICIs
IHdpbmRvdy5zY3JvbGxYLCAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250
YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBA
QCBmdW5jdGlvbiBjaGFuZ2VEaXIobmV3X2RpcikgCiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkKIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKICAgICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJU
TCBwYWdlICIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKICAgICB3aW5kb3cuc2Nyb2xsVG8oLTEwMCwg
MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWF0dHJpYnV0ZS10eXBlcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtYXR0cmlidXRlLXR5cGVz
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtYXR0
cmlidXRlLXR5cGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBAIHZhciBwcmU7
CiB2YXIgYmFzZWZvbnQ7CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAg
ICBzaG91bGRCZSgidHlwZW9mIGltZy5ib3JkZXIiLCAiJ3N0cmluZyciKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWNvbnZlcnNpb24tdGhyb3dzLWV4Y2VwdGlv
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9u
LWNvbnZlcnNpb24tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1jb252ZXJzaW9uLXRocm93cy1leGNl
cHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICAgICAnVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgZXhjZXB0aW9uIHRocm93biB3aGlsZSBjb252ZXJ0aW5nIGFuIG9iamVj
dCB0byBzdHJpbmcgJwogICAgICsgJ2FyZSBjb3JyZWN0bHkgcHJvcGFnYXRlZCBhbmQgZG8gbm90
IGNyYXNoIHRoZSBicm93c2VyLicpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgfQogCiAgICAgdmFyIHRocm93aW5nID0geyB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHRocm93
ICdFWENFUFRJT04nOyB9IH07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVj
dGlvbi1kZXRlY3RhYmlsaXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vaHRtbGNvbGxlY3Rpb24tZGV0ZWN0YWJpbGl0eS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1kZXRlY3RhYmlsaXR5Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBAIEhUTUxDb2xsZWN0aW9ucyBzaG91bGQgYmUg
ZGV0ZWN0YWJsZS4KIDwvcD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlv
biBzaG91bGRCZVVuZGV0ZWN0YWJsZShuYW1lKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9odG1sY29sbGVjdGlvbi1ub24taHRtbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLW5vbi1odG1sLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLW5vbi1odG1sLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDggQEAgZnVuY3Rpb24gdGVzdEVsZW1lbnRQcm9wZXJ0
eShlbGVtZW50TmFtZQogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgSFRNTENvbGxlY3Rp
b24gb25seSBwcm9wZXJseSBjb250YWlucyBIVE1MIGVsZW1lbnRzJyk7CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQCBmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwpIHsK
IH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBJY29uQ2hhbmdlcygpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wSWNvbkNoYW5nZXMoKTsKICAgICB9CiAgICAgaWNvblVSTCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImxpbmsiKVswXS5ocmVmOwogICAgIGRlYnVnT3V0cHV0ICgnT3JpZ2luYWwgaWNvblVS
TCBpczogJyArIGljb25VUkwpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaWQtYXR0cmli
dXRlLXdpdGgtbmFtZXNwYWNlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaWQtYXR0cmlidXRlLXdpdGgtbmFtZXNwYWNlLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2lkLWF0dHJpYnV0ZS13aXRoLW5hbWVz
cGFjZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiBnYyA9IHdpbmRvdy5nYyB8fCBmdW5jdGlvbigpCkBAIC0zMyw4ICszMyw4IEBAIGZpbmlzaFRl
c3QgPSBmdW5jdGlvbigpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhciIpOwog
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2lmcmFtZS1jb250ZW50V2luZG93LWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWZyYW1lLWNvbnRlbnRXaW5kb3ct
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaWZy
YW1lLWNvbnRlbnRXaW5kb3ctY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcg
QEAgVGhpcyB0ZXN0cyBIVE1MSUZyYW1lRWxlbWVudC5jb250ZW50V2luZAogCiBJZiB0aGVyZSBp
cyBubyBjcmFzaCB0aGlzIHRlc3QgcGFzc2VzLgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2lmcmFtZScpLmNvbnRlbnRXaW5kb3c7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2lmcmFtZS1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2lmcmFtZS1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9pZnJhbWUtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDggQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICB2YXIgcmVzdWx0OwogICAgIGlmICghZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2ZyYW1lJykuZG9jdW1lbnQpCiAgICAgICAgIHJlc3VsdCA9ICJURVNUIFBB
U1NFRDogVGhlIGZyYW1lIGhhcyBubyBkb2N1bWVudCBwcm9wZXJ0eS4iOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaW1hZ2Utb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vaW1hZ2Utb2JqZWN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2ltYWdlLW9iamVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
NSArMzAsMTUgQEAgZnVuY3Rpb24gaW1hZ2VMb2FkZWQoKSB7CiAgICAgICAgIGRlYnVnKCdTVUND
RVNTIScpCiAgICAgfQogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsgCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsgCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0KIH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICBp
MSA9IG5ldyBJbWFnZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1wbGVtZW50YXRp
b24tY3JlYXRlSFRNTERvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vaW1wbGVtZW50YXRpb24tY3JlYXRlSFRNTERvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ltcGxlbWVudGF0aW9uLWNyZWF0ZUhUTUxE
b2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBAIGZ1bmN0aW9uIHNo
b3VsZEJlKGEsIGIpCiAKIGZ1bmN0aW9uIHRlc3QoKSAKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAgICAgCiAgICAgcHJpbnQoIltkb2N1bWVudCB3aXRoIHRpdGxlICd0aXRs
ZSddIik7CiAgICAgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3Vt
ZW50KCJ0aXRsZSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1wb3J0LWF0dHJpYnV0
ZS1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1wb3J0LWF0
dHJpYnV0ZS1ub2RlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2ltcG9ydC1hdHRyaWJ1dGUtbm9kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU2NTAiPmJ1ZyAxNTY1MDwvYT46CiBYTUwgYXR0cmlidXRlIG5vZGVzIGFyZSBu
b3QgaW1wb3J0YWJsZS48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdHJ5IHsKICAgdmFyIHht
bGQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKCAiPGZvbyB0ZXN0PSdiYXonLz4i
LCAidGV4dC94bWwiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9ydC1kb2N1bWVu
dC1mcmFnbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9y
dC1kb2N1bWVudC1mcmFnbWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9pbXBvcnQtZG9jdW1lbnQtZnJhZ21lbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB0cnkgewogICB2YXIgeG1sZCA9
IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoICI8ZG9jLz4iLCAidGV4dC94bWwiKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9ydE5vZGUtbnVsbC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9ydE5vZGUtbnVsbC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbXBvcnROb2RlLW51bGwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlLCBj
b2xvcikgCiAKIGZ1bmN0aW9uIHRlc3QoKSAKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICAgICAgCiAgICAgdHJ5IHsKICAgICAgICAgZG9jdW1lbnQuaW1wb3J0Tm9kZShudWxs
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9ydE5vZGUtcHJlZml4Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1wb3J0Tm9kZS1wcmVmaXguaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaW1wb3J0Tm9kZS1wcmVm
aXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgZnVuY3Rpb24gZGVidWcoc3Ry
KSB7CiAgICAgcHJlLmFwcGVuZENoaWxkKHR4dCkKIH0KIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKIAogICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LmV4YW1wbGUub3JnJywgJ3Rlc3Q6cCcpCiAgICAgdmFy
IGltcG9ydGVkTm9kZSA9IGRvY3VtZW50LmltcG9ydE5vZGUoZWxlbSwgdHJ1ZSkKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtMDAxLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC0wMDEuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItdGV4dC0wMDEuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNTEsOCArNTEsOCBAQCBUaGlzIDxiPmxpbmU8L2I+IGNvbnRhaW5zIDxpbWcgc3JjPSIu
Li9yCiA8cD48Yj48dT5UaGUgaW5uZXJUZXh0IG9mIHRoZSBhYm92ZTo8L3U+PC9iPjwvcD4KIDxw
cmUgaWQ9ImlubmVydGV4dCI+PC9wcmU+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImlubmVydGV4dCIpLmlubmVyVGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iiku
aW5uZXJUZXh0OyAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXIt
dGV4dC1ydGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lci10
ZXh0LXJ0bC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9p
bm5lci10ZXh0LXJ0bC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQ+
CiA8dGl0bGU+cGxhaW5UZXh0KCkgcmV0dXJuaW5nIHBhcnRpYWwgcmVzdWx0PC90aXRsZT4KIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVyLXRleHQtd2l0
aC1uby1yZW5kZXJlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2lu
bmVyLXRleHQtd2l0aC1uby1yZW5kZXJlci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9pbm5lci10ZXh0LXdpdGgtbm8tcmVuZGVyZXIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICAgICAgcHJlLmFwcGVuZENoaWxkKHR4dCkKICAg
ICB9CiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCkKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCkKIAogICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikKICAgICAgICAgZGl2LmlubmVySFRNTCA9ICImcXVvdDtUZXh0JnF1b3Q7PGJy
Pm5ldyBsaW5lIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItd2lkdGgtaGVpZ2h0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXItd2lkdGgtaGVp
Z2h0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVy
LXdpZHRoLWhlaWdodC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgICAg
ICB9CiAgICAgCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
ICAgIHZhciB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOwogICAgICAgICAgICAgdmFyIGhlaWdo
dCA9IHdpbmRvdy5pbm5lckhlaWdodDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2lubmVy
SFRNTC1kZXRhY2hlZC1lbGVtZW50LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2lubmVySFRNTC1kZXRhY2hlZC1lbGVtZW50LnhodG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lckhUTUwtZGV0YWNoZWQtZWxlbWVudC54aHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5PgogPHByZSBpZD0ibG9nIi8+
CiA8c2NyaXB0PjwhW0NEQVRBWwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLnRleHRDb250ZW50ICs9IChtZXNzYWdlICsgIlxuIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9pbm5lckhUTUwtZXNjYXBpbmctYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5uZXJIVE1MLWVzY2FwaW5nLWF0dHJpYnV0ZS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbm5lckhUTUwtZXNj
YXBpbmctYXR0cmlidXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVh
ZD4KIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2Ny
aXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIGdldENvbnRlbnQoKSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9pbm5lckhUTUwtbmJzcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2lubmVySFRNTC1uYnNwLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2lubmVySFRNTC1uYnNwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OCArMiw4IEBACiA8aGVhZD4KIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIDwvc2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIGdldENvbnRlbnQoKSB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnQtc3Bhbi1pbnRvLWxvbmctdGV4dC1idWct
MjgyNDUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnQtc3Bh
bi1pbnRvLWxvbmctdGV4dC1idWctMjgyNDUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vaW5zZXJ0LXNwYW4taW50by1sb25nLXRleHQtYnVnLTI4MjQ1Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAgd2hpdGUtc3BhY2U6IHByZS13cmFw
Ow0KICAgICB9DQogDQogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7DQotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKQ0KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpDQogDQogICAgICAgICB2YXIgc3RyID0gJ19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXycNCiAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aGlnaGxpZ2h0ZWQnKTsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRBZGphY2Vu
dEhUTUwtRG9jdW1lbnRGcmFnbWVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2luc2VydEFkamFjZW50SFRNTC1Eb2N1bWVudEZyYWdtZW50LWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydEFkamFj
ZW50SFRNTC1Eb2N1bWVudEZyYWdtZW50LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2ggKG9yIEFTU0VS
VCkuCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOwogdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydEJlZm9yZS1yZWZDaGlsZC1jcmFzaC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydEJlZm9yZS1yZWZD
aGlsZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pbnNlcnRCZWZvcmUtcmVmQ2hpbGQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4
ICszLDggQEAKIDxzcGFuIGlkPW5ld0NoaWxkPjwvc3Bhbj4KIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvZ2MuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwogdmFyIG5l
d0NoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ld0NoaWxkJyk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1bWVudC1jaGlsZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LWNoaWxkLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50
b0RvY3VtZW50LWNoaWxkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiB9CiAKIGdjID0gd2luZG93LmdjIHx8IGZ1bmN0aW9uKCkKQEAgLTQ5LDggKzQ5LDggQEAgZmlu
aXNoVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBmb3JtLmlkID0gImZvcm0iOwogICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZm9ybSk7CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2lu
c2VydGVkSW50b0RvY3VtZW50LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1bWVudC1pZnJhbWUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZ2MgPSB3aW5k
b3cuZ2MgfHwgZnVuY3Rpb24oKQpAQCAtMzUsOCArMzUsOCBAQCBmaW5pc2hUZXN0ID0gZnVuY3Rp
b24oKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50Iik7CiAgICAgCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1bWVudC1z
aWJsaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2lu
c2VydGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsx
LDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogZ2MgPSB3aW5kb3cuZ2MgfHwgZnVuY3Rpb24oKQpAQCAtNDUsOCAr
NDUsOCBAQCBmaW5pc2hUZXN0ID0gZnVuY3Rpb24oKQogewogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmb28iKTsKICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vamF2YXNjcmlwdC1i
YWNrc2xhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9qYXZhc2Ny
aXB0LWJhY2tzbGFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9qYXZhc2NyaXB0LWJhY2tzbGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzks
OCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgbG9nKCJqYXZhc2Ny
aXB0OiBmdW5jdGlvbiBhcmd1bWVudCBjb250YWluaW5nIGEgYmFja3NsYXNoIChcXCkgc2hvdWxk
IG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBzbGFzaCAoLyk6IFwiIiArIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCIxIikucGF0aG5hbWUgKyAiXCIiKTsKICAgICAgICAgICAgICAgICBsb2coImh0dHA6
IGJhc2Ugc2hvdWxkIGNvbnZlcnQgYSBcXCB0byBhIC8gOiBcIiIgKyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiMiIpLmhyZWYgKyAiXCIiKTsKICAgICAgICAgICAgICAgICBsb2coImh0dHBzOiBi
YXNlIHNob3VsZCBhbHNvIGNvbnZlcnQgYSBcXCB0byBhIC8gOiBcIiIgKyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiMyIpLmhyZWYgKyAiXCIiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2phdmFzY3JpcHQtdXJsLWNyYXNoLWZ1bmN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vamF2YXNjcmlwdC11cmwtY3Jhc2gtZnVuY3Rpb24uaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vamF2YXNjcmlwdC11cmwtY3Jhc2gt
ZnVuY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAgaWZyYW1lIGlzIGNh
bGxpbmcgYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIAogPGlmcmFtZSBzcmM9InJlc291cmNlcy9qYXZh
c2NyaXB0LXVybC1jcmFzaC1mdW5jdGlvbi1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+CiAKIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2pzRGV2aWNlUGl4ZWxSYXRpby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2pzRGV2aWNlUGl4ZWxSYXRpby5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9qc0RldmljZVBpeGVsUmF0aW8uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMiw4ICsyLDggQEAKIDxib2R5PgogCiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIGRvY3VtZW50LndyaXRlKCJUaGUgdXNlciBpbnRlcmZhY2Ugc2NhbGUgZmFj
dG9yIGlzICIgKyBkZXZpY2VQaXhlbFJhdGlvICsgIi4iKTsKIDwvc2NyaXB0PgogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRy
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICAgICAKICAgICAgICAgICAg
IG9ubG9hZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIp
OwogICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOwogICAgICAg
ICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygtMSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9sZWdlbmQtZGlzcGxheS1pbmxpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9sZWdlbmQtZGlzcGxheS1pbmxpbmUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbGVnZW5kLWRpc3BsYXktaW5saW5lLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8ZmllbGRzZXQ+PGxlZ2VuZCBzdHlsZT0iZGlzcGxh
eTogaW5saW5lIj5mb288L2xlZ2VuZD48L2ZpZWxkc2V0PgogPHA+QnVnIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1MyI+MjM3NTM8L2E+OiBBc3Nl
cnRpb24gZmFpbHVyZSBpbiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKCkgd2hlbiBhIGxl
Z2VuZCBoYXMgZGlzcGxheTogaW5saW5lPC9wPgogPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBpdCBk
aWQgbm90IGNyYXNoPC9wPiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sZW5ndGgtYXR0cmlidXRlLW1h
cHBpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sZW5ndGgtYXR0
cmlidXRlLW1hcHBpbmcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vbGVuZ3RoLWF0dHJpYnV0ZS1tYXBwaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OCArNSw4IEBACiA8aW1nIGlkPSJpbWciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiA8dGFibGU+
PGNvbCBpZD0iY29sIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwvdGFibGU+CiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tYXNzaWduLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tYXNzaWduLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWFzc2lnbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDggKzc3LDggQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBwcmludCgiRkFJTFVSRTogb25lIG9yIG1vcmUgdGVzdHMgZmFpbGVkIiwgInJlZCIpOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTkxLDEwICs5MSwxMCBAQAogICAgIH0KICAgICAgICAgCiAgICAgZnVu
Y3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRM
aXN0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgc3RhdGUgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbWVzc2Fn
ZS1wb3J0LWRlbGV0ZWQtYnktYWNjZXNzb3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9tZXNzYWdlLXBvcnQtZGVsZXRlZC1ieS1hY2Nlc3Nvci5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9tZXNzYWdlLXBvcnQtZGVsZXRlZC1i
eS1hY2Nlc3Nvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL21vdmUtZGV0YWNoZWQtY2hpbGQtaW4t
cmFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9tb3ZlLWRldGFj
aGVkLWNoaWxkLWluLXJhbmdlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL21vdmUtZGV0YWNoZWQtY2hpbGQtaW4tcmFuZ2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9n
Yy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIAogZnVuY3Rpb24gZ28oKSB7CkBAIC0yMSw4ICsyMSw4IEBAIGZ1bmN0aW9uIGdv
KCkgewogICBkZWxldGUgbm9kZTI7CiAgIGdjKCk7CiAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0
ID0gJ0ZpbmFsIGVuZCBjb250YWluZXIsIG9mZnNldDogJyArIHJhbmdlLmVuZENvbnRhaW5lciAr
ICcsICcgKyByYW5nZS5lbmRPZmZzZXQ7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCisgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKQogfQogPC9zY3JpcHQ+CiA8
L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9tb3ZlLW5vZGVzLWFjcm9zcy1kb2N1
bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9tb3ZlLW5vZGVz
LWFjcm9zcy1kb2N1bWVudHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbW92ZS1ub2Rlcy1hY3Jvc3MtZG9jdW1lbnRzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMSw3IEBACiA8IURvY1R5cGUgSFRNTD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogdmFyIGlmcmFtZSwgaWZyYW1lRG9jOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9t
dWx0aXBsZS1pZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9tdWx0
aXBsZS1pZHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
bXVsdGlwbGUtaWRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aGVhZD4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gZG9UZXN0KCkgewogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1ldmVudC1yZW1vdmUtaW5zZXJ0ZWQtbm9kZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL211dGF0aW9uLWV2ZW50LXJl
bW92ZS1pbnNlcnRlZC1ub2RlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL211dGF0aW9uLWV2ZW50LXJlbW92ZS1pbnNlcnRlZC1ub2RlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTcsOCArNyw4IEBAIGRvY3VtZW50IGRvZXNuJ3QgY3Jhc2ggdXBvbiB0aGUg
aW5zZXJ0aW8KIDxzY3JpcHQgaWQ9ImR1bW15Ij48L3NjcmlwdD4KIAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiBmdW5jdGlvbiBtdXRhdGlvbkxpc3RlbmVyKGV2ZW50KQogewpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vbmFtZWRub2RlbWFwLW5hbWVsb29rdXAuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYW1lZG5vZGVtYXAtbmFtZWxvb2t1cC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYW1lZG5vZGVtYXAtbmFt
ZWxvb2t1cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGRpdiBpZD0iZGl2
IiBuYW1lPSJkaXZuYW1lIiBpdGVtPSJjYW5vdmVyaWRlIj48L2Rpdj4KIDxwcmU+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCWxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogfQogdmFyIGhhZEVycm9yID0gZmFsc2U7CiB2YXIgbXlEaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9u
YW1lc3BhY2VzLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYW1l
c3BhY2VzLTEuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
bmFtZXNwYWNlcy0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBmdW5jdGlvbiBleGVjdXRlKCkKIHsKLSAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgIH0KIAogICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdGlvbi10eXBlLWJhY2stZm9yd2FyZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRpb24tdHlwZS1iYWNr
LWZvcndhcmQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
bmF2aWdhdGlvbi10eXBlLWJhY2stZm9yd2FyZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgg
KzEsOCBAQAogPHNjcmlwdD4KICAgICB2YXIgQkFDS19GT1JXQVJEID0gMjsKIAotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5x
dWV1ZUxvYWQoInJlc291cmNlcy9uYXZpZ2F0aW9uLXR5cGUtbWF0Y2hlcy1xdWVyeXN0cmluZy5o
dG1sPyIgKyBCQUNLX0ZPUldBUkQpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9h
ZCgiYWJvdXQ6YmxhbmsiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZp
Z2F0aW9uKDEpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
cXVldWVMb2FkKCJyZXNvdXJjZXMvbmF2aWdhdGlvbi10eXBlLW1hdGNoZXMtcXVlcnlzdHJpbmcu
aHRtbD8iICsgQkFDS19GT1JXQVJEKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgiYWJvdXQ6
YmxhbmsiKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRpb24tdHlwZS1uYXZpZ2F0ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRpb24tdHlwZS1u
YXZpZ2F0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9u
YXZpZ2F0aW9uLXR5cGUtbmF2aWdhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIDxzY3JpcHQ+CiAgICAgdmFyIE5BVklHQVRFID0gMDsKIAotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQo
InJlc291cmNlcy9uYXZpZ2F0aW9uLXR5cGUtbWF0Y2hlcy1xdWVyeXN0cmluZy5odG1sPyIgKyBO
QVZJR0FURSk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5x
dWV1ZUxvYWQoInJlc291cmNlcy9uYXZpZ2F0aW9uLXR5cGUtbWF0Y2hlcy1xdWVyeXN0cmluZy5o
dG1sPyIgKyBOQVZJR0FURSk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L25hdmlnYXRpb24tdHlwZS1yZWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9uYXZpZ2F0aW9uLXR5cGUtcmVsb2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRpb24tdHlwZS1yZWxvYWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQ+CiAgICAgdmFyIFJFTE9BRCA9IDE7CiAK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvbmF2aWdhdGlvbi10eXBlLW1hdGNoZXMtcXVl
cnlzdHJpbmcuaHRtbD8iICsgUkVMT0FEKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1
ZVJlbG9hZCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
cXVldWVMb2FkKCJyZXNvdXJjZXMvbmF2aWdhdGlvbi10eXBlLW1hdGNoZXMtcXVlcnlzdHJpbmcu
aHRtbD8iICsgUkVMT0FEKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1jb29raWVFbmFibGVkLW5v
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9y
LWNvb2tpZUVuYWJsZWQtbm8tY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWNvb2tpZUVuYWJsZWQtbm8tY3Jhc2guaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1bl90ZXN0KCkgewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAK
IGZ1bmN0aW9uIGxvZyhzdHJpbmdzKSB7CkBAIC00NSw4ICs0NSw4IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAKIGZ1bmN0aW9uIGNoZWNrX25hdmlnYXRvcl9hbmRfZG9uZSgpIHsKICAgY2hlY2tfbmF2
aWdhdG9yKCk7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGNoZWNrX25hdmlnYXRv
cigpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci11c2VyQWdlbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdXNlckFnZW50
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRv
ci11c2VyQWdlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwPlRlc3Rz
IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3
NTMiPmJ1ZyA0Nzc1MzwvYT46IA0KIFJFR1JFU1NJT04ocjY5ODUwKSBMb2FkaW5nIGFwcGxlLmNv
bS9zdGFydHBhZ2UgaW4gV2ViS2l0IG9uIFdpbmRvd3MgZ2V0cyBhIGJhZCByZXF1ZXN0LjwvcD4N
CiA8c2NyaXB0Pg0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpDQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiANCiAgICAgdmFy
IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7DQogDQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbmF2aWdhdG9yLXZlbmRvclN1Yi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL25hdmlnYXRvci12ZW5kb3JTdWIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZlbmRvclN1Yi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+VGVzdHMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTEwIj5idWcgODExMDwvYT46IAogRGVmaW5l
IG5hdmlnYXRvci52ZW5kb3JTdWIgKGJjbXMuZ292LnVrIGRvZXNuJ3QgYWxsb3cgYWNjZXNzIHRv
IGxvZ2luIHBhZ2UpLjwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKICAgICBkb2N1bWVudC53cml0ZSgibmF2aWdhdG9yLnZlbmRvclN1YjogJyIgKyBuYXZpZ2F0
b3IudmVuZG9yU3ViICsgIicgKHNob3VsZCBub3QgYmUgdW5kZWZpbmVkIG9yIG51bGwpIik7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25lc3RlZC1zY3JpcHQtZXhjZXB0
aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25lc3RlZC1zY3Jp
cHQtZXhjZXB0aW9ucy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9uZXN0ZWQtc2NyaXB0LWV4Y2VwdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4
ICsxLDggQEAKIDwhRE9DVFlQRSBodG1sPgogPHRpdGxlPkV4Y2VwdGlvbnMgaW4gbmVzdGVkIHNj
cmlwdHM8L3RpdGxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UaGlz
IHRlc3QgY2hlY2tzIHRoYXQgZXhjZXB0aW9ucyBpbiBuZXN0ZWQgc2NyaXB0cyBhcmUgbG9nZ2Vk
CiBwcm9wZXJseS4gQW4gZXhjZXB0aW9uIG5hbWVkICJCYWRuZXNzIDEwLDAwMCIgc2hvdWxkIGJl
IGxvZ2dlZCBwcm9wZXJseS48L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uby1lbGVt
ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25vLWVsZW1lbnRz
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25vLWVsZW1l
bnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAgZnVuY3Rpb24gcHJpbnRO
dW1DaGlsZHJlbihpZCkKICAgICB9CiB9CiBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBwcmludE51bUNoaWxkcmVuKCdub2ZyYW1lcycpOwog
ICAgIHByaW50TnVtQ2hpbGRyZW4oJ25vc2NyaXB0Jyk7CiAgICAgcHJpbnROdW1DaGlsZHJlbign
bm9lbWJlZCcpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZS1maWx0ZXItZGV0YWNo
ZWQtaWZyYW1lLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZS1maWx0ZXItZGV0YWNoZWQtaWZyYW1lLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGUtZmlsdGVyLWRldGFjaGVkLWlmcmFtZS1jcmFz
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgIH0KIAogICAgIHZhciBkdW1teUZpbHRlckNhbGxlZCA9IGZhbHNlOwpAQCAtMjYsOCAr
MjYsOCBAQAogICAgICAgICBzaG91bGRCZVRydWUoImR1bW15RmlsdGVyQ2FsbGVkIik7CiAgICAg
ICAgIHNob3VsZEJlKCJmb3VuZE5vZGUudG9TdHJpbmcoKSIsICJcIltvYmplY3QgSFRNTEh0bWxF
bGVtZW50XVwiIik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ub2RlLWZpbHRlci1nYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L25vZGUtZmlsdGVyLWdjLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGUtZmlsdGVyLWdjLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiA8aHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAKIHZhciBpdGVyYXRvciA9IGRv
Y3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihkb2N1bWVudCwgTm9kZUZpbHRlci5TSE9XX0VMRU1F
TlQsIDAsIGZhbHNlKTsKIHZhciB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRv
Y3VtZW50LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgMCwgZmFsc2UpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm9kZS1pdGVtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbm9kZS1pdGVtLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL25vZGUtaXRlbS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQCBN
ZW51IGl0ZW1zIGFyZSBkaXNwbGF5ZWQgYXMgInVuZGVmaW5lZCIuCiA8cD5Ob2RlLml0ZW0oKSBz
aG91bGQgbm90IGV4aXN0LjwvcD4KIDxkaXYgaWQ9cmVzdWx0PiZuYnNwOzwvZGl2PgogPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGRpdkVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICAgdGV4dE5vZGUgPSBkaXZFbGVtZW50
LmZpcnN0Q2hpbGQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlLWl0ZXJhdG9yLWRv
Y3VtZW50LW1vdmVkLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZS1pdGVyYXRvci1kb2N1bWVudC1tb3ZlZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlLWl0ZXJhdG9yLWRvY3VtZW50LW1vdmVk
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4NCiAgICAg
PGhlYWQ+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
DQogICAgICAgICAgICAgZnVuY3Rpb24gZ2MoKQ0KQEAgLTI5LDggKzI5LDggQEAKICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdkVsZW1lbnQpOw0KICAgICAgICAg
ICAgICAgICBnYygpOw0KICAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQ0KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
DQogICAgICAgICAgICAgfQ0KICAgICAgICAgPC9zY3JpcHQ+DQogICAgIDwvaGVhZD4NCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlLWl0ZXJhdG9yLXJlZmVyZW5jZS1ub2RlLW1vdmVk
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZS1pdGVy
YXRvci1yZWZlcmVuY2Utbm9kZS1tb3ZlZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlLWl0ZXJhdG9yLXJlZmVyZW5jZS1ub2RlLW1vdmVk
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4NCiAgICAg
PGhlYWQ+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
DQogICAgICAgICAgICAgZnVuY3Rpb24gZ2MoKQ0KQEAgLTM3LDggKzM3LDggQEAKICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7DQogICAgICAgICAgICAgICAg
IGdjKCk7DQogICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpDQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAgICAg
ICAgICAgICB9DQogICAgICAgICA8L3NjcmlwdD4NCiAgICAgPC9oZWFkPg0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGUtbW92ZS10by1uZXctZG9jdW1lbnQtY3Jhc2gtbWFpbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGUtbW92ZS10by1uZXctZG9j
dW1lbnQtY3Jhc2gtbWFpbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ub2RlLW1vdmUtdG8tbmV3LWRvY3VtZW50LWNyYXNoLW1haW4uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBtb3Zpbmcgbm9kZXMgYWNyb3NzIGRvY3VtZW50cyBkb2VzIG5vdCBjcmFzaC4iKTsKIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgp
CkBAIC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIGZpbmlzaCgpCiB7CiAgICAgZ2MoKTsKICAgICBk
b2N1bWVudC5hZG9wdE5vZGUodGVzdCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiA8L3NjcmlwdD4KIDxvYmplY3QgZGF0YT0icmVzb3VyY2VzL25vZGUtbW92ZS10by1uZXctZG9j
dW1lbnQtY3Jhc2guc3ZnIiBpZD0icm9vdCIgb25sb2FkPSJydW5UZXN0KCkiLz48L29iamVjdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qt
YmFzaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAKICAgPHNjcmlwdCB0eXBl
PSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB7
Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICAgIH0KIAogICAgICAgdmFyIGUgPSB7fTsKQEAgLTc3LDggKzc3LDggQEAK
ICAgICAgIGNoZWNrKDM5LCAyMTIsIDAsIDEwLCAwLCAxMCwgW2UucDUsIGUuYm9keV0pOwogICAg
ICAgY2hlY2soMzksIDIxMiwgMTAsIDEwLCAxMCwgMTAsIFtlLnA1LCBlLmQyLCBlLnAyLCBlLmJv
ZHldKTsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB3
aW5kb3cub25sb2FkID0gcnVuVGVzdDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3QtY3VsbGVkLWlubGluZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWN1bGxlZC1pbmxpbmVzLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtY3VsbGVkLWlubGluZXMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAKICAgPHNjcmlwdCB0eXBlPSJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Ij4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB7Ci0gICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgIH0KIAogICAgICAgdmFyIGUgPSB7fTsKQEAgLTM3LDggKzM3LDggQEAKICAgICAg
IC8qIFJlY3QgYmFzZWQgdGVzdCBvdmVyIHRoZSBlbnRpcmUgaW1nLiAqLwogICAgICAgY2hlY2so
MCwgMCwgMCwgOTksIDk5LCAwLCBbZS5pbWddKTsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICB9CiAKICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtaW5uZXItZG9jdW1lbnRzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1pbm5lci1kb2N1
bWVudHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9k
ZXNGcm9tUmVjdC1pbm5lci1kb2N1bWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3
LDkgQEAKICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KICAgICBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICB7Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgIH0KIAogICAgICAgdmFyIGUgPSB7
fTsKQEAgLTQ0LDggKzQ0LDggQEAKICAgICAgIGNoZWNrKGRpdkNlbnRlci54LCBkaXZDZW50ZXIu
eSwgMCwgMCwgZGl2Qm90dG9tLnkgLSBkaXZDZW50ZXIueSwgMCwgW2RpdiwgYm9keV0sIGlubmVy
RG9jdW1lbnQpOwogICAgICAgY2hlY2soZGl2Q2VudGVyLngsIGRpdkNlbnRlci55LCAwLCAwLCBw
Q2VudGVyLnkgLSBkaXZDZW50ZXIueSwgMCwgW3AsIGRpdiwgYm9keV0sIGlubmVyRG9jdW1lbnQp
OwogCi0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIHdpbmRv
dy5vbmxvYWQgPSBydW5UZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC1saW5rcy1hbmQtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QtbGlua3MtYW5kLXRleHQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1saW5rcy1hbmQtdGV4dC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsOSBAQAogICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiPgogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHsKLSAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgICAgfQogCiAgICAgICB2YXIgZSA9IHt9OwpAQCAtMzgsOCArMzgsOCBAQAogICAgICAgY2hl
Y2soY2VudGVyQTEueCwgY2VudGVyQTEueSwgMCwgY2VudGVyQTIueCAtIGNlbnRlckExLngsIDAs
IDAsIFtlLmEyLmZpcnN0Q2hpbGQsIGUuYTIsIGUucDEuY2hpbGROb2Rlc1syXSwgZS5hMS5maXJz
dENoaWxkLCBlLmExLCBlLnAxXSk7CiAgICAgICBjaGVjayhjZW50ZXJBMS54LCBjZW50ZXJBMS55
LCAwLCBjZW50ZXJBMi54IC0gY2VudGVyQTEueCwgY2VudGVyQTMueSAtIGNlbnRlckExLnksIDAs
IFtlLmEzLmZpcnN0Q2hpbGQsIGUuYTMsIGUucDEsIGUuYTIuZmlyc3RDaGlsZCwgZS5hMiwgZS5w
MS5jaGlsZE5vZGVzWzJdLCBlLmExLmZpcnN0Q2hpbGQsIGUuYTFdKTsKIAotICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVz
dDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25vbi1zdHlsZWQtZWxlbWVudC1pZC1jcmFz
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25vbi1zdHlsZWQtZWxl
bWVudC1pZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ub24tc3R5bGVkLWVsZW1lbnQtaWQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogZ2MgPSB3aW5kb3cuZ2MgfHwgZnVuY3Rpb24oKQpAQCAt
MzIsOCArMzIsOCBAQCBmaW5pc2hUZXN0ID0gZnVuY3Rpb24oKQogewogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJiYXIiKTsKICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIDwvc2NyaXB0PgogPGJvZHk+UEFTUzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vc2NyaXB0LWNhbnZhcy1pbi1jcmVhdGVkLWh0bWwtZG9jdW1lbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ub3NjcmlwdC1jYW52YXMtaW4tY3JlYXRlZC1o
dG1sLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vc2NyaXB0LWNhbnZhcy1pbi1jcmVhdGVkLWh0bWwtZG9jdW1lbnQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHZh
ciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpOwog
ICAgICAgICAgICAgZG9jLm9wZW4oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL25vc2Ny
aXB0LXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9zY3Jp
cHQtc3R5bGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9zY3JpcHQtc3R5bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxoZWFk
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiBub3NjcmlwdCB7
IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDBweDsgaGVpZ2h0OjEw
MHB4IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL251bGwtY2hhcmRhdGEtY3Jhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9udWxsLWNoYXJkYXRhLWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL251bGwtY2hh
cmRhdGEtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5Pgog
ICA8cD5UbyBwYXNzLCB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaDwvcD4KICAgPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgbyA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCk7CiAgICAgdHJ5IHsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL251bGwtZG9jdW1lbnQtbG9jYXRpb24tYXNzaWduLWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVsbC1kb2N1bWVudC1sb2NhdGlvbi1hc3NpZ24t
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVs
bC1kb2N1bWVudC1sb2NhdGlvbi1hc3NpZ24tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTksMTUgKzE5LDE1IEBAIGZ1bmN0aW9uIHBhc3MoKQogewogICAgIGxvZygiUEFTUzogWW91IGRp
ZG4ndCBjcmFzaC4iKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5j
dGlvbiBtYWluKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAgICAgfSAgICAKICAgICAKICAgICAvLyBzZXRUaW1lb3V0IGZv
cmNlcyBleGVjdXRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGZyYW1lCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9udWxsLWRvY3VtZW50LWxvY2F0aW9uLWhyZWYtcHV0LWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVsbC1kb2N1bWVudC1sb2NhdGlv
bi1ocmVmLXB1dC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9udWxsLWRvY3VtZW50LWxvY2F0aW9uLWhyZWYtcHV0LWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDE1ICsxOSwxNSBAQCBmdW5jdGlvbiBwYXNzKCkKIHsKICAgICBsb2co
IlBBU1M6IFlvdSBkaWRuJ3QgY3Jhc2guIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0KIAogZnVuY3Rpb24gbWFpbigpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0gICAgCiAgICAgCiAgICAgLy8g
c2V0VGltZW91dCBmb3JjZXMgZXhlY3V0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSBmcmFtZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVsbC1kb2N1bWVudC1sb2NhdGlvbi1wdXQtY3Jh
c2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9udWxsLWRvY3VtZW50
LWxvY2F0aW9uLXB1dC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9udWxsLWRvY3VtZW50LWxvY2F0aW9uLXB1dC1jcmFzaC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSwxNSArMTksMTUgQEAgZnVuY3Rpb24gcGFzcygpCiB7CiAgICAgbG9nKCJQ
QVNTOiBZb3UgZGlkbid0IGNyYXNoLiIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIG1haW4oKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9ICAgIAogICAgIAogICAgIC8vIHNl
dFRpbWVvdXQgZm9yY2VzIGV4ZWN1dGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgZnJhbWUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL251bGwtZG9jdW1lbnQtbG9jYXRpb24tcmVwbGFjZS1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL251bGwtZG9jdW1l
bnQtbG9jYXRpb24tcmVwbGFjZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9udWxsLWRvY3VtZW50LWxvY2F0aW9uLXJlcGxhY2UtY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTksMTUgKzE5LDE1IEBAIGZ1bmN0aW9uIHBhc3MoKQogewog
ICAgIGxvZygiUEFTUzogWW91IGRpZG4ndCBjcmFzaC4iKTsKIAotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBtYWluKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfSAgICAKICAgICAK
ICAgICAvLyBzZXRUaW1lb3V0IGZvcmNlcyBleGVjdXRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhl
IGZyYW1lCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9udWxsLWRvY3VtZW50LXdpbmRvdy1v
cGVuLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVsbC1k
b2N1bWVudC13aW5kb3ctb3Blbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9udWxsLWRvY3VtZW50LXdpbmRvdy1vcGVuLWNyYXNoLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDE1ICsxOSwxNSBAQCBmdW5jdGlvbiBwYXNzKCkKIHsKICAgICBs
b2coIlBBU1M6IFlvdSBkaWRuJ3QgY3Jhc2guIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogZnVuY3Rpb24gbWFpbigpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0gICAgCiAgICAgCiAgICAg
Ly8gc2V0VGltZW91dCBmb3JjZXMgZXhlY3V0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSBmcmFt
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVsbC1wYWdlLXNob3ctbW9kYWwtZGlhbG9n
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbnVsbC1wYWdl
LXNob3ctbW9kYWwtZGlhbG9nLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL251bGwtcGFnZS1zaG93LW1vZGFsLWRpYWxvZy1jcmFzaC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQCBUaGlzIHRlc3RzIGNhbGxpbmcgdGhlIHNob3dN
b2RhbERpYWxvZygpCiAKIElmIHRoZXJlIGlzIG5vIGNyYXNoIHRoaXMgdGVzdCBwYXNzZXMuCiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9vYmpjLWJpZy1tZXRob2QtbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL29iamMtYmlnLW1ldGhvZC1uYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL29iamMtYmlnLW1ldGhvZC1uYW1lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBAIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpIHsKIH0K
IAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgfQogCiAgICAgdmFyIG1ldGhvZCA9ICJjb25zb2xlLiI7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9vYmplY3QtcGx1Z2luLWhpZGVzLXByb3BlcnRpZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9vYmplY3QtcGx1Z2luLWhpZGVzLXByb3BlcnRpZXMuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vb2JqZWN0LXBsdWdp
bi1oaWRlcy1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnb2JqJykuY2hpbGRyZW4gPT0gdW5kZWZpbmVkID8gIkZBSUxFRCIgOiAiUEFT
U0VEIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0g
cmVzdWx0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vb2Zmc2V0LXBhcmVudC1wb3NpdGlv
bmVkLWFuZC1pbmxpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9v
ZmZzZXQtcGFyZW50LXBvc2l0aW9uZWQtYW5kLWlubGluZS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9vZmZzZXQtcGFyZW50LXBvc2l0aW9uZWQtYW5kLWlu
bGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgIDxzcGFuIGlkPSJy
ZXN1bHQiPkZBSUwhIFRoaXMgdGVzdCBoYXMgZmFpbGVkIGJlY2F1c2UgdGhlIG9mZnNldFBhcmVu
dCBvZiB0aGUgYW5jaG9yIGlzIGNvbWluZyBiYWNrIGFzIG51bGwgOi0oPC9zcGFuPgogCiAgICAg
PHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgICAgIHZhciBhbmNob3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYW5jaG9yIik7CiAg
ICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAg
ICAgICAgIGlmIChhbmNob3Iub2Zmc2V0UGFyZW50KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vb25lcnJvci1pbWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9v
bmVycm9yLWltZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9vbmVycm9yLWltZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxNSArMTMsMTUgQEAgZnVu
Y3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpIAogCiBmdW5jdGlvbiB0ZXN0KCkgCiB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7IAorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOyAKICAg
ICB9CiAgICAgdmFyIGltZzEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nMScpOwogICAg
IGltZzEub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICBwcmludCgiUEFTUzog
Y2F1Z2h0IGltYWdlIGxvYWQgZXJyb3I6ICIgKyBlcnJvciwgImdyZWVuIik7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgIH07
CiAgICAgaW1nMS5zcmMgPSAiaW52YWxpZGludmFsaWQuanBnIjsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL29ubG9hZC1vcGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vb25sb2FkLW9wZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vb25sb2FkLW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAK
IDxIRUFEPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkgewpAQCAtMTIsOCArMTIsOCBAQCBmdW5jdGlvbiBz
dGFydFRlc3QoKSB7CiAgICAgZG9jdW1lbnQud3JpdGUoIjxwPlRlc3QgZm9yIDxhIGhyZWY9J2h0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNyc+YnVnIDE1NzA3PC9h
PjogQ3Jhc2ggd2hlbiBtYW5pcHVsYXRpbmcgZG9jdW1lbnQgZnJvbSB3aXRoaW4gYW4gaWZyYW1l
IG9ubG9hZCBmdW5jdGlvbi48L3A+PHA+U1VDQ0VTUyBpZiBubyBjcmFzaC48L3A+Iik7CiAgICAg
ZG9jdW1lbnQuY2xvc2UoKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIs
IDApOyAvLyBXYWl0IHVudGlsIHN0YWNrIHVud2luZHMuCisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICBzZXRUaW1lb3V0KCJ0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSIsIDApOyAv
LyBXYWl0IHVudGlsIHN0YWNrIHVud2luZHMuCiB9CiA8L3NjcmlwdD4KIDwvSEVBRD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL29wZW4tYW5kLWNsb3NlLWJ5LURPTS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL29wZW4tYW5kLWNsb3NlLWJ5LURPTS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9vcGVuLWFuZC1jbG9zZS1i
eS1ET00uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxOCArMiwxOCBAQAogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2Fu
T3BlbldpbmRvd3MoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgdmFyIHN0YXJ0OwogICAgIHZhciBteUludGVydmFsOwogCi0gICAgLy9UaGlzIGZ1
bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBEUlQgYW5kIHRodXMgbGF5b3V0VGVzdENv
bnRyb2xsZXIKKyAgICAvL1RoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIERS
VCBhbmQgdGh1cyB0ZXN0UnVubmVyCiAgICAgZnVuY3Rpb24gY2hlY2tJZkRvbmUoKSB7Ci0gICAg
ICAgIHZhciBudW1PcGVuV2luZG93cyA9IGxheW91dFRlc3RDb250cm9sbGVyLndpbmRvd0NvdW50
KCk7CisgICAgICAgIHZhciBudW1PcGVuV2luZG93cyA9IHRlc3RSdW5uZXIud2luZG93Q291bnQo
KTsKICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgICAgIGlmIChudW1PcGVuV2lu
ZG93cyA9PSAxKSB7CiAgICAgICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoc3Bhbik7CiAKICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwobXlJbnRlcnZhbCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7ICAgICAgICAgICAgCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIGlmIChub3cgLSBzdGFydCA+IDEw
MDAwKSB7CiAgICAgICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKICAgICAgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gJ1RFU1QgRkFJTEVEIDxicj4gTnVt
YmVyIG9mIG9wZW4gd2luZG93czogJyArIG51bU9wZW5XaW5kb3dzICsgJzxici8+JzsKQEAgLTI5
LDcgKzI5LDcgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuYXBwZW5kQ2hpbGQoc3Bhbik7CiAKICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlJbnRl
cnZhbCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMzgsOCArMzgsOCBAQAogICAgICAgICBldmVudC5pbml0RXZlbnQoICdjbGljaycsIHRydWUs
IHRydWUgKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FuY2hvckxpbmsnKS5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5D
b21wbGV0ZSgpOwogCiAgICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAg
ICBteUludGVydmFsID0gc2V0SW50ZXJ2YWwoY2hlY2tJZkRvbmUsIDUwMCk7ICAgICAgICAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL29wdGlvbi1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vb3B0aW9uLXByb3BlcnRpZXMuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vb3B0aW9uLXByb3BlcnRpZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBzaG91bGRCZShhLCBi
KQogCiBmdW5jdGlvbiB0ZXN0KCkgCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgICAgIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWwnKS5vcHRpb25zWzFdLnNl
bGVjdGVkID0gdHJ1ZTsKICAgICBzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nl
bCcpLm9wdGlvbnMuc2VsZWN0ZWRJbmRleCIsIDEpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vb3B0aW9uLXRleHQtbXV0YXRpb24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9vcHRpb24tdGV4dC1tdXRhdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9vcHRpb24tdGV4dC1tdXRhdGlvbi1jcmFz
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDExICsyLDExIEBACiA8aHRtbD4NCiA8c2NyaXB0
Pg0KIHZhciBjb3VudCA9IDA7DQotaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQor
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikNCiAgICAgZG9jdW1lbnQud3JpdGUoIlRoaXMgdGVzdCBy
ZXF1aXJlcyBHQ0NvbnRyb2xsZXIuIik7DQogZWxzZSB7DQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsNCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOw0KKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7DQogDQogICAgIGZ1bmN0aW9uIGNyYXNoKCkgew0KICAgICAgICAgaWYgKCsr
Y291bnQgPiAxKQ0KQEAgLTE1LDcgKzE1LDcgQEAgZWxzZSB7DQogICAgICAgICBkb2N1bWVudC53
cml0ZSgnUEFTUycpOw0KICAgICAgICAgZG9jdW1lbnQuY2xvc2UoKTsNCiAgICAgICAgIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7DQotICAgICAgICBzZXRUaW1lb3V0KCJsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCkiLCAwKTsNCisgICAgICAgIHNldFRpbWVvdXQoInRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpIiwgMCk7DQogICAgIH0NCiANCiAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vb3V0ZXJUZXh0LW5vLWVsZW1lbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9vdXRlclRleHQtbm8tZWxlbWVu
dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9vdXRlclRl
eHQtbm8tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQCBZb3Ugc2hv
dWxkIHNlZSBhIGRlc2NyaXB0aW9uIG9mIGFuIGV4cGVjCiA8ZGl2IGlkPSJkaXYiPnRoaXMgaXMg
YSA8aSBpZD0idGVzdCI+dGVzdDwvaT4gb3Igc29tZXRoaW5nPC9kaXY+CiAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsK
IHRlc3Qub3V0ZXJUZXh0ID0gImJpZyB0ZXN0IjsKIHRyeSB7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9wbHVnaW4tYXR0cmlidXRlcy1lbnVtZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3BsdWdpbi1hdHRyaWJ1dGVzLWVudW1lcmF0aW9uLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3BsdWdpbi1hdHRyaWJ1
dGVzLWVudW1lcmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAgZnVu
Y3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpIAogCiBmdW5jdGlvbiB0ZXN0KCkgCiB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIEFycmF5LnByb3RvdHlwZS5m
b3JFYWNoID0gZnVuY3Rpb24oZikgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
bGVuZ3RoOyBpKyspIC8vID4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ByZWZpeGVkLWlt
YWdlLXRhZy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcmVmaXhl
ZC1pbWFnZS10YWcueGh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3ByZWZpeGVkLWltYWdlLXRhZy54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMs
OCBAQAogICAgICAgICBmdW5jdGlvbiB0ZXN0UHJlZml4KCkKICAgICAgICAgewogICAgICAgICAg
ICAgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpLnByZWZpeCA9
PSAiZm9vIikKICAgICAgICAgICAgICAgICBkZWJ1ZygiUEFTU0VEOiBwcmVmaXggd2FzIGtlcHQi
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtY2hhaW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQCBmdW5jdGlvbiBwcmludFByb3RvdHlw
ZXMoZSkKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgICAgIAogICAgIHZhciBlOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90
b3R5cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBl
cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5
cGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAgZnVuY3Rpb24gc2hvdWxk
QmUoYSwgYikKIAogZnVuY3Rpb24gdGVzdCgpIAogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih3aW5k
b3cuRE9NRXhjZXB0aW9uKSIsIHRydWUpOwogICAgIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBl
LmlzUHJvdG90eXBlT2Yod2luZG93Lk9wdGlvbikiLCB0cnVlKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL3JlZ2lzdGVyLXByb3RvY29sLWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3Rlci1wcm90b2NvbC1oYW5kbGVyLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyLXByb3RvY29sLWhh
bmRsZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwPlRoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIHRocm93cyB0
aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGltcGxlbWVudGF0aW9u
LjwvcD4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiBmdW5jdGlvbiBkZWJ1ZyhzdHIpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZW1v
dmUtYm9keS1kdXJpbmctYm9keS1yZXBsYWNlbWVudDIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZW1vdmUtYm9keS1kdXJpbmctYm9keS1yZXBsYWNlbWVudDIuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVtb3ZlLWJvZHkt
ZHVyaW5nLWJvZHktcmVwbGFjZW1lbnQyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTggKzIs
MTggQEAKIDxodG1sPgogPGJvZHk+PGRpdj48c2NyaXB0PgogCi1pZiAoIXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKK2lmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgZG9jdW1lbnQud3Jp
dGUoIlRoaXMgdGVzdCByZXF1aXJlcyBHQ0NvbnRyb2xsZXIuIik7CiBlbHNlIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgZnVuY3Rpb24gY3Jhc2goKSB7CiAgICAgICAg
IGRvY3VtZW50Lm9wZW4oKTsKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlBBU1MuIFdlYktpdCBk
aWRuJ3QgY3Jhc2guIik7CiAgICAgICAgIGRvY3VtZW50LmNsb3NlKCk7CiAgICAgICAgIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7Ci0gICAgICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKSIsIDApOworICAgICAgICBzZXRUaW1lb3V0KCJ0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKSIsIDApOwogICAgIH0KIAogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVtb3ZlLWJvZHktZHVyaW5nLWJvZHktcmVwbGFj
ZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZW1vdmUtYm9k
eS1kdXJpbmctYm9keS1yZXBsYWNlbWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZW1vdmUtYm9keS1kdXJpbmctYm9keS1yZXBsYWNlbWVudC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDE4ICsyLDE4IEBACiA8aHRtbD4KIDxib2R5PjxkaXY+PHNj
cmlwdD4KIAotaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCitpZiAoIXdpbmRvdy50
ZXN0UnVubmVyKQogICAgIGRvY3VtZW50LndyaXRlKCJUaGlzIHRlc3QgcmVxdWlyZXMgR0NDb250
cm9sbGVyLiIpOwogZWxzZSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAg
IGZ1bmN0aW9uIGNyYXNoKCkgewogICAgICAgICBkb2N1bWVudC5vcGVuKCk7CiAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCJQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLiIpOwogICAgICAgICBkb2N1
bWVudC5jbG9zZSgpOwogICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotICAgICAgICBz
ZXRUaW1lb3V0KCJsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLCAwKTsKKyAgICAg
ICAgc2V0VGltZW91dCgidGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiLCAwKTsKICAgICB9CiAKICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
bW92ZS1ib2R5LWR1cmluZy10aXRsZS1jcmVhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZS1ib2R5LWR1cmluZy10aXRsZS1jcmVhdGlvbi5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZW1vdmUtYm9keS1kdXJp
bmctdGl0bGUtY3JlYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMSArMiwxMSBAQAog
PGh0bWw+CiA8Ym9keT48ZGl2PjxzY3JpcHQ+CiAKLWlmICghd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQoraWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICBkb2N1bWVudC53cml0ZSgiVGhp
cyB0ZXN0IHJlcXVpcmVzIEdDQ29udHJvbGxlci4iKTsKIGVsc2UgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAKICAgICBmdW5jdGlvbiBjcmFzaCgpIHsKICAgICAgICAgaWYgKGRv
Y3VtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCkgewpAQCAt
MTQsNyArMTQsNyBAQCBlbHNlIHsKICAgICAgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7
CiAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLiIKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9LCAwKTsKICAg
ICAgICAgfQogICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVtb3ZlLWNoaWxkcmVuLW5vdGlmaWNhdGlvbi1vcmRlci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZS1jaGlsZHJlbi1ub3RpZmljYXRp
b24tb3JkZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVtb3ZlLWNoaWxkcmVuLW5vdGlmaWNhdGlvbi1vcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDggKzUsOCBAQAogICAgIEZBSUw6IFRlc3QgZGlkIG5vdCBydW4KIDwvcD4KIDxzY3JpcHQ+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwogICAgIHRhcmdldC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVtb3ZlLW5hbWVkLWF0dHJpYnV0ZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3JlbW92ZS1uYW1lZC1hdHRyaWJ1dGUtY3Jhc2guaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVtb3ZlLW5hbWVkLWF0dHJpYnV0ZS1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNiBAQAogPHNjcmlwdD4KICAgICBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYnV0dG9uJylbMF0uZGlzYWJsZWQgPSBmYWxz
ZTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZW1vdmUtc3R5bGUtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZS1zdHlsZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZS1zdHlsZS1lbGVtZW50Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8ZGl2IGlkPSJjb250ZW50Ij48L2Rp
dj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudCIpOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQi
KS5pbm5lckhUTUwgPSAiPHN0eWxlPnRleHQ8L3N0eWxlPiI7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9yZXBsYWNlLWNoaWxkLXNpYmxpbmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmVwbGFjZS1jaGlsZC1zaWJsaW5ncy5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWNoaWxkLXNpYmxpbmdzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8aGVhZD4KIDx0aXRsZT5yZXBsYWNlQ2hp
bGQgc2libGluZ3MgYnVnPC90aXRsZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rp
b24gdGVzdCgpIHsKICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxk
MScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVwbGFjZS1maXJzdC1jaGlsZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2UtZmlyc3QtY2hpbGQu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVwbGFjZS1m
aXJzdC1jaGlsZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4K
IGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVwbGFj
ZSIpLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5vZGUsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXBsYWNlIikpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShub2RlLnBhcmVudE5vZGUpKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2VDaGlsZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2VDaGlsZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlQ2hpbGQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTYsMTYgKzE2LDE2IEBACiAJfQogPC9zdHlsZT4KIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFz
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotCQlsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0JCWxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKwkJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJCXRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCX0KIAlmdW5jdGlvbiBsb2FkTWVudShtKXsKIAkJdmFyIHcgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibWVudV9jb250ZW50X2FyZWEiKTsKIAkJdy5yZXBsYWNlQ2hpbGQobSwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lbnVfaW1wb3J0IikpOwogCQlkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQQVNTIikpOwotCQlpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotCQkJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworCQlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIAl9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
cGxhY2VkLWltYWdlLW1hcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3JlcGxhY2VkLWltYWdlLW1hcC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXBsYWNlZC1pbWFnZS1tYXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4
ICszLDggQEAKIDxoZWFkPgogPHRpdGxlPkltYWdlIG1hcCBidWc8L3RpdGxlPgogPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGNoYW5nZU1h
cCgpIHsKICAgICB2YXIgaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWcnKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlLWxvY2F0aW9ucy1pbi1jcmVhdGVkLWh0bWwt
ZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJj
ZS1sb2NhdGlvbnMtaW4tY3JlYXRlZC1odG1sLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlLWxvY2F0aW9ucy1pbi1jcmVhdGVk
LWh0bWwtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFk
PgogICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgdmFy
IGh0bWxEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoJycp
OwogICAgICAgICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWlu
LXJ0bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JpZ2h0LW92ZXJm
bG93LWluLXJ0bC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEs
OCBAQAogICAgIAogICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsID0g
d2luZG93LnNjcm9sbFg7CiAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDEsIDApOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWFkZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1hZGQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWFkZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw5ICs0OSw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHRlc3QxKCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zY3JpcHQtY2xvbmUtcmVydW4tc2VsZi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1jbG9uZS1yZXJ1bi1zZWxmLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1jbG9uZS1yZXJ1bi1z
ZWxmLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDggQEAgZGl2LmFwcGVuZENoaWxk
KHNjcmlwdC5jbG9uZU5vZGUodHJ1ZSkpOwogPC9zY3JpcHQ+PC9kaXY+CiA8c2NyaXB0PgogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogcmVzdWx0ID0gJ1BBU1MnOwogaWYgKGkgPT0gMikKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1jbG9uZS1yZXJ1bi1zcmMueGh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWNsb25lLXJlcnVuLXNyYy54aHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWNsb25lLXJlcnVu
LXNyYy54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAKIAogdmFyIGkgPSAwOwog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hl
YWQ+CkBAIC0zMiw4ICszMiw4IEBAIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgZWxzZSBp
ZiAoaSA+IDEpCiAgICAgICByZXN1bHQgPSAnRkFJTDogc2NyaXB0IHJhbiAnICsgaSArICcgdGlt
ZXMnOwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUocmVzdWx0KSk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMCk7CiAK
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWNsb25lLXJlcnVu
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWNsb25lLXJl
cnVuLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Njcmlw
dC1jbG9uZS1yZXJ1bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIHZhciBp
ID0gMDsKIDxkaXY+PHNjcmlwdD4gaSsrIDwvc2NyaXB0PjwvZGl2PgogPHNjcmlwdD4KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIHZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
c2NyaXB0JylbMV07CiB2YXIgZGl2ID0gc2NyaXB0LnBhcmVudE5vZGU7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zY3JpcHQtZWxlbWVudC1nYy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1lbGVtZW50LWdjLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1lbGVtZW50LWdjLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTMgKzEsMTMgQEAKIDxodG1sPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2NyaXB0Jyk7Ci0gICAgcy5zZXRBdHRyaWJ1dGUoJ29ubG9hZCcsICdhbGVydCgiU2NyaXB0IG9u
bG9hZCBoYW5kbGVyIGNhbGxlZCEiKTsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpJyk7CisgICAgcy5zZXRBdHRyaWJ1dGUo
J29ubG9hZCcsICdhbGVydCgiU2NyaXB0IG9ubG9hZCBoYW5kbGVyIGNhbGxlZCEiKTsgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKScpOwogICAgIHMuaWQgPSAi
dGhlU2NyaXB0IjsKICAgICBzLnNyYyA9ICJyZXNvdXJjZXMvc2NyaXB0LWVsZW1lbnQtZ2MuanMi
OwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LWVsZW1lbnQtcmVtb3Zl
LXNlbGYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtZWxl
bWVudC1yZW1vdmUtc2VsZi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zY3JpcHQtZWxlbWVudC1yZW1vdmUtc2VsZi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDggKzcsOCBAQCBmcm9tIHRoZSBkb2N1bWVudCBkb2Vzbid0IGNyYXNoIHVwb24gaW5zCiA8
c2NyaXB0IGlkPSJkdW1teSI+PC9zY3JpcHQ+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dmFyIHNjcmlwdEVsZW1lbnQ7CiB2YXIgc2NyaXB0VGV4dCA9ICJ2YXIgc2VsZiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzY3JpcHQnKTsgc2VsZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNl
bGYpOyI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtZWxlbWVudC13aXRob3V0
LWZyYW1lLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2Ny
aXB0LWVsZW1lbnQtd2l0aG91dC1mcmFtZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtZWxlbWVudC13aXRob3V0LWZyYW1lLWNyYXNo
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBAIGVsZW1lbnQgdG8gYSBkb2N1bWVu
dCB3aXRob3V0IGEgZnJhbWUuCiA8cHJlPlBBU1M6IFlvdSBkaWRuJ3QgY3Jhc2guPC9wcmU+CiAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAKIHZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1l
bnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpOwogZG9jLndyaXRlKCI8XHNjcmlwdCBzcmM9
Jyc+OzxcL3NjcmlwdD4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC1pbm5l
ckhUTUwteC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQt
aW5uZXJIVE1MLXgueGh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NjcmlwdC1pbm5lckhUTUwteC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDgg
QEAKIDxwPlNob3VsZCBzYXkgUEFTUzo8L3A+CiA8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KIDxzY3Jp
cHQ+PCFbQ0RBVEFbCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHRhZ1N0cmluZyA9ICJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdCcpLmlubmVySFRNTD0nPHA+UEFTUzwvcD4nOyI7CiB2YXIgZT0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zY3JpcHQtaW5uZXJIVE1MLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2NyaXB0LWlubmVySFRNTC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zY3JpcHQtaW5uZXJIVE1MLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OCArMiw4IEBACiA8cD5TaG91bGQgc2F5IFBBU1M6PC9wPgogPGRpdiBpZD0idGVzdCI+PC9kaXY+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBlPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzY3JpcHQnKTsKIGUuaW5uZXJIVE1MPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KS5pbm5lckhUTUw9JzxwPlBBU1MnOyI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3Jv
bGwtZWxlbWVudC10by1yZWN0LWNlbnRlcmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2Nyb2xsLWVsZW1lbnQtdG8tcmVjdC1jZW50ZXJlZC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JvbGwtZWxlbWVudC10by1yZWN0
LWNlbnRlcmVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAKICAgICAgIGRl
YnVnKCJTY3JvbGxlZCBlbGVtZW50IHRvIHJlY3QiKTsKICAgICAgIHNob3VsZEJlKCJyZWN0Lmxl
ZnQiLCAiY29tcHV0ZWRMZWZ0Iik7CiAgICAgICBzaG91bGRCZSgicmVjdC50b3AiLCAiY29tcHV0
ZWRUb3AiKTsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgfQog
ICAgIDwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Njcm9sbC1lbGVt
ZW50LXRvLXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3Jv
bGwtZWxlbWVudC10by1yZWN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3Njcm9sbC1lbGVtZW50LXRvLXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjAsOCArMjAsOCBAQAogICAgICAgZGVidWcoIlNjcm9sbGVkIGVsZW1lbnQgdG8gcmVjdCIpOwog
ICAgICAgc2hvdWxkQmUoInJlY3QubGVmdCIsICJjb21wdXRlZExlZnQiKTsKICAgICAgIHNob3Vs
ZEJlKCJyZWN0LnRvcCIsICJjb21wdXRlZFRvcCIpOwotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2VhcmNoLXNoYWRvdy1ob3N0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2VhcmNoLXNoYWRvdy1ob3N0LWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NlYXJjaC1zaGFkb3ctaG9zdC1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0
PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gY2xpY2tPbihlbGVtZW50KQogewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2VyaWFsaXplLWF0dHJpYnV0ZS54aHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXJpYWxpemUtYXR0cmlidXRlLnhodG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXJpYWxpemUtYXR0cmlidXRl
LnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogPCFbQ0RBVEFbCiBmdW5jdGlv
biB0ZXN0KCkgewogCi0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgdHJ5IHsKICAgICBzZXJpYWxpemVk
ID0gKG5ldyBYTUxTZXJpYWxpemVyKCkpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0RGl2XCInJjw+IikpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2VyaWFsaXplLWNkYXRhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2VyaWFsaXplLWNkYXRhLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL3NlcmlhbGl6ZS1jZGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBA
QAogWE1MU2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyBpbmNvcnJlY3QgdmFsdWUgZm9yIENE
QVRBIG5vZGVzLjwvcD4KIDxwPlNob3VsZCBzYXkgUEFTUyBiZWxvdy48L3A+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogdmFyIGQgPSB3aW5kb3cuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRl
RG9jdW1lbnQoIiIsICIiLCBudWxsKTsKIHZhciBuID0gZC5jcmVhdGVDREFUQVNlY3Rpb24oIi0t
IDxjZGF0YT4gLS0iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NlcmlhbGl6ZS1ub2Rl
cy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXJpYWxpemUtbm9k
ZXMueGh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Nlcmlh
bGl6ZS1ub2Rlcy54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDx0aXRsZT5Y
TUxTZXJpYWxpemVyKCkgbmFtZXNwYWNlIHRlc3Q8L3RpdGxlPgogPHNjcmlwdD4KIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgCiAgICAgdmFyIHhzID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTsKICAgICB2
YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZW50Jyk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9zZXQtZnJhbWUtc3JjLXdoaWxlLXJ1bm5pbmctc2NyaXB0LWlu
LWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0LWZyYW1l
LXNyYy13aGlsZS1ydW5uaW5nLXNjcmlwdC1pbi1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXQtZnJhbWUtc3JjLXdoaWxlLXJ1bm5pbmctc2Ny
aXB0LWluLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4K
IDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KIDwvc2NyaXB0PgogPGlmcmFtZSBzcmM9InJlc291cmNlcy9z
ZXQtZnJhbWUtc3JjLXdoaWxlLXJ1bm5pbmctc2NyaXB0LWluLWZyYW1lLmh0bWwiPjwvaWZyYW1l
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0LWlubmVyLXRleHQtbmV3bGluZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXQtaW5uZXItdGV4dC1uZXds
aW5lcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXQt
aW5uZXItdGV4dC1uZXdsaW5lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAog
PGhlYWQ+CiAgICAgPHNjcmlwdD4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCiAKICAgICAgICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBkaXYuaW5uZXJUZXh0ID0gIlxu
VGV4dFxud2l0aFxubmV3bGluZXNcblxuIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Nl
dC1pbm5lckhUTUwueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0
LWlubmVySFRNTC54aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2V0LWlubmVySFRNTC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgZnVu
Y3Rpb24gZGVidWcoc3RyKSB7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXN0Jyk7CiAgICAgZS5pbm5lckhUTUwgPSAnPGI+U3VjY2VzcyE8L2I+PGZvbzpiYXI+PC9mb286
YmFyPic7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXQtb3V0ZXItaHRtbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldC1vdXRlci1odG1sLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldC1vdXRlci1odG1sLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQog
CiAgICAgICAgIHZhciBpdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScp
OwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdFJlcGxhY2UnKS5vdXRlckhU
TUwgPSAnPHNwYW4+UmVwbGFjZWQ8L3NwYW4+IG5vZGUnOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2V0LW91dGVyLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zZXQtb3V0ZXItdGV4dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9zZXQtb3V0ZXItdGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsy
Miw4IEBACiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCkKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKIAogICAgICAgICB2YXIgaXRlbXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKTsKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2V0QXR0cmlidXRlLXVzaW5nLWluaXRpYWwtaW5wdXQtdmFsdWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGUtdXNpbmctaW5pdGlh
bC1pbnB1dC12YWx1ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zZXRBdHRyaWJ1dGUtdXNpbmctaW5pdGlhbC1pbnB1dC12YWx1ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpAQCAtNDIsOCAr
NDIsOCBAQCBTb21lIHZhbHVlcyB1c2VkIHdpdGggc2V0QXR0cmlidXRlKCkgY2F1CiA8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtZW1wdHktbmFtZXNwYWNlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtZW1wdHktbmFtZXNwYWNlLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0
ZU5TLWVtcHR5LW5hbWVzcGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAog
PHA+VGVzdCB0aGF0IHNldEF0dHJpYnV0ZU5TKCIiLCAuLi4pIGNyZWF0ZXMgYW4gYXR0cmlidXRl
IGluIG51bGwgbmFtZXNwYWNlLiBQZXIgRE9NIDMgQ29yZSw8L3A+CiA8cHJlPkluIHByb2dyYW1t
aW5nIGxhbmd1YWdlcyB3aGVyZSBlbXB0eSBzdHJpbmdzIGNhbiBiZSBkaWZmZXJlbnRpYXRlZCBm
cm9tIG51bGwsIGVtcHR5IHN0cmluZ3MsIHdoZW4gZ2l2ZW4gYXMgYSBuYW1lc3BhY2UgVVJJLCBh
cmUgY29udmVydGVkIHRvIG51bGwuPC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRv
Y3VtZW50LmJvZHkuc2V0QXR0cmlidXRlTlMoIiIsICJhIiwgImIiKTsKIHZhciBhdHRyTmFtZXNw
YWNlID0gZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlTlMoIiIsICJhIikubmFtZXNwYWNl
VVJJOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIGZ1bmN0aW9uIGRlYnVnKHN0cikgewog
fQogCiBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cuZXhhbXBs
ZS5vcmcnLCAndGVzdCcpCiAgICAgYXR0ciA9IGVsZW0uc2V0QXR0cmlidXRlTlMobnVsbCwgJ25h
bWUnLCAndmFsdWUnKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0UHJpbWl0aXZlVmFs
dWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRQcmltaXRpdmVW
YWx1ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRQ
cmltaXRpdmVWYWx1ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQCBkaXYudGVz
dCB7CiA8L3N0eWxlPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHJ1blRl
c3QoKSAKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NpbXVsdGFuZW91c2x5UmVnc2l0
ZXJlZFRpbWVyRmlyZU9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2ltdWx0YW5lb3VzbHlSZWdzaXRlcmVkVGltZXJGaXJlT3JkZXIuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2ltdWx0YW5lb3VzbHlSZWdzaXRlcmVk
VGltZXJGaXJlT3JkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBAIGZ1
bmN0aW9uIGRvbmUoKQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAgICAg
ICAgc2hvdWxkQmUoZmlyZWRUaW1lcnNbaV0sICJmaXJlZFRpbWVyc1siICsgaSArICJdIiwgaSk7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc3BhY2UtdG8tdGV4dC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NwYWNlLXRvLXRleHQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc3BhY2UtdG8tdGV4dC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMxIikuZmlyc3RDaGlsZC5ub2RlVmFsdWU9
IlNVIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczIiKS5maXJzdENoaWxkLmluc2Vy
dERhdGEoMCwgIkNDIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zdHlsZS1tZWRpYS1u
dWxsLWRvY3VtZW50LWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zdHlsZS1tZWRpYS1udWxsLWRvY3VtZW50LWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc3R5bGUtbWVkaWEtbnVsbC1kb2N1bWVudC1l
bGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw2IEBACiAgICAgZG9jdW1lbnQu
Y2xvc2UoKTsKICAgIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vc3R5bGUtc2hlZXQtY2FuZGlkYXRlLXJlbW92ZS11bnJlbmRl
cmVkLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc3R5
bGUtc2hlZXQtY2FuZGlkYXRlLXJlbW92ZS11bnJlbmRlcmVkLWRvY3VtZW50Lmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3N0eWxlLXNoZWV0LWNhbmRpZGF0
ZS1yZW1vdmUtdW5yZW5kZXJlZC1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDgg
KzgsOCBAQAogICAgIGxlYWQgdG8gYSBjcmFzaC4KIDwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgb3RoZXJEb2N1bWVudCA9IGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOwogICAgIG90aGVyRG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmlubmVySFRNTCA9ICI8bGluaz4iOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vc3R5bGVkLWNsb25lLWlubGluZS1zdHlsZS1kZWNsLXBhcmVudC1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3N0eWxlZC1jbG9uZS1pbmxpbmUtc3R5
bGUtZGVjbC1wYXJlbnQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vc3R5bGVkLWNsb25lLWlubGluZS1zdHlsZS1kZWNsLXBhcmVudC1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogVGVzdCBwYXNzZXMgaWYgaXQgZG9l
cyBub3QgY3Jhc2guDQogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQogPHNjcmlwdD4NCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsNCiANCiBpZnJhbWUxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1l
Jyk7DQogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUxKTsNCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zdHlsZWQtbm90LWluLWRvY3VtZW50LWNsb25lLWlubGluZS1zdHlsZS1k
ZWNsLXBhcmVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3N0eWxlZC1ub3QtaW4tZG9jdW1lbnQtY2xvbmUtaW5saW5lLXN0eWxlLWRlY2wtcGFyZW50LWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3N0eWxl
ZC1ub3QtaW4tZG9jdW1lbnQtY2xvbmUtaW5saW5lLXN0eWxlLWRlY2wtcGFyZW50LWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiBUZXN0IHBhc3NlcyBpZiBpdCBkb2Vz
IG5vdCBjcmFzaC4NCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCiA8c2NyaXB0Pg0KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOw0KIA0KIGlmcmFtZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KTsNCiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZTEpOw0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3RhYi1pbi1yaWdodC1hbGlnbm1lbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90YWItaW4tcmlnaHQtYWxpZ25tZW50Lmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RhYi1pbi1yaWdodC1hbGlnbm1lbnQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEyIEBACiAgICAgICAgICAgICBlbHNl
IAogICAgICAgICAgICAgICAgIGxvZygiUEFTUyIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKICAgICAgICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgIH0KIAotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiA8L3NjcmlwdD4KIDwvaGVhZD4gCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90YWJpbmRleC1jbGFtcC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3RhYmluZGV4LWNsYW1wLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RhYmluZGV4LWNsYW1wLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDggKzEwLDggQEAKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGxvZygnVGVzdGluZyBp
bnB1dCBlbGVtZW50cyBpbiB0aGUgcGFnZScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
dGV4dC1jb250cm9sLWNyYXNoLW9uLXNlbGVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3RleHQtY29udHJvbC1jcmFzaC1vbi1zZWxlY3QuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGV4dC1jb250cm9sLWNyYXNoLW9uLXNl
bGVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBUZXN0cyB0aGF0IHdlIGRv
bid0IGNyYXNoIHdoZW4ga2lsbGluZyBhCiA8aW5wdXQgaWQ9ImlucHV0MyI+CiA8aW5wdXQgaWQ9
ImlucHV0NCI+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ZnVuY3Rpb24gJChpZCkgewogICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGV4dC1ub2RlLWFwcGVuZC1kYXRhLXJl
bW92ZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RleHQt
bm9kZS1hcHBlbmQtZGF0YS1yZW1vdmUtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vdGV4dC1ub2RlLWFwcGVuZC1kYXRhLXJlbW92ZS1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDEwIEBACiA8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CiA8c2NyaXB0PgogdmFyIGNvdW50ID0gMDsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCitpZiAod2luZG93LnRlc3RSdW5uZXIpCiB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpCkBAIC0xOCw4ICsxOCw4IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKQogICAgIGNhdGNoIChleGNlcHRpb24pIHsKICAgICAgICBkaXZCbG9j
ay5pbm5lckhUTUwgPSAiVGhyZXcgYW4gZXhjZXB0aW9uIC0gIiArIGV4Y2VwdGlvbjsKICAgICB9
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50TGlzdGVu
ZXIoKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGV4dC1ub2RlLWF0dGFjaC1jcmFzaC54
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90ZXh0LW5vZGUtYXR0YWNo
LWNyYXNoLnhodG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90
ZXh0LW5vZGUtYXR0YWNoLWNyYXNoLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBA
QAogVGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCiA8c3R5bGU+PC9zdHlsZT4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGRvY0VsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQ7CiBkb2N1bWVudC5yZW1vdmVDaGlsZChkb2NFbGVtZW50KTsgCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS90aW1lci1jbGVhci1pbnRlcnZhbC1pbi1oYW5kbGVyLWFuZC1nZW5l
cmF0ZS1lcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVy
LWNsZWFyLWludGVydmFsLWluLWhhbmRsZXItYW5kLWdlbmVyYXRlLWVycm9yLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWNsZWFyLWludGVydmFs
LWluLWhhbmRsZXItYW5kLWdlbmVyYXRlLWVycm9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsN
Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQ0KLSAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCkNCisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0KIH0N
CiANCiBmdW5jdGlvbiBsb2cobXNnKSB7DQpAQCAtMTMsOCArMTMsOCBAQCBmdW5jdGlvbiBsb2co
bXNnKSB7DQogdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7DQogICBjbGVhcklu
dGVydmFsKHRpbWVyKTsNCiAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOw0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7DQogICB9LCAxMCk7DQogDQogICAvLyBUaGlzIGZ1bmN0aW9uIHRyaWVz
IHRvIGFwcGVuZENoaWxkIHRvIGJvZHksIGJ1dCBib2R5IGRvZXNuJ3QgZXhpc3QNCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1jbGVhci1pbnRlcnZhbC1pbi1oYW5kbGVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItY2xlYXItaW50ZXJ2YWwt
aW4taGFuZGxlci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS90aW1lci1jbGVhci1pbnRlcnZhbC1pbi1oYW5kbGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTgsOCArOCw4IEBACiAgICAgICAgICAgICBpZiAoY291bnQgPiAxMCkgIHsKICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGludGVydmFsSUQpOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE3LDkgKzE3LDkg
QEAKICAgICB2YXIgY291bnQgPSAwOwogCiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGlu
dGVydmFsSUQgPSBzZXRJbnRlcnZhbCh0aW1lb3V0SGFuZGxlciwgMSk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQt
MS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVz
ZXQtcGFydC0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksMTUgKzksMTUgQEAgZnVuY3Rpb24g
bG9nKG1zZykgewogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
ICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIC8vIE1ha2UgdGlt
ZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gdHdpY2UgYSBzZWNvbmQuCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC41KTsKKyAgICB0ZXN0UnVubmVy
LnNldE1pbmltdW1UaW1lckludGVydmFsKDAuNSk7CiAKICAgICAvLyBQYXJ0IDIgb2YgdGhpcyB0
ZXN0ICh3aGljaCB3aWxsIGxpa2VseSBiZSBleGVjdXRlZCBpbW1lZGlhdGVseQogICAgIC8vIGFm
dGVyIHRoaXMgb25lIGJ5IHRoZSBoYXJuZXNzKSB2ZXJpZmllcyB0aGF0IHRoZSBtaW5pbXVtIHRp
bWVyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2
YWwtYW5kLXJlc2V0LXBhcnQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE3
ICsyMSwxNyBAQCBmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CiAgICAgICAgIGxvZygi
UEFTUyIpOwogICAgIGVsc2UKICAgICAgICAgbG9nKCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBj
b3VudCArICIgdGltZXMiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlv
dXRUZXN0Q29udHJvbGxlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIC8vIFRpbWVycyBzaG91bGQgYmUgcnVubmluZyBh
dCBmdWxsIHNwZWVkLCBub3QgYXQgdGhlIHRocm90dGxlZAogICAgIC8vIHJhdGUgc2V0IGJ5IHBh
cnQgMSBvZiB0aGlzIHRlc3QuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNy
ZWFzZS1taW4taW50ZXJ2YWwtcmVwZWF0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLXJlcGVhdGluZy5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwtcmVwZWF0aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDIwICsyMCwy
MCBAQCBmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CiAgICAgICAgIGxvZygiUEFTUyIp
OwogICAgIGVsc2UKICAgICAgICAgbG9nKCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBjb3VudCAr
ICIgdGltZXMiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAg
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKSB7CiAgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0
Q29udHJvbGxlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIAogICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRo
YW4gdHdpY2UgYSBzZWNvbmQuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRp
bWVySW50ZXJ2YWwoMC41KTsKKyAgICB0ZXN0UnVubmVyLnNldE1pbmltdW1UaW1lckludGVydmFs
KDAuNSk7CiAKICAgICBzZXRJbnRlcnZhbChzbG93VGltZW91dEhhbmRsZXIsIDEwMDApOwogICAg
IHNldEludGVydmFsKGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWlu
LWludGVydmFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDIwICsyMSwyMCBAQCBmdW5jdGlv
biBzbG93VGltZW91dEhhbmRsZXIoKSB7CiAgICAgICAgIGxvZygiUEFTUyIpOwogICAgIGVsc2UK
ICAgICAgICAgbG9nKCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBjb3VudCArICIgdGltZXMiKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CiAg
ICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIAogICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gdHdpY2UgYSBz
ZWNvbmQuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwo
MC41KTsKKyAgICB0ZXN0UnVubmVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDAuNSk7CiAKICAg
ICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CiAgICAgc2V0VGltZW91dChm
YXN0VGltZW91dEhhbmRsZXIsIDEpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtcmVwZWF0aW5nLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFz
ZS1taW4taW50ZXJ2YWwtcmVwZWF0aW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFs
LXJlcGVhdGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMCArMjAsMjAgQEAgZnVuY3Rp
b24gc2xvd1RpbWVvdXRIYW5kbGVyKCkgewogICAgICAgICBsb2coIlBBU1MiKTsKICAgICBlbHNl
CiAgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlmICghd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgewog
ICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAKICAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIG9uY2UgZXZl
cnkgdHdvIHNlY29uZHMuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVy
SW50ZXJ2YWwoMi4wKTsKKyAgICB0ZXN0UnVubmVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDIu
MCk7CiAKICAgICBzZXRJbnRlcnZhbChzbG93VGltZW91dEhhbmRsZXIsIDEwMDApOwogICAgIHNl
dEludGVydmFsKGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7CkBAIC00Miw3ICs0Miw3IEBAIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7CiAgICAgLy8gSWYgdGhpcyBkb2Vzbid0IGNhdXNlIHRpbWVycyB0byBn
ZXQgcmUtZXZhbHVhdGVkIGltbWVkaWF0ZWx5LAogICAgIC8vIHRoZSBmYXN0IHRpbWVvdXQgaGFu
ZGxlciB3b24ndCBnZXQgY2FsbGVkIGZvciB1cCB0byB0d28gc2Vjb25kcywKICAgICAvLyB3aGlj
aCB3b3VsZCBsZWFkIHRvIHBvb3IgcmVzcG9uc2l2ZW5lc3MuCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgIHRlc3RSdW5uZXIuc2V0
TWluaW11bVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWlu
LWludGVydmFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDIwICsyMSwyMCBAQCBmdW5jdGlv
biBzbG93VGltZW91dEhhbmRsZXIoKSB7CiAgICAgICAgIGxvZygiUEFTUyIpOwogICAgIGVsc2UK
ICAgICAgICAgbG9nKCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBjb3VudCArICIgdGltZXMiKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CiAg
ICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIAogICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gb25jZSBldmVy
eSB0d28gc2Vjb25kcy4KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCgyLjApOworICAgIHRlc3RSdW5uZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMi4w
KTsKIAogICAgIHNldFRpbWVvdXQoc2xvd1RpbWVvdXRIYW5kbGVyLCAxMDAwKTsKICAgICBzZXRU
aW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7CkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CiAgICAgLy8gSWYgdGhpcyBkb2Vzbid0IGNhdXNlIHRpbWVycyB0byBnZXQg
cmUtZXZhbHVhdGVkIGltbWVkaWF0ZWx5LAogICAgIC8vIHRoZSBmYXN0IHRpbWVvdXQgaGFuZGxl
ciB3b24ndCBnZXQgY2FsbGVkIGZvciB1cCB0byB0d28gc2Vjb25kcywKICAgICAvLyB3aGljaCB3
b3VsZCBsZWFkIHRvIHBvb3IgcmVzcG9uc2l2ZW5lc3MuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgIHRlc3RSdW5uZXIuc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aXRsZS1jb250ZW50LXdyaXRlLXNldC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxlLWNvbnRlbnQtd3JpdGUtc2V0Lmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxlLWNvbnRlbnQt
d3JpdGUtc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxo
ZWFkPgogPFNDUklQVD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogZG9jdW1lbnQud3JpdGUoIjx0aXRsZT4iKTsK
IGRvY3VtZW50LnRpdGxlID0gIlByb3BlcnR5IjsKIGRvY3VtZW50LndyaXRlKCJXcml0dGVuPC90
aXRsZT4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxlLWRpcmVjdGlvbmFsaXR5
LXJlbW92ZUNoaWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGl0
bGUtZGlyZWN0aW9uYWxpdHktcmVtb3ZlQ2hpbGQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vdGl0bGUtZGlyZWN0aW9uYWxpdHktcmVtb3ZlQ2hpbGQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiBhc3NlcnREaXJlY3Rp
b24obGFiZWwsIGV4cGVjdGVkCiAgICAgZG9jLndyaXRlKGh0bWwpOwogICAgIGRvYy5jbG9zZSgp
OwogCi0gICAgdmFyIGRpciA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciA/IGxheW91dFRl
c3RDb250cm9sbGVyLnRpdGxlVGV4dERpcmVjdGlvbiA6ICdsYXlvdXRUZXN0Q29udHJvbGxlciB1
bmF2YWlsYWJsZSc7CisgICAgdmFyIGRpciA9IHdpbmRvdy50ZXN0UnVubmVyID8gdGVzdFJ1bm5l
ci50aXRsZVRleHREaXJlY3Rpb24gOiAndGVzdFJ1bm5lciB1bmF2YWlsYWJsZSc7CiAgICAgdmFy
IHN0YXR1cyA9IGh0bWwgKyAnIHNob3VsZCBoYXZlIHRpdGxlIGRpcmVjdGlvbiAiJyArIGV4cGVj
dGVkRGlyZWN0aW9uICsgJyIuICc7CiAgICAgaWYgKGRpciA9PSBleHBlY3RlZERpcmVjdGlvbikg
ewogICAgICAgICBzdGF0dXMgKz0gJ1BBU1MnOwpAQCAtMjgsOCArMjgsOCBAQCBmdW5jdGlvbiBh
c3NlcnREaXJlY3Rpb24obGFiZWwsIGV4cGVjdGVkCiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkaXYpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogYXNzZXJ0RGlyZWN0aW9uKCdub3JtYWwg
ZG9jJywgJ2x0cicsCiAgICAgICAgICAgICAgICAgJzxodG1sPjx0aXRsZT5mb288L3RpdGxlPjwv
aHRtbD4nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxlLWRpcmVjdGlvbmFsaXR5
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGl0bGUtZGlyZWN0aW9u
YWxpdHkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGl0
bGUtZGlyZWN0aW9uYWxpdHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOSArMTUsOSBAQCBm
dW5jdGlvbiBhc3NlcnREaXJlY3Rpb24obGFiZWwsIGV4cGVjdGVkCiAgICAgZG9jLndyaXRlKGh0
bWwpOwogICAgIGRvYy5jbG9zZSgpOwogCi0gICAgdmFyIGRpciA9IHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciA/Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnRpdGxlVGV4dERpcmVj
dGlvbgotICAgICAgOiAnbGF5b3V0VGVzdENvbnRyb2xsZXIgdW5hdmFpbGFibGUnOworICAgIHZh
ciBkaXIgPSB3aW5kb3cudGVzdFJ1bm5lciA/CisgICAgICAgIHRlc3RSdW5uZXIudGl0bGVUZXh0
RGlyZWN0aW9uCisgICAgICA6ICd0ZXN0UnVubmVyIHVuYXZhaWxhYmxlJzsKICAgICB2YXIgc3Rh
dHVzID0gaHRtbCArICcgc2hvdWxkIGhhdmUgdGl0bGUgZGlyZWN0aW9uICInICsgZXhwZWN0ZWRE
aXJlY3Rpb24gKyAnIi4gJzsKICAgICBpZiAoZGlyID09IGV4cGVjdGVkRGlyZWN0aW9uKSB7CiAg
ICAgICAgIHN0YXR1cyArPSAnUEFTUyc7CkBAIC0yOSw4ICsyOSw4IEBAIGZ1bmN0aW9uIGFzc2Vy
dERpcmVjdGlvbihsYWJlbCwgZXhwZWN0ZWQKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRpdik7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBhc3NlcnREaXJlY3Rpb24oJ25vcm1hbCBkb2Mn
LCAnbHRyJywKICAgICAgICAgICAgICAgICAnPGh0bWw+PHRpdGxlPmZvbzwvdGl0bGU+PC9odG1s
PicpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGl0bGUtdGV4dC1wcm9wZXJ0eS0yLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGl0bGUtdGV4dC1wcm9wZXJ0
eS0yLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxl
LXRleHQtcHJvcGVydHktMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhl
YWQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBUaXRsZUNoYW5nZXMoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFRpdGxlQ2hhbmdlcygpOwogICAgIH0KICAg
ICAKICAgICBkb2N1bWVudC50aXRsZSA9ICcxLiBzZXR0aW5nIGRvY3VtZW50LnRpdGxlJzsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxlLXRleHQtcHJvcGVydHkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aXRsZS10ZXh0LXByb3BlcnR5Lmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpdGxlLXRleHQtcHJvcGVy
dHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSArMTEsOSBAQCBmdW5jdGlvbiBkZWJ1Z091
dHB1dChzdHIpIHsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBUaXRsZUNoYW5nZXMo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFRpdGxlQ2hhbmdlcygpOwogICAgIH0K
IAogICAgIHRpdGxlRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0aXRsZScp
Lml0ZW0oMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS91bmRldGVjdGFibGUtZG9jdW1l
bnQtYWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdW5kZXRlY3Rh
YmxlLWRvY3VtZW50LWFsbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS91bmRldGVjdGFibGUtZG9jdW1lbnQtYWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsOCArNyw4IEBAIGZ1bmN0aW9uIGRlYnVnKHN0cikgewogfQogCiBmdW5jdGlvbiBydW5UZXN0
cygpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgCiAgICAgZGVidWco
J2RvY3VtZW50LmFsbDogJyArIGRvY3VtZW50LmFsbCkKICAgICAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL3VucmVnaXN0ZXItcHJvdG9jb2wtaGFuZGxlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3VucmVnaXN0ZXItcHJvdG9jb2wtaGFuZGxlci5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS91bnJlZ2lzdGVyLXByb3Rv
Y29sLWhhbmRsZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwPlRoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIg
dGhyb3dzIHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uPC9wPgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKIGZ1bmN0aW9uIGRlYnVnKHN0cikKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4t
cnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25z
Y3JvbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogCiAgICAgICAgICAg
ICBvbmxvYWQgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRvY3VtZW50Lm9uc2Nyb2xsPWZ1bmN0aW9u
KCl7bG9nKCJGQUlMIC0gc2Nyb2xsIGV2ZW50IHJlY2VpdmVkISIpO30KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiAgICAgICAg
ICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICAgICAgICAgICAgICAvLyBUZXN0IHZlcnRpY2FsIHNjcm9sbGJhciBwcmVzZW5j
ZSBhbmQgdGhhdCBpdCBpcyBpbml0aWFsbHkgYXQgdGhlIGJvdHRvbSBmb3IgUlRMIHBhZ2UuCiAg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFn
ZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0
aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxi
YXItd2hlbi1kaXItY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleAogCiBvbmxvYWQgPSBmdW5j
dGlvbigpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9s
bCB5IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7CiAgICAgd2luZG93LnNjcm9s
bFRvKDAsIC0xMDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vd2luZG93LWRvbXVybC1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1kb211
cmwtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
d2luZG93LWRvbXVybC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxMiArMTgsMTIg
QEAgaWYgKCF3aW5kb3cuZ2MpDQogDQogZnVuY3Rpb24gbG9hZCgpDQogew0KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQog
ICAgIHsNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7DQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUo
dHJ1ZSk7DQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Q2FuT3BlbldpbmRvd3MoKTsNCisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdX
aW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOw0KKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7DQogICAgIH0NCiAgICAgd2luID0gd2luZG93Lm9wZW4oKTsNCiAgICAgaWYgKHdpbi53
ZWJraXRVUkwpDQpAQCAtMzQsOCArMzQsOCBAQCBmdW5jdGlvbiBsb2FkKCkNCiAgICAgICAgIHJl
dHVybjsNCiAgICAgfQ0KICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsNCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7DQogfQ0KIA0KIGZ1bmN0aW9uIGNyYXNoKCkN
CkBAIC00OCw4ICs0OCw4IEBAIGZ1bmN0aW9uIGNyYXNoKCkNCiAgICAgICAgIHJldHVybjsNCiAg
ICAgfQ0KICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsNCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7DQogfQ0KIDwvc2NyaXB0Pg0KIDwvaGVhZD4NCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vd3JhcHBlci1jbGFzc2VzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEyLDggKzEyLDggQEAKIDxib2R5PgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAKIGZ1bmN0aW9uIGpzV3JhcHBlckNsYXNzKG5vZGUpCiB7CkBAIC0yODQsOCArMjg0
LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAKICAgICAvLyB3aGF0IGVsc2UgaXMgbWlzc2luZz8K
IAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBmcmFtZUxvYWRl
ZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNvbnRleHQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNvbnRleHQuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vd3JhcHBlci1jb250ZXh0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBAIFlvdSBzaG91bGQgc2VlIFBBU1MgYmVs
b3cuCiA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgogPGlmcmFtZSBpZD0iaW5uZXIiIHNyYz0icmVz
b3VyY2VzL3dyYXBwZXItY29udGV4dC1pbm5lci5odG1sIj48L2lmcmFtZT4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiB3cml0ZU91
dHB1dChzKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWlkZW50aXR5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vd3JhcHBlci1pZGVudGl0eS5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWlk
ZW50aXR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDcgKzE3LDcgQEAKIGZ1bmN0aW9uIHJ1
blRlc3QoKQogewogICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHdyYXBwZXIgaWRlbnRpdHkg
Zm9yIEphdmFTY3JpcHQiKTsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICBkZWJ1ZygiVGhlIE9iakMgdGVz
dHMgb25seSB3b3JrIGluIER1bXBSZW5kZXJUcmVlLlxuIik7CiAgICAgCiAgICAgdmFyIHRlc3Rz
ID0gWyBdOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20veGh0bWwtZnJhZ21lbnQtcGFyc2lu
Zy1leGNlcHRpb25zLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ho
dG1sLWZyYWdtZW50LXBhcnNpbmctZXhjZXB0aW9ucy54aHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20veGh0bWwtZnJhZ21lbnQtcGFyc2luZy1leGNlcHRpb25z
LnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHRyeSB7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ291dGVySFRNTCcpLnRleHRDb250ZW50ID0gJ1BBU1MgLSAnICsg
ZXhjZXB0aW9uLm5hbWU7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBdXT4KIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20veGh0bWwtZnJhZ21lbnQtd2hpdGVzcGFjZS54aHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS94aHRtbC1mcmFnbWVudC13aGl0ZXNw
YWNlLnhodG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS94aHRt
bC1mcmFnbWVudC13aGl0ZXNwYWNlLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBA
QAogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPHNjcmlwdD4K
IGZ1bmN0aW9uIHRlc3QoKSB7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgdmFyIHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20veG1sLXBhcnNlci1lcnJvci1tZXNzYWdlLWNyYXNoLnN2Zwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS94bWwtcGFyc2VyLWVycm9yLW1lc3NhZ2UtY3Jhc2guc3ZnCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS94bWwtcGFyc2VyLWVycm9y
LW1lc3NhZ2UtY3Jhc2guc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7DQogDQogZnVuY3Rpb24gcnVuVGVzdCgpDQogew0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL3htbGh0dHByZXF1ZXN0LWNvbnN0cnVjdG9yLWluLWRldGFjaGVkLWRvY3VtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20veG1saHR0cHJlcXVlc3QtY29u
c3RydWN0b3ItaW4tZGV0YWNoZWQtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20veG1saHR0cHJlcXVlc3QtY29uc3RydWN0b3ItaW4tZGV0YWNo
ZWQtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAogPHA+VGV4
dCBmb3IgPGEgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTI5MCI+YnVnIDI1MjkwPC9hPjoKIENyYXNoIHdoZW4gY29uc3RydWN0aW5nIFhNTEh0dHBSZXF1
ZXN0IGluIGEgZGV0YWNoZWQgZG9jdW1lbnQuPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHBhc3MoKQogewogICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8ZGl2IGlkPSJyZXN1bHQiPkZB
SUw6IFNjcmlwdCBkaWQgbm90IHJ1bjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
eHNzLURFTklFRC1qYXZhc2NyaXB0LXZhcmlhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS94c3MtREVOSUVELWphdmFzY3JpcHQtdmFyaWF0aW9ucy5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS94c3MtREVOSUVELWphdmFz
Y3JpcHQtdmFyaWF0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS96b29tLXNjcm9sbC1wYWdlLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS96b29tLXNjcm9sbC1wYWdlLXRlc3QuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vem9vbS1zY3JvbGwtcGFnZS10ZXN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgfQogICAgICAgICBmdW5jdGlv
biB0ZXN0U2Nyb2xsKHpvb21GYWN0b3IsIHNjYWxlRmFjdG9yKSB7CiAgICAgICAgICAgICBkZWJ1
ZygnVGVzdGluZyBhdCB6b29tICcgKyB6b29tRmFjdG9yICsgJyBhbmQgc2NhbGUgJyArIHNjYWxl
RmFjdG9yKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgdmFyIHkgPSAyMjE7CiAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoc2NhbGVGYWN0b3IsIDAsIDAp
OwogICAgICAgICAgICAgICAgIHpvb21CeSh6b29tRmFjdG9yKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMtY2FjaGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVzLWNhY2hlLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMtY2FjaGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxwPlJ1bm5pbmcgdGVzdC4uLjwvcD4K
IDx0ZXh0YXJlYSBpZD10IHJvd3M9MjA+dGV4dGFyZWE8L3RleHRhcmVhPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGdjKCkKQEAg
LTMxLDggKzMxLDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRyeSB7IG5vZGVzWzBdLnRl
eHRDb250ZW50IH0gY2F0Y2ggKGV4KSB7IH0KIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgicCIpWzBdLmlubmVySFRNTCA9ICJQQVNTIgotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKIH0KIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1sZW5ndGgtY2FjaGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVzLWxl
bmd0aC1jYWNoZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9BdHRyL2NoaWxkLW5vZGVzLWxlbmd0aC1jYWNoZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVu
Y3Rpb24gb25Mb2FkKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVj
bGFyYXRpb24vZW1wdHktc3RyaW5nLXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9lbXB0eS1zdHJpbmctcHJvcGVydHku
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ1NTU3R5bGVE
ZWNsYXJhdGlvbi9lbXB0eS1zdHJpbmctcHJvcGVydHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OSw4ICs5LDggQEAKICAgICA8L3A+CiAgICAgPHAgaWQ9InJlc3VsdCI+RkFJTCAodGltZWQgb3V0
IG9yIGRpZCBub3QgZmluaXNoKTwvcD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiBk
b2N1bWVudC5ib2R5LnN0eWxlWycnXTsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpLmlubmVyVGV4dCA9IHR5cGUgPT0gInVuZGVmaW5lZCIgPyAiUEFTUyIgOiAiRkFJ
TCAodHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGVbJyddIGlzICIgKyB0eXBlICsgIikiOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NRXhjZXB0aW9uL3N0YWNrLXRyYWNlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NRXhjZXB0aW9uL3N0YWNrLXRyYWNl
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTUV4Y2Vw
dGlvbi9zdGFjay10cmFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogCi1pZiAodHlwZW9mIGxheW91dFRlc3RDb250cm9sbGVyICE9PSAndW5kZWZpbmVk
JykKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAodHlwZW9mIHRl
c3RSdW5uZXIgIT09ICd1bmRlZmluZWQnKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAvLyBFUzYgcG9seWZpbGwKIGlmICghU3RyaW5nLnByb3RvdHlwZS5jb250YWlucykgewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NSW1wbGVtZW50YXRpb24vY3JlYXRlRG9jdW1lbnQt
d2l0aC11c2VkLWRvY3R5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01JbXBsZW1lbnRhdGlvbi9jcmVhdGVEb2N1bWVudC13aXRoLXVzZWQtZG9jdHlwZS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01JbXBsZW1lbnRh
dGlvbi9jcmVhdGVEb2N1bWVudC13aXRoLXVzZWQtZG9jdHlwZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDggKzEsOCBAQAogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gZ2MoKQpAQCAtMjMsOCArMjMsOCBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICB9IGVsc2UgewogICAgICAgICBnYygpOwogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gZnJhbWVzWzBdLmRvY3VtZW50
LmJvZHkudGV4dENvbnRlbnQ7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NSW1wbGVtZW50YXRpb24vY3JlYXRlSFRNTERvY3VtZW50LXRpdGxlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NSW1wbGVtZW50YXRpb24vY3JlYXRlSFRNTERv
Y3VtZW50LXRpdGxlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTUltcGxlbWVudGF0aW9uL2NyZWF0ZUhUTUxEb2N1bWVudC10aXRsZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHA+VGVzdCBmb3IgYSA8aHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwOTgyIj5idWcgMzA5ODI8L2E+OiBjcmVh
dGVIVE1MRG9jdW1lbnQgZG9lc24ndCBlc2NhcGUgYW1wZXJzYW5kIGFuZCBsZXNzLXRoYW4gaW4g
dGl0bGUuPC9wPgogPHA+U2hvdWxkIHNheSBQQVNTOjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogdmFyIHJlc3VsdCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1
bWVudCgnZm9vPC90aXRsZT4nKS50aXRsZTsKIGRvY3VtZW50LndyaXRlKChyZXN1bHQgPT0gJ2Zv
bzwvdGl0bGU+JykgPyAiUEFTUyIgOiAoIkZBSUwuIFRpdGxlIGlzOjx4bXA+IiArIHJlc3VsdCAr
ICI8L3htcD4iKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01JbXBsZW1lbnRhdGlv
bi9kZXRhY2hlZC1kb2N0eXBlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NSW1wbGVtZW50YXRpb24vZGV0YWNoZWQtZG9jdHlwZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01JbXBsZW1lbnRhdGlvbi9kZXRhY2hlZC1k
b2N0eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgZnVuY3Rpb24gZ2Mo
KQogICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoIiIpOwogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dmFyIG8gPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoJ3gnLCBu
dWxsLCBudWxsKTsKIHZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1
bWVudCgiZG9jIiwgbnVsbCwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi1pZGVudGl0eS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTUltcGxlbWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLWlkZW50
aXR5Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTUlt
cGxlbWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLWlkZW50aXR5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMSw3IEBACiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rp
b24gcHJpbnQobWVzc2FnZSkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU1v
dGlvbi9zY3JpcHQtdGVzdHMvbm8tcGFnZS1jYWNoZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9EZXZpY2VNb3Rpb24vc2NyaXB0LXRlc3RzL25vLXBhZ2UtY2FjaGUuanMJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU1vdGlvbi9z
Y3JpcHQtdGVzdHMvbm8tcGFnZS1jYWNoZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkg
QEAKIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IHBhZ2VzIHRoYXQgdXNlIERldmljZU1vdGlvbiBh
cmUgbm90IHB1dCBpbiB0aGUgcGFnZSBjYWNoZS4nKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVBy
ZWZlcmVuY2VLZXknLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
KyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVBy
ZWZlcmVuY2VLZXknLCAxKTsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBi
ZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vcmVzb3VyY2VzL2V2ZW50LWFmdGVyLW5h
dmlnYXRpb24tbmV3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24vcmVzb3VyY2VzL2V2ZW50LWFmdGVyLW5hdmlnYXRpb24tbmV3Lmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0
aW9uL3Jlc291cmNlcy9ldmVudC1hZnRlci1uYXZpZ2F0aW9uLW5ldy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC02LDkgKzYsOSBAQAogICAgIGF3YXkgd2hlbiB0aGUgb3JpZ2luYWwgcGFnZSBpcyBp
biB0aGUgcGFnZSBjYWNoZS48YnI+PGJyPgogICAgIFNVQ0NFU1MKICAgICA8c2NyaXB0PgotICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCAxLjEsIHRydWUsIDIu
MiwgdHJ1ZSwgMy4zKTsKLSAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICB0ZXN0UnVubmVy
LnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCAxLjEsIHRydWUsIDIuMiwgdHJ1ZSwgMy4z
KTsKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgIH0KICAgICA8L3Nj
cmlwdD4KICAgPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24vc2NyaXB0LXRlc3RzL2FkZC1saXN0ZW5lci1mcm9tLWNhbGxiYWNrLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0
cy9hZGQtbGlzdGVuZXItZnJvbS1jYWxsYmFjay5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2FkZC1saXN0
ZW5lci1mcm9tLWNhbGxiYWNrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQCB2YXIg
bW9ja0FscGhhID0gMS4xOwogdmFyIG1vY2tCZXRhID0gMi4yOwogdmFyIG1vY2tHYW1tYSA9IDMu
MzsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24odHJ1ZSwgbW9ja0FscGhhLCB0cnVlLCBt
b2NrQmV0YSwgdHJ1ZSwgbW9ja0dhbW1hKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCBtb2NrQWxwaGEsIHRydWUs
IG1vY2tCZXRhLCB0cnVlLCBtb2NrR2FtbWEpOwogZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3Qg
Y2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jh
c2ljLW9wZXJhdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQt
dGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQCB2
YXIgbW9ja0FscGhhID0gMS4xOwogdmFyIG1vY2tCZXRhID0gMi4yOwogdmFyIG1vY2tHYW1tYSA9
IDMuMzsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24odHJ1ZSwgbW9ja0FscGhhLCB0cnVl
LCBtb2NrQmV0YSwgdHJ1ZSwgbW9ja0dhbW1hKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCBtb2NrQWxwaGEsIHRy
dWUsIG1vY2tCZXRhLCB0cnVlLCBtb2NrR2FtbWEpOwogZWxzZQogICAgIGRlYnVnKCdUaGlzIHRl
c3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3Rz
L2V2ZW50LWFmdGVyLW5hdmlnYXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2V2ZW50LWFmdGVyLW5hdmlnYXRp
b24uanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9y
aWVudGF0aW9uL3NjcmlwdC10ZXN0cy9ldmVudC1hZnRlci1uYXZpZ2F0aW9uLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBhIGNyYXNoIHdo
ZXJlIGFuIGV2ZW50IGlzIGZpcmVkIGFmdGVyIHRoZSBwYWdlIGhhcyBiZWVuIG5hdmlnYXRlZCBh
d2F5IHdoZW4gdGhlIG9yaWdpbmFsIHBhZ2UgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOwogZWxzZQogICAgIGRl
YnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRy
b2xsZXInKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24v
c2NyaXB0LXRlc3RzL211bHRpcGxlLWZyYW1lcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvbXVsdGlwbGUtZnJhbWVz
LmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmll
bnRhdGlvbi9zY3JpcHQtdGVzdHMvbXVsdGlwbGUtZnJhbWVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw4ICsyOCw4IEBAIGZ1bmN0aW9uIG1heWJlRmluaXNoVGVzdCgpIHsKIH0KIAogdmFyIG1v
Y2tFdmVudCA9IHthbHBoYTogMS4xLCBiZXRhOiAyLjIsIGdhbW1hOiAzLjN9OwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24odHJ1ZSwgbW9ja0V2ZW50LmFscGhhLCB0cnVlLCBtb2NrRXZlbnQu
YmV0YSwgdHJ1ZSwgbW9ja0V2ZW50LmdhbW1hKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCBtb2NrRXZlbnQuYWxw
aGEsIHRydWUsIG1vY2tFdmVudC5iZXRhLCB0cnVlLCBtb2NrRXZlbnQuZ2FtbWEpOwogZWxzZQog
ICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVz
dENvbnRyb2xsZXInKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24vc2NyaXB0LXRlc3RzL25vLXBhZ2UtY2FjaGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL25vLXBhZ2UtY2Fj
aGUuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9y
aWVudGF0aW9uL3NjcmlwdC10ZXN0cy9uby1wYWdlLWNhY2hlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDkgKzEsOSBAQAogZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgcGFnZXMgdGhhdCB1c2UgRGV2
aWNlT3JpZW50YXRpb24gYXJlIG5vdCBwdXQgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5JywgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldENh
bk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5JywgMSk7CiB9IGVsc2UKICAgICBkZWJ1ZygnVGhp
cyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10
ZXN0cy9uby1zeW5jaHJvbm91cy1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL25vLXN5bmNocm9ub3VzLWV2
ZW50cy5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNl
T3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL25vLXN5bmNocm9ub3VzLWV2ZW50cy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGV2ZW50cyBh
cmUgbmV2ZXIgZmlyZWQgc3ljbmhyb25vdXNseSBmcm9tIGEgY2FsbCB0byB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigpLicpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCAxLjEs
IHRydWUsIDIuMiwgdHJ1ZSwgMy4zKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCAxLjEsIHRydWUsIDIuMiwgdHJ1
ZSwgMy4zKTsKIGVsc2UKICAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhv
dXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9udWxsLXZhbHVlcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVz
dHMvbnVsbC12YWx1ZXMuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9udWxsLXZhbHVlcy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDggQEAgZGVzY3JpcHRpb24oJ1Rlc3RzIHVzaW5nIG51bGwgdmFs
dWVzIGZvcgogdmFyIG1vY2tFdmVudDsKIGZ1bmN0aW9uIHNldE1vY2tPcmllbnRhdGlvbihhbHBo
YSwgYmV0YSwgZ2FtbWEpIHsKICAgICBtb2NrRXZlbnQgPSB7YWxwaGE6IGFscGhhLCBiZXRhOiBi
ZXRhLCBnYW1tYTogZ2FtbWF9OwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbigK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uKAogICAgICAgICAgICAgbnVsbCAhPSBtb2NrRXZlbnQuYWxwaGEsIG51
bGwgPT0gbW9ja0V2ZW50LmFscGhhID8gMCA6IG1vY2tFdmVudC5hbHBoYSwKICAgICAgICAgICAg
IG51bGwgIT0gbW9ja0V2ZW50LmJldGEsIG51bGwgPT0gbW9ja0V2ZW50LmJldGEgPyAwIDogbW9j
a0V2ZW50LmJldGEsCiAgICAgICAgICAgICBudWxsICE9IG1vY2tFdmVudC5nYW1tYSwgbnVsbCA9
PSBtb2NrRXZlbnQuZ2FtbWEgPyAwIDogbW9ja0V2ZW50LmdhbW1hKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy91cGRhdGVzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3Njcmlw
dC10ZXN0cy91cGRhdGVzLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvdXBkYXRlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMyw4ICszLDggQEAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgdXBkYXRlcyB0byB0
aGUgbwogdmFyIG1vY2tFdmVudDsKIGZ1bmN0aW9uIHNldE1vY2tPcmllbnRhdGlvbihhbHBoYSwg
YmV0YSwgZ2FtbWEpIHsKICAgICBtb2NrRXZlbnQgPSB7YWxwaGE6IGFscGhhLCBiZXRhOiBiZXRh
LCBnYW1tYTogZ2FtbWF9OwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVl
LCBtb2NrRXZlbnQuYWxwaGEsIHRydWUsIG1vY2tFdmVudC5iZXRhLCB0cnVlLCBtb2NrRXZlbnQu
Z2FtbWEpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24odHJ1ZSwgbW9ja0V2ZW50LmFscGhhLCB0cnVlLCBtb2Nr
RXZlbnQuYmV0YSwgdHJ1ZSwgbW9ja0V2ZW50LmdhbW1hKTsKICAgICBlbHNlCiAgICAgICAgIGRl
YnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRy
b2xsZXInKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvYy1vcGVu
LXdoaWxlLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9kb2Mtb3Blbi13aGlsZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvYy1vcGVuLXdoaWxlLXBhcnNpbmcuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIFJFR1JFU1NJT046IGRvY3VtZW50Lm9w
ZW4gZG9lc24ndCBjbGVhciB0aGUgZG9jdW1lbnQuPC9wPgogCiA8c2NyaXB0PgotICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICBkb2N1bWVudC5vcGVuKCk7CiAgIGRvY3VtZW50LndyaXRlKCI8cD5U
aGlzIGxpbmUgc2hvdWxkIGFwcGVhciBzZWNvbmQuPC9wPiIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2hhcnNldC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNoYXJzZXQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2hh
cnNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogPGJvZHk+CiA8c2NyaXB0
PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQud3JpdGUoIjxwPkluaXRpYWw8L3A+Iik7CiBk
b2N1bWVudC53cml0ZSgiPHA+Jm5ic3A7ZG9jdW1lbnQuY2hhcnNldDogIiArIGRvY3VtZW50LmNo
YXJzZXQgKyAiPC9wPiIpOyAvLyBNU0lFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3Vt
ZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBhbGVydCgnUEFTUyAoanVzdCB0byBtYWtlIGV4cGVj
dGVkLnR4dCBub24tZW1wdHkpJyk7CiA8L3NjcmlwdD4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQg
ZG9lc24ndCBjcmFzaC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3Vt
ZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9k
b2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogRkFJTAogPGlm
cmFtZSBvbmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTsgZG9jdW1lbnQuY2xvc2UoKTsgZG9jdW1lbnQu
d3JpdGUoJzxpZnJhbWUgb25sb2FkPWRvY3VtZW50Lm9wZW4oKTtkb2N1bWVudC5jbG9zZSgpO2Rv
Y3VtZW50LndyaXRlKC9QQVNTLyk7ID4nKSI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1yZW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1yZW9wZW4uaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtcmVvcGVu
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24g
bWFpbkZ1bmMoKSB7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBk
b2N1bWVudC5vcGVuKCk7CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCJ3aWxsIG5vdCBiZSB2aXNp
YmxlPGJyPiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQt
d3JpdGUtcmVjdXJzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lv
bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogPC9zY3JpcHQ+CiA8Ym9keT4KIDxzY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9Eb2N1bWVudC9lYXJseS1kb2N1bWVudC1hY2Nlc3MuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9lYXJseS1kb2N1bWVudC1hY2Nlc3MuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZWFybHkt
ZG9jdW1lbnQtYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxo
ZWFkPgogICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgICAgICB9CiAKICAgICAgICAgbmV3V2luZG93ID0gd2luZG93Lm9wZW4oJ3Jlc291cmNlcy9l
YXJseS1kb2N1bWVudC1hY2Nlc3MtcG9wdXAuaHRtbCcpOwpAQCAtMTMsMTUgKzEzLDE1IEBACiAg
ICAgICAgICAgICBuZXdXaW5kb3cuZG9jdW1lbnQ7IC8vIGFjY2VzcyB0aGUgZG9jdW1lbnQKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gJ0ZB
SUw6IHdpbmRvdy5vcGVuIGZhaWxlZCB0byBtYWtlIGEgd2luZG93Lic7Ci0gICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGRvbmUoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIu
d2luZG93Q291bnQoKSA9PSAxKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgaWYgKHRlc3RSdW5uZXIud2luZG93Q291bnQoKSA9PSAxKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoImRvbmUoKSIsIDEwMCk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvb3Blbi13aXRoLXBlbmRpbmctbG9hZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L29wZW4td2l0aC1wZW5kaW5nLWxvYWQuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvb3Bl
bi13aXRoLXBlbmRpbmctbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
PHNjcmlwdD4NCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCiAgICAgDQogZnVuY3Rpb24gcnVuVGVzdCgpIHsN
CiAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsNCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC90aXRsZS1wcm9wZXJ0eS1jcmVhdGVz
LXRpdGxlLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC90aXRsZS1wcm9wZXJ0eS1jcmVhdGVzLXRpdGxlLWVsZW1lbnQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvdGl0bGUtcHJvcGVy
dHktY3JlYXRlcy10aXRsZS1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5
LDggQEAgZnVuY3Rpb24gZXhwZWN0KGV4cGVjdGVkLCBhY3R1YWwpCiAKIGZ1bmN0aW9uIHRlc3Qo
KQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBl
eHBlY3QoMCwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RpdGxlJykubGVuZ3RoKTsK
ICAgICBkb2N1bWVudC50aXRsZSA9ICdEb2N1bWVudCB0aXRsZSc7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9Eb2N1bWVudC90aXRsZS1wcm9wZXJ0eS1zZXQtbXVsdGlwbGUtdGltZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC90aXRsZS1wcm9w
ZXJ0eS1zZXQtbXVsdGlwbGUtdGltZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvdGl0bGUtcHJvcGVydHktc2V0LW11bHRpcGxlLXRpbWVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAgZnVuY3Rpb24gY3JlYXRlVGl0
bGVFbGVtZW50KHRpdGxlKQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgIHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2hlYWQnKVswXTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvQ2Fy
ZXRSYW5nZUZyb21Qb2ludC9iYXNpYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RvY3VtZW50L0NhcmV0UmFuZ2VGcm9tUG9pbnQvYmFzaWMuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvQ2FyZXRSYW5nZUZyb21Q
b2ludC9iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgICAgICB9
CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgX2xvZyA9ICIiOwogICAgICAgICBmdW5j
dGlvbiBsb2cobXNnKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvQ2FyZXRS
YW5nZUZyb21Qb2ludC9jYXJldFJhbmdlRnJvbVBvaW50LWluLXpvb20tYW5kLXNjcm9sbC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L0NhcmV0UmFuZ2VG
cm9tUG9pbnQvY2FyZXRSYW5nZUZyb21Qb2ludC1pbi16b29tLWFuZC1zY3JvbGwuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvQ2FyZXRSYW5n
ZUZyb21Qb2ludC9jYXJldFJhbmdlRnJvbVBvaW50LWluLXpvb20tYW5kLXNjcm9sbC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC02MywxMCArNjMsMTAgQEAKICAgICAKICAgICBvbmxvYWQgPSBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgIHZhciBub2RlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZpcnN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9D
YXJldFJhbmdlRnJvbVBvaW50L2hpdHRlc3QtcmVsYXRpdmUtdG8tdmlld3BvcnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9DYXJldFJhbmdlRnJvbVBv
aW50L2hpdHRlc3QtcmVsYXRpdmUtdG8tdmlld3BvcnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvQ2FyZXRSYW5nZUZyb21Qb2ludC9oaXR0
ZXN0LXJlbGF0aXZlLXRvLXZpZXdwb3J0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5
LDggQEAKICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJwaXhlbC10ZXN0
JykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgdmFyIGhhc1N1YnBpeGVsU3VwcG9ydCA9
IHIucmlnaHQgLSByLmxlZnQgPT0gNC41OwogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgZGVzY3JpcHRpb24oJ1RoaXMgY2hlY2tzIGZvciBwcm9wZXIgYmVoYXZpb3Ig
b2YgY2FyZXRSYW5nZUZyb21Qb2ludCBiZWZvcmUgYW5kIGFmdGVyIHNjcm9sbGluZy4nKTsgICAg
ICAgIAogCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICBldmVudFNlbmRlci56b29tUGFnZU91dCgp
OwogICAgIHRlc3RzV2l0aEJhc2VsaW5lKHRvcEJhc2VsaW5lLCBlbGVtZW50VG9wLmZpcnN0Q2hp
bGQsICJ6b29tIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3RBcmVhJyk7CiAgICAgICAgIGFyZWEucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChhcmVhKTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9DYXJldFJhbmdlRnJvbVBvaW50L3JlcGxhY2UtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L0NhcmV0UmFuZ2VGcm9tUG9pbnQvcmVwbGFj
ZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RvY3VtZW50L0NhcmV0UmFuZ2VGcm9tUG9pbnQvcmVwbGFjZS1lbGVtZW50Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAgICAgICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgICAgIHZhciBfbG9nID0gIiI7CiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2F0dHJpYnV0ZS11cHBlcmNhc2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2F0dHJpYnV0ZS11cHBlcmNh
c2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9hdHRyaWJ1dGUtdXBwZXJjYXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBA
IGZ1bmN0aW9uIHdyaXRlKHN0cikgewogfQogCiBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd0ZXN0Jyk7CiAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ2F0dHJfbmFtZScsICdhdHRyX3Zh
bHVlJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2ZpeGVkLXBvc2l0aW9u
LW9mZnNldC1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9F
bGVtZW50L2ZpeGVkLXBvc2l0aW9uLW9mZnNldC1wYXJlbnQuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQt
cGFyZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAgICAgfQogICAgIGZ1
bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgCiAgICAgICAgIHZhciBzdGF0aWsgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc3RhdGljJyk7CiAgICAgICAgIHZhciByZWxhdGl2ZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZWxhdGl2ZScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9n
ZXRCb3VuZGluZ0NsaWVudFJlY3QtZ2V0Q2xpZW50UmVjdHMtcmVsYXRpdmUtdG8tdmlld3BvcnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldEJvdW5k
aW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldEJvdW5k
aW5nQ2xpZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgPGRpdiBpZD0icHVzaGVyIj5UaGlz
IGJveCBpcyBoZXJlIHRvIGNyZWF0ZSBzY3JvbGxiYXJzLjwvZGl2PgogPC9kaXY+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogCkBAIC00Myw3ICs0Myw3IEBACiAgICAgc2hv
dWxkQmUoInVuU2Nyb2xsZWRCb3VuZGluZ0JveC5sZWZ0IC0gc2Nyb2xsZWRSaWdodEJvdW5kaW5n
Qm94LmxlZnQiLCAiNTAiKTsKICAgICBzaG91bGRCZSgidW5TY3JvbGxlZEJvdW5kaW5nQm94ZXNb
MF0ubGVmdCAtIHNjcm9sbGVkUmlnaHRCb3VuZGluZ0JveGVzWzBdLmxlZnQiLCAiNTAiKTsKIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGVzdEFyZWEnKTsKICAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOwog
ICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGll
bnRSZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9n
ZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vRWxlbWVudC9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOTYsOCArOTYsOCBAQAogPC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgZWxzZQogICAgICAgICBhbGVydCgiV0FSTklORzpcblRoaXMg
dGVzdCBtYXkgc2hvdyBib2d1cyBGQUlMdXJlcyBpZiBub3QgcnVuIGluIER1bXBSZW5kZXJUcmVl
LCBkdWUgdG8gcGxhdGZvcm0tc3BlY2lmaWMgZGlmZmVyZW5jZXMgaW4gZm9udCBtZXRyaWNzLiIp
OwogCkBAIC0xNjUsNyArMTY1LDcgQEAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzLmxl
bmd0aDsgKytpKQogICAgICAgICB0ZXN0KGkgKyAxLCB0ZXN0c1tpXSk7CiAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RBcmVhJyk7
CiAgICAgICAgIGFyZWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhcmVhKTsKICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldENsaWVudFJlY3RzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9nZXRDbGllbnRSZWN0cy5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2dldENs
aWVudFJlY3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAKIAogPC9kaXY+
CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIHRlc3RS
ZWN0czsKICAgICBmdW5jdGlvbiB0ZXN0Q2xpZW50UmVjdHMocmVjdHMsIGV4cGVjdGVkTnVtYmVy
T2ZSZWN0cykKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVz
dHMubGVuZ3RoOyArK2kpCiAgICAgICAgIHRlc3QoaSArIDEsIHRlc3RzW2ldKTsKIAotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFy
ZWEnKTsKICAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOwogICAgIH0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaG9zdG5hbWUtaG9zdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvaG9zdG5hbWUtaG9zdC5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2hv
c3RuYW1lLWhvc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPg0K
IDxzY3JpcHQ+DQogZnVuY3Rpb24gbG9hZCgpIHsNCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsN
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7DQogICAgIHN0ciA9ICIiOw0KICAgICBmb3IgKGk9MDtpPDEwO2krKykNCiAgICAgICBz
dHIgKz0gIkhvc3RuYW1lIGlzICIgKyBkb2N1bWVudC5saW5rc1tpXS5ob3N0bmFtZSArICIuIEhv
c3QgaXMgIiArIGRvY3VtZW50LmxpbmtzW2ldLmhvc3QgKyAiPGJyPiI7DQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRWxlbWVudC9pZC1pbi1kZWxldGVidXR0b24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2lkLWluLWRlbGV0ZWJ1dHRvbi5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2lkLWlu
LWRlbGV0ZWJ1dHRvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw3ICsxNCw3IEBAIHNlbCA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKIGxpID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxp
Iik7CiBzZWwuc2V0UG9zaXRpb24obGksIDApOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICBkZWxldGVCdXR0b24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiV2ViS2l0LUVkaXRpbmctRGVsZXRlLUJ1dHRvbiIpOwog
ICAgIHNob3VsZEJlTm9uTnVsbCgnZGVsZXRlQnV0dG9uJyk7CiB9CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9FbGVtZW50L2lkLWluLWZyYW1lc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9pZC1pbi1mcmFtZXNldC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2lkLWluLWZyYW1lc2V0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTQgKzUsMTQgQEAKICAgPGZyYW1lIG5hbWU9ImZyYW1l
MSIgc3JjPSJqYXZhc2NyaXB0OgogICAgIGZ1bmN0aW9uIGxvZyhzKQogICAgIHsKLSAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCiAgICAgICAgIGFsZXJ0KHMpOwogICAgICAgZWxzZQogICAgICAgICB0b3AuZnJhbWUxLmRv
Y3VtZW50LndyaXRlKCc8cD4nICsgcyArICc8L3A+Jyk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgIHRvcC5mcmFtZXNldC5yZW1vdmVDaGlsZCh0b3AuZnJhbWUyLmZy
YW1lRWxlbWVudCk7CiAgICAgbG9nKHRvcC5mcmFtZXNldC5jaGlsZHJlbi5sZW5ndGgpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9ub3JtYWxpemUtY3Jhc2guaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L25vcm1hbGl6ZS1jcmFzaC5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L25v
cm1hbGl6ZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHA+VGhp
cyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC48L3A+DQogPGRpdiBpZD0idGVzdDEi
PjwvZGl2Pg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogDQogdmFyIGVsZW0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKTsNCiANCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9FbGVtZW50L29mZnNldExlZnQtb2Zmc2V0VG9wLWJvZHktcXVpcmsuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L29mZnNldExlZnQtb2Zmc2V0VG9w
LWJvZHktcXVpcmsuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9vZmZzZXRMZWZ0LW9mZnNldFRvcC1ib2R5LXF1aXJrLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE2LDggKzE2LDggQEAKICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIHRlc3RGcmFtZSgic3RhdGljIik7CiAg
ICAgICAgICAgICB0ZXN0RnJhbWUoInJlbGF0aXZlIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9FbGVtZW50L29mZnNldExlZnQtb2Zmc2V0VG9wLWh0bWwuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L29mZnNldExlZnQtb2Zmc2V0VG9wLWh0bWwu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9v
ZmZzZXRMZWZ0LW9mZnNldFRvcC1odG1sLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1
LDggQEAKICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKICAgICAgICAgICAgIHRlc3RGcmFtZSgiY29udHJvbCIpOwogICAgICAgICAgICAgdGVzdEZy
YW1lKCJzdGF0aWMiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvb2Zmc2V0
VG9wLXRhYmxlLWNlbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9F
bGVtZW50L29mZnNldFRvcC10YWJsZS1jZWxsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvb2Zmc2V0VG9wLXRhYmxlLWNlbGwuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L29uY2xpY2stY2FzZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvb25jbGljay1jYXNlLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvb25jbGlj
ay1jYXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KIDxzY3Jp
cHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhJykuY2xpY2soKTsKIH0KIGZ1bmN0aW9uIE9uQ2xp
Y2soKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtYm91
bmRpbmctY2xpZW50LXJlY3QtaW4tZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QtaW4tZnJh
bWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWluLWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOSArNCw5IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdFJlY3RzKCkKIHsK
LSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmludGVybmFs
cykKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuaW50ZXJuYWxzKQogICAg
ICAgICByZXR1cm47Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogICAgIHZhciBkaXYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZnJhbWUiKS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
diIpOwogICAgIHZhciByZWN0ID0gZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1y
ZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY2Fs
ZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVj
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHNjcmlwdD4KIGZ1bmN0aW9u
IHRlc3RSZWN0cygpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwg
IXdpbmRvdy5pbnRlcm5hbHMpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93
LmludGVybmFscykKICAgICAgICAgcmV0dXJuOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAKICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOwogICAgIHZhciByZWN0ID0gZGl2
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxl
bWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy1pbi1mcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMtaW4t
ZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxl
bWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy1pbi1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC00LDkgKzQsOSBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3RSZWN0cygpCiB7Ci0gICAg
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmludGVybmFscykKICAgICAgICAg
cmV0dXJuOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZyYW1lIikuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsK
ICAgICB2YXIgcmVjdCA9IGRpdi5nZXRDbGllbnRSZWN0cygpWzBdOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGllbnQtcmVj
dHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMs
OSBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3RSZWN0cygpCiB7Ci0gICAgaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgaWYgKCF3aW5k
b3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmludGVybmFscykKICAgICAgICAgcmV0dXJuOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
diIpOwogICAgIHZhciByZWN0TGlzdCA9IGRpdi5nZXRDbGllbnRSZWN0cygpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY3JvbGxXaWR0aC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2Nyb2xsV2lkdGguaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY3JvbGxXaWR0aC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAKICAgICAgICAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9FbGVtZW50L3NldEF0dHJpYnV0ZS1jYXNlLWluc2Vuc2l0aXZpdHkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NldEF0dHJpYnV0ZS1jYXNlLWlu
c2Vuc2l0aXZpdHkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9zZXRBdHRyaWJ1dGUtY2FzZS1pbnNlbnNpdGl2aXR5Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTksOCArOSw4IEBACiAgICAgPC90YWJsZT4KIAogICAgIDxzY3JpcHQgbGFuZ3Vh
Z2U9ImphdmFzY3JpcHQiPgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm1nIikuc2V0QXR0cmlidXRlKCJjdXN0b21BdHRyIiwgIm5ldyB2YWx1ZSIpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zZXRBdHRyaWJ1dGUtd2l0aC1jb2xvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2V0QXR0cmlidXRl
LXdpdGgtY29sb24uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9zZXRBdHRyaWJ1dGUtd2l0aC1jb2xvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw4ICsxMCw4IEBAIGZ1bmN0aW9uIGRlYnVnKHN0cikgewogfQogCiBmdW5jdGlvbiBydW5U
ZXN0cygpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGVsZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cuZXhhbXBsZS5vcmcnLCAndGVzdCcpOwog
ICAgIGF0dHIgPSBlbGVtLnNldEF0dHJpYnV0ZSgnYmI6ZGRkZCcsICdhdHRyX3ZhbHVlJyk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hcmd1bWVudC10eXBlcy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
YXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvcwogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKE1hdGgu
YWJzKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNz
aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbih0cnVlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0
Q3VycmVudFBvc2l0aW9uKEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgpAQCAtMjIsNyArMjIsNyBAQCBQQVNTIG5hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgb2JqZWN0VGhyb3dpbmdFeGNlcHRp
b24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNT
IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwg
TWF0aC5hYnMpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIGxheW91dFRlc3RDb250cm9s
bGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQ
RV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgSW5maW5pdHkpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FsbGJhY2stdG8t
ZGVsZXRlZC1jb250ZXh0LWlubmVyMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQt
aW5uZXIxLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMjEgKzMsMjEgQEAKICAgPGhlYWQ+CiAgICAgPHNjcmlw
dD4KICAgICAgIGZ1bmN0aW9uIG1ha2VHZW9sb2NhdGlvblJlcXVlc3QoKSB7Ci0gICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3
OCwgLTAuMTY2LCAxMDApOworICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40Nzgs
IC0wLjE2NiwgMTAwKTsKICAgICAgICAgICB9CiAKICAgICAgICAgICAvLyBNYWtlIHJlcXVlc3Qg
ZnJvbSByZW1vdGUgZnJhbWUsIHRoaXMgZnJhbWUgd2lsbCBiZSBnb25lIGJ5IHRoZSB0aW1lIHRo
ZSBHZW9sb2NhdGlvbgogICAgICAgICAgIC8vIG9iamVjdCBhdHRlbXB0cyB0byBpbnZva2UgdGhl
IGNhbGxiYWNrLgogICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgYWxlcnQoJ1N1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKLSAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgIGFsZXJ0KCdFcnJvciBjYWxsYmFj
ayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwotICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICB9KTsKICAg
ICAgIH0KICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1yZW1vdGUtY29udGV4dC1pbm5lci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxs
YmFjay10by1yZW1vdGUtY29udGV4dC1pbm5lci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FsbGJhY2stdG8tcmVt
b3RlLWNvbnRleHQtaW5uZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKICAg
PGhlYWQ+CiAgICAgPHNjcmlwdD4KICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3
OCwgLTAuMTY2LCAxMDApOworICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40Nzgs
IC0wLjE2NiwgMTAwKTsKICAgICAgICAgICB9CiAgICAgICAgICAgd2luZG93LnBhcmVudC5vbklm
cmFtZVJlYWR5KCkKICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3Jlc291cmNlcy9yZW1vdmUtcmVtb3RlLWNvbnRleHQtaW4tZXJyb3ItY2FsbGJhY2stY3Jh
c2gtaW5uZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9yZXNvdXJjZXMvcmVtb3ZlLXJlbW90ZS1jb250ZXh0LWluLWVycm9yLWNhbGxiYWNrLWNy
YXNoLWlubmVyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3Jlc291cmNlcy9yZW1vdmUtcmVtb3RlLWNvbnRleHQtaW4tZXJyb3ItY2Fs
bGJhY2stY3Jhc2gtaW5uZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAg
PGhlYWQ+CiAgICAgPHNjcmlwdD4KICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKICAgICAgICAgICB3aW5kb3cucGFyZW50Lm9uSWZyYW1l
UmVhZHkoKQogICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL3dpbmRvdy1jbG9zZS1wb3B1cC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy93aW5kb3ct
Y2xvc2UtcG9wdXAuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL3dpbmRvdy1jbG9zZS1wb3B1cC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02LDkgKzYsOSBAQCB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwLjA7CiBmdW5jdGlv
biBsb2FkTmV4dCgpIHsKICAgICB2YXIgZ2VvbG9jYXRpb24gPSBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b247CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRp
dHVkZSwgbW9ja0xvbmdpdHVkZSwgbW9ja0FjY3VyYWN5KTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVl
KTsKKyAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRp
dHVkZSwgbW9ja0xvbmdpdHVkZSwgbW9ja0FjY3VyYWN5KTsKICAgICB9CiAKICAgICBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbih3aW5kb3cub3BlbmVyLmdvdFBvc2l0aW9uKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9hcmd1
bWVudC10eXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10
eXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB0ZXN0KCduYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0
Q3VycmVudFBvc2l0aW9uKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRydWUpOwogdGVzdCgn
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uKScs
IGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
TWF0aC5hYnMpJywgZmFsc2UpOwotdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24p
JywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bih0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiknLCBmYWxzZSk7CiB0ZXN0KCdu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHRydWUpJywgdHJ1ZSk7CiB0
ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKDQyKScsIHRydWUp
OwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihJbmZpbml0
eSknLCB0cnVlKTsKQEAgLTU0LDcgKzU0LDcgQEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQbwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihlbXB0eUZ1bmN0aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlKTsKIHRl
c3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIE1hdGguYWJzKScsIGZhbHNlKTsKLXRl
c3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKScsIGZhbHNl
KTsKK3Rlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlG
dW5jdGlvbiwgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pJywgZmFsc2UpOwog
dGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCB0cnVlKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgSW5maW5pdHkpJywg
dHJ1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvY2FsbGJhY2stZXhjZXB0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9jYWxsYmFjay1leGNlcHRpb24uanMJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9jYWxsYmFjay1leGNlcHRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBA
IHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsK
IHZhciBtb2NrQWNjdXJhY3kgPSAxMDA7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24o
dHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24obW9ja0xhdGl0dWRlLAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOwog
fSBlbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvY2xlYXItd2F0Y2gtaW52YWxpZC1pZC1jcmFzaC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvY2xlYXItd2F0Y2gtaW52YWxp
ZC1pZC1jcmFzaC5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2NsZWFyLXdhdGNoLWludmFsaWQtaWQtY3Jhc2guanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBmb3Ig
YSBjcmFzaCB3aGVuIGNsZWFyV2F0Y2goKSBpcyBjYWxsZWQgd2l0aCBhIHplcm8gSUQuPGJyPjxi
cj5XZSBjYWxsIGNsZWFyV2F0Y2goKSB3aXRoIGEgcmVxdWVzdCBpbiBwcm9ncmVzcyB0aGVuIG5h
dmlnYXRlIHRoZSBwYWdlLiBUaGlzIGFjY2Vzc2VzIHRoZSB3YXRjaGVycyBtYXAgZHVyaW5nIGNs
ZWFudXAgYW5kIHRyaWdnZXJzIHRoZSBjcmFzaC4gVGhpcyBwYWdlIHNob3VsZCBub3QgYmUgdmlz
aWJsZSB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcy4iKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbih0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOworICAgIHRl
c3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7
CiB9IGVsc2UKICAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhl
IExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIGRvY3VtZW50LmJvZHkub25sb2FkID0gZnVuY3Rp
b24oKSB7CiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZnVuY3Rpb24o
KSB7fSk7CiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2goMCk7Ci0gICAgbG9j
YXRpb24gPSAiZGF0YTp0ZXh0L2h0bWwsVEVTVCBDT01QTEVURTxzY3JpcHQ+aWYod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7PC9z
Y3JpcHQ+IjsKKyAgICBsb2NhdGlvbiA9ICJkYXRhOnRleHQvaHRtbCxURVNUIENPTVBMRVRFPHNj
cmlwdD5pZih3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7PC9zY3Jp
cHQ+IjsKIH0KIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1h
bGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWFs
bG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNz
aW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyICsxLDEyIEBACiBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIG11bHRpcGxlIHJlcXVl
c3RzIGFyZSB3YWl0aW5nIGZvciBwZXJtaXNzaW9uLCBubyBjYWxsYmFja3MgYXJlIGludm9rZWQg
dW50aWwgcGVybWlzc2lvbiBpcyBhbGxvd2VkLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40
NzgsIC0wLjE2NiwgMTAwKTsKIAogZnVuY3Rpb24gYWxsb3dQZXJtaXNzaW9uKCkgewogICAgIHBl
cm1pc3Npb25TZXQgPSB0cnVlOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0
cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwogfQogCiB2YXIgd2F0Y2hDYWxsYmFja0ludm9r
ZWQgPSBmYWxzZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tYWxsb3dlZC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNz
aW9uLWFsbG93ZWQuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tYWxsb3dlZC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSwxMiBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
d2hlbiBhIHBvc2l0aW9uIGlzIGF2YWlsYWJsZSwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVu
dGlsIHBlcm1pc3Npb24gaXMgYWxsb3dlZC4iKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4
LCAtMC4xNjYsIDEwMCk7CiAKIGZ1bmN0aW9uIGFsbG93UGVybWlzc2lvbigpIHsKICAgICBwZXJt
aXNzaW9uU2V0ID0gdHJ1ZTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1
ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKIH0KIAogbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZvci1t
dWx0aXBsZS1yZXF1ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC1mb3ItbXVs
dGlwbGUtcmVxdWVzdHMuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kZWxheWVkLXBlcm1pc3Npb24tZGVuaWVkLWZv
ci1tdWx0aXBsZS1yZXF1ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSwxMiBAQAog
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBtdWx0aXBsZSByZXF1ZXN0cyBhcmUgd2FpdGlu
ZyBmb3IgcGVybWlzc2lvbiwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGlsIHBlcm1pc3Np
b24gaXMgZGVuaWVkLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1
MS40NzgsIC0wLjE2NiwgMTAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cu
dGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAw
KTsKIAogZnVuY3Rpb24gZGVueVBlcm1pc3Npb24oKSB7CiAgICAgcGVybWlzc2lvblNldCA9IHRy
dWU7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uKGZhbHNlKTsKIH0KIAogdmFyIHdhdGNoQ2FsbGJhY2tJbnZva2VkID0gZmFsc2U7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXll
ZC1wZXJtaXNzaW9uLWRlbmllZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLWRlbmllZC5qcwko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTIgKzEsMTIgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gYSBwb3NpdGlvbiBp
cyBhdmFpbGFibGUsIG5vIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB1bnRpbCBwZXJtaXNzaW9uIGlz
IGRlbmllZC4iKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4
LCAtMC4xNjYsIDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RS
dW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CiAK
IGZ1bmN0aW9uIGRlbnlQZXJtaXNzaW9uKCkgewogICAgIHBlcm1pc3Npb25TZXQgPSB0cnVlOwot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihmYWxzZSk7CiB9CiAKIHZhciBlcnJvcjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kaXNjb25uZWN0ZWQtZnJhbWUtYWxyZWFkeS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
ZGlzY29ubmVjdGVkLWZyYW1lLWFscmVhZHkuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9kaXNjb25uZWN0ZWQtZnJh
bWUtYWxyZWFkeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIGRlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIG1hZGUgb24gYSBHZW9sb2NhdGlvbiBvYmpl
Y3QgYWZ0ZXIgaXRzIGZyYW1lIGhhcyBiZWVuIGRpc2Nvbm5lY3RlZCwgbm8gY2FsbGJhY2tzIGFy
ZSBtYWRlIGFuZCBubyBjcmFzaCBvY2N1cnMuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24odHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICB0ZXN0
UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOwog
fQogCiBmdW5jdGlvbiBvbkZpcnN0SWZyYW1lTG9hZGVkKCkgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Rpc2Nvbm5lY3RlZC1mcmFtZS1wZXJt
aXNzaW9uLWRlbmllZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVk
LmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVkLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQCBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVu
IGEgcmVxdWVzdCBpCiAKIC8vIFByaW1lIHRoZSBHZW9sb2NhdGlvbiBpbnN0YW5jZSBieSBkZW55
aW5nIHBlcm1pc3Npb24uIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHdlIGV4ZWN1dGUgdGhlCiAvLyBz
YW1lIGNvZGUgcGF0aCBmb3IgYm90aCBwcmVlbXB0aXZlIGFuZCBub24tcHJlZW10aXZlIHBlcm1p
c3Npb25zIHBvbGljaWVzLgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4
LCAtMC4xNjYsIDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKIH0gZWxzZQogICAgIGRl
YnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRy
b2xsZXInKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL2Rpc2Nvbm5lY3RlZC1mcmFtZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGlzY29ubmVjdGVkLWZyYW1lLmpzCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvZGlzY29ubmVjdGVkLWZyYW1lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgbWFkZSBvbiBh
IEdlb2xvY2F0aW9uIG9iamVjdCBhbmQgaXRzIEZyYW1lIGlzIGRpc2Nvbm5lY3RlZCBiZWZvcmUg
YSBjYWxsYmFjayBpcyBtYWRlLCB0aGUgZXJyb3IgY2FsbGJhY2sgaXMgaW52b2tlZCB3aXRoIHRo
ZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2UuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24odHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOwogfQog
CiBmdW5jdGlvbiBvbklmcmFtZUxvYWRlZCgpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9lcnJvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAgZGVzY3JpcHRpb24oIlRl
c3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbAogdmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2NrTWVz
c2FnZSA9ICJkZWJ1ZyI7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUs
IG1vY2tNZXNzYWdlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKIH0gZWxzZQogICAgIGRlYnVn
KCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xs
ZXInKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL21heGltdW0tYWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qcwkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0t
YWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw5IEBAIGZ1bmN0aW9uIGNoZWNrRXJy
b3IoZSkgewogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLCBtb2NrTG9u
Z2l0dWRlLCBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tMb25naXR1ZGUsIG1v
Y2tBY2N1cmFjeSk7CiB9IGVsc2UKICAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVu
IHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKQEAgLTQyLDggKzQyLDggQEAg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbgogCiBmdW5jdGlvbiB0ZXN0
WmVyb01heGltdW1BZ2UoKSB7CiAgICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBwcm92aWRlZCBi
eSB0aGUgbW9jayBzZXJ2aWNlLgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KCsrbW9ja0xhdGl0dWRlLCArK21vY2tMb25naXR1ZGUsICsrbW9ja0FjY3VyYWN5KTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJh
Y3kpOwogICAgIC8vIFRoZSBkZWZhdWx0IG1heGltdW1BZ2UgaXMgemVybywgc28gd2UgZXhwZWN0
IHRoZSB1cGRhdGVkIHBvc2l0aW9uIGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNoZWNr
UG9zaXRpb24ocCk7CkBAIC01Niw4ICs1Niw4IEBAIGZ1bmN0aW9uIHRlc3RaZXJvTWF4aW11bUFn
ZSgpIHsKIAogZnVuY3Rpb24gdGVzdE5vblplcm9NYXhpbXVtQWdlKCkgewogICAgIC8vIFVwZGF0
ZSB0aGUgbW9jayBzZXJ2aWNlIHRvIHJlcG9ydCBhbiBlcnJvci4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvciht
b2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogICAgIC8vIFRoZSBtYXhpbXVtQWdlIGlzIG5vbi16ZXJv
LCBzbyB3ZSBleHBlY3QgdGhlIGNhY2hlZCBwb3NpdGlvbiwgbm90IHRoZSBlcnJvciBmcm9tIHRo
ZSBzZXJ2aWNlLgogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZnVuY3Rpb24ocCkgewogICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL211bHRpcGxlLXJlcXVlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9tdWx0aXBsZS1yZXF1ZXN0cy5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL211bHRpcGxlLXJlcXVlc3RzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4
OwogdmFyIG1vY2tMb25naXR1ZGUgPSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwOwog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSwKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xh
dGl0dWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vY2tMb25naXR1ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKIH0gZWxzZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL25vLXBhZ2UtY2FjaGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL25v
LXBhZ2UtY2FjaGUuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9uby1wYWdlLWNhY2hlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDkgKzEsOSBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcGFnZXMgdGhhdCB1c2Ug
R2VvbG9jYXRpb24gYXJlIG5vdCBwdXQgaW4gdGhlIHBhZ2UgY2FjaGUuPGJyPjxicj5DdXJyZW50
bHksIEdlb2xvY2F0aW9uIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgcGFnZSBjYWNoZSBzbyBwYWdl
cyB0aGF0IHVzZSBHZW9sb2NhdGlvbiBhcmUgZXhwbGljaXRseSBwcmV2ZW50ZWQgZnJvbSBlbnRl
cmluZyB0aGUgY2FjaGUuIFRoaXMgdGVzdCBjaGVja3MgZm9yIGFjY2lkZW50YWwgZW5hYmxpbmcg
b2YgdGhlIHBhZ2UgQ2FjaGUgZm9yIEdlb2xvY2F0aW9uLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTU2IGZvciBkZXRhaWxzLiIpOwogCi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVu
V2luZG93cygpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVz
dCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbm90aW1l
ci1hZnRlci11bmxvYWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL25vdGltZXItYWZ0ZXItdW5sb2FkLmpzCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
bm90aW1lci1hZnRlci11bmxvYWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBubyB0aW1lcnMgd2lsbCB0cmlnZ2VyIGZvciBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24gb2JqZWN0IGFmdGVyIG9udW5sb2FkLiIpOwogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24odHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIuc2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwogCiBkb2N1bWVudC5ib2R5Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgewotICAgIGxvY2F0aW9uID0gImRhdGE6dGV4dC9odG1sLFlvdSBzaG91bGQgaGF2ZSBz
ZWVuIG9uZSB1bmxvYWQgYWxlcnQgYXBwZWFyLjxzY3JpcHQ+d2luZG93LnNldFRpbWVvdXQoJ2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsnLCAxMDApOzwvc2NyaXB0PiI7CisgICAgbG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0
bWwsWW91IHNob3VsZCBoYXZlIHNlZW4gb25lIHVubG9hZCBhbGVydCBhcHBlYXIuPHNjcmlwdD53
aW5kb3cuc2V0VGltZW91dCgnaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsnLCAxMDApOzwvc2NyaXB0PiI7CiB9CiAKIGRvY3VtZW50LmJvZHkub251bmxvYWQg
PSBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Nj
cmlwdC10ZXN0cy9wYWdlLXJlbG9hZC1jYW5jZWwtcGVybWlzc2lvbi1yZXF1ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
cGFnZS1yZWxvYWQtY2FuY2VsLXBlcm1pc3Npb24tcmVxdWVzdHMuanMJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wYWdl
LXJlbG9hZC1jYW5jZWwtcGVybWlzc2lvbi1yZXF1ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAt
OSw4ICs5LDggQEAgdmFyIGlzUmVsb2FkID0gZmFsc2U7CiBpZiAoIiNyZWxvYWQiID09IGxvY2F0
aW9uLmhhc2gpCiAgICAgaXNSZWxvYWQgPSB0cnVlOwogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbnVtUGVuZGluZ1JlcXVlc3RzID0gbGF5b3V0VGVzdENvbnRyb2xs
ZXIubnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIG51bVBlbmRpbmdSZXF1ZXN0cyA9IHRlc3RSdW5uZXIu
bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsKICAgICBzaG91
bGRCZSgnbnVtUGVuZGluZ1JlcXVlc3RzJywgJzAnKTsKIAogICAgIGlmIChpc1JlbG9hZCkKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNz
aW9uLWRlbmllZC1hbHJlYWR5LWNsZWFyLXdhdGNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1h
bHJlYWR5LWNsZWFyLXdhdGNoLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFk
eS1jbGVhci13YXRjaC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIGRlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IHdoZW4gR2VvbG9jYXRpb24gcGVybWlzc2lvbiBoYXMgYmVlbiBkZW5p
ZWQgcHJpb3IgdG8gYSBjYWxsIHRvIHdhdGNoUG9zaXRpb24sIGFuZCB0aGUgd2F0Y2ggaXMgY2xl
YXJlZCBpbiB0aGUgZXJyb3IgY2FsbGJhY2ssIHRoZXJlIGlzIG5vIGNyYXNoLiBUaGlzIGEgcmVn
cmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzIxMTEuIik7CiAKIC8vIFByaW1lIHRoZSBHZW9sb2NhdGlvbiBpbnN0YW5jZSBieSBkZW55aW5n
IHBlcm1pc3Npb24uCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0w
LjE2NiwgMTAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuc2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOwogfSBlbHNlCiAgICAgZGVidWco
J1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxl
cicpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5p
ZWQtYWxyZWFkeS1lcnJvci5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHkt
ZXJyb3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCB3aGVuIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gaGFzIGJlZW4gZGVuaWVkIHByaW9y
IHRvIGEgY2FsbCB0byBhIEdlb2xvY2F0aW9uIG1ldGhvZCwgdGhlIGVycm9yIGNhbGxiYWNrIGlz
IGludm9rZWQgd2l0aCBjb2RlIFBFUk1JU1NJT05fREVOSUVELCB3aGVuIHRoZSBHZW9sb2NhdGlv
biBzZXJ2aWNlIGVuY291bnRlcnMgYW4gZXJyb3IuIik7CiAKIC8vIFByaW1lIHRoZSBHZW9sb2Nh
dGlvbiBpbnN0YW5jZSBieSBkZW55aW5nIHBlcm1pc3Npb24uCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGZhbHNlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAg
ICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAx
MDApOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCkBAIC0yMiw4ICsyMiw4IEBAIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgp
CiB7CiAgICAgLy8gTWFrZSBhbm90aGVyIHJlcXVlc3QsIHdpdGggcGVybWlzc2lvbiBhbHJlYWR5
IGRlbmllZC4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcigyLCAndGVzdCcpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcigyLCAndGVzdCcpOwogCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoJ1N1Y2Nl
c3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5
LXN1Y2Nlc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktc3VjY2Vzcy5qcwkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktc3VjY2Vzcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSw5ICsxLDkgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gR2VvbG9jYXRp
b24gcGVybWlzc2lvbiBoYXMgYmVlbiBkZW5pZWQgcHJpb3IgdG8gYSBjYWxsIHRvIGEgR2VvbG9j
YXRpb24gbWV0aG9kLCB0aGUgZXJyb3IgY2FsbGJhY2sgaXMgaW52b2tlZCB3aXRoIGNvZGUgUEVS
TUlTU0lPTl9ERU5JRUQsIHdoZW4gdGhlIEdlb2xvY2F0aW9uIHNlcnZpY2UgaGFzIGEgZ29vZCBw
b3NpdGlvbi4iKTsKIAogLy8gUHJpbWUgdGhlIEdlb2xvY2F0aW9uIGluc3RhbmNlIGJ5IGRlbnlp
bmcgcGVybWlzc2lvbi4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwg
LTAuMTY2LCAxMDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5z
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CiB9IGVsc2UKICAgICBkZWJ1
ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9s
bGVyJyk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRl
bmllZC1zdG9wcy13YXRjaGVzLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtc3RvcHMt
d2F0Y2hlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAgZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgd2hlbiBHZW9sb2NhdGlvbgogCiAvLyBDb25maWd1cmUgdGhlIG1vY2sgR2VvbG9j
YXRpb24gc2VydmljZSB0byByZXBvcnQgYSBwb3NpdGlvbiB0byBjYXVzZSBwZXJtaXNzaW9uCiAv
LyB0byBiZSByZXF1ZXN0ZWQsIHRoZW4gZGVueSBpdC4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24oZmFsc2UpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAg
dGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAw
LjApOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCkBAIC0yNiw4ICsyNiw4IEBAIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1bmMKIAogICAgIC8vIFVwZGF0ZSB0aGUgbW9j
ayBHZW9sb2NhdGlvbiBzZXJ2aWNlIHRvIHJlcG9ydCBhIG5ldyBwb3NpdGlvbiwgdGhlbgogICAg
IC8vIHlpZWxkIHRvIGFsbG93IGEgY2hhbmNlIGZvciB0aGUgc3VjY2VzcyBjYWxsYmFjayB0byBi
ZSBpbnZva2VkLgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDU1LjQ3OCwg
LTAuMTY2LCAxMDApOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1NS40NzgsIC0wLjE2NiwgMTAwKTsKICAg
ICB3aW5kb3cuc2V0VGltZW91dChmaW5pc2hKU1Rlc3QsIDApOwogfSk7CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmll
ZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmll
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBH
ZW9sb2NhdGlvbiB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLCB1c2luZyB0aGUgbW9jayBzZXJ2
aWNlLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2
NiwgMTAwLjApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKIH0gZWxzZQogICAgIGRlYnVn
KCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xs
ZXInKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL3Bvc2l0aW9uLXN0cmluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcG9zaXRpb24tc3RyaW5nLmpzCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
cG9zaXRpb24tc3RyaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCB2YXIgbW9j
a0xhdGl0dWRlID0gNTEuNDc4OwogdmFyIG1vY2tMb25naXR1ZGUgPSAtMC4xNjY7CiB2YXIgbW9j
a0FjY3VyYWN5ID0gMTAwLjA7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9j
a0xhdGl0dWRlLAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOwogfSBlbHNl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVl
bnRyYW50LWVycm9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJh
bnQtZXJyb3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBAIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyAKIHZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01l
c3NhZ2UgPSAndGVzdCc7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUs
IG1vY2tNZXNzYWdlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKIH0gZWxzZQogICAgIGRlYnVn
KCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xs
ZXInKTsKIApAQCAtMzEsOCArMzEsOCBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uCiBmdW5jdGlvbiBjb250aW51ZVRlc3QoKSB7CiAgICAgbW9ja01lc3NhZ2UgKz0g
JyByZXBlYXQnOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUs
IG1vY2tNZXNzYWdlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKIAog
ICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkg
ewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3Rl
ZGx5Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcmVlbnRyYW50LXBlcm1pc3Npb24tZGVuaWVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtcGVybWlzc2lv
bi1kZW5pZWQuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtcGVybWlzc2lvbi1kZW5pZWQuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZWVu
dHJhbnQgY2FsbHMgdG8gR2VvbG9jYXRpb24gbWV0aG9kcyBmcm9tIHRoZSBlcnJvciBjYWxsYmFj
ayBkdWUgdG8gYSBQRVJNSVNTSU9OX0RFTklFRCBlcnJvciBhcmUgT0suIik7CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40
NzgsIC0wLjE2NiwgMTAwLjApOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90
IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LXN1Y2Nl
c3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL3JlZW50cmFudC1zdWNjZXNzLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LXN1Y2Nl
c3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1
MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAx
MDAuMDsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbih0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KG1vY2tMYXRpdHVkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2NrTG9uZ2l0dWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7CiB9IGVsc2UKQEAgLTMzLDggKzMz
LDggQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbgogfSk7CiAKIGZ1
bmN0aW9uIGNvbnRpbnVlVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbigrK21vY2tMYXRpdHVkZSwKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsr
bW9ja0xvbmdpdHVkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKyttb2NrQWNjdXJhY3kpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvc3VjY2Vzcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvc3VjY2Vzcy5qcwko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL3N1Y2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBAIHZhciBt
b2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBt
b2NrQWNjdXJhY3kgPSAxMDA7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9j
a0xhdGl0dWRlLAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOwogfSBlbHNl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGlt
ZW91dC1jbGVhci13YXRjaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC1jbGVhci13YXRjaC5qcwkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L3RpbWVvdXQtY2xlYXItd2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIGEgd2F0Y2ggdGltZXMgb3V0IGFuZCBpcyBjbGVh
cmVkIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrLCB0aGVyZSBpcyBubyBjcmFzaC4gVGhpcyBhIHJl
Z3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyMTExLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2
LCAxMDAuMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwLjApOwogCiB2YXIgZXJyb3I7
CiB2YXIgd2F0Y2hJZCA9IG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1bmN0
aW9uKCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL3RpbWVvdXQtemVyby5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91
dC16ZXJvLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgd2hlbiB0aW1lb3V0IGlzIHplcm8gKGFuZCBtYXhpbXVtQWdlIGlzIHRvbyksIHRo
ZSBlcnJvciBjYWxsYmFjayBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2l0aCBjb2RlIFRJTUVPVVQu
Iik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4w
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CiAKIHZhciBlcnJvcjsKIG5hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL3RpbWVvdXQuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00
LDkgKzQsOSBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwogdmFyIG1vY2tMb25naXR1ZGUg
PSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwLjA7CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Nr
QWNjdXJhY3kpOwogfSBlbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvdGltZXN0YW1wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lc3RhbXAuanMJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90
aW1lc3RhbXAuanMJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBAIHZhciBtb2NrTGF0aXR1
ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJh
Y3kgPSAxMDAuMDsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1
ZGUsIG1vY2tMb25naXR1ZGUsIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICB0
ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSwgbW9ja0xv
bmdpdHVkZSwgbW9ja0FjY3VyYWN5KTsKIH0KIAogdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGlt
ZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L3dhdGNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy93YXRjaC5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw5ICsyNSw5IEBAIGZ1bmN0aW9uIGNoZWNrRXJyb3IoZSkgewogICAgIGRlYnVnKCcn
KTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1v
Y2tMb25naXR1ZGUsIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSwgbW9ja0xvbmdpdHVk
ZSwgbW9ja0FjY3VyYWN5KTsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBi
ZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIApAQCAtMzYsMTMgKzM2
LDEzIEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1bmMKICAgICBzd2l0
Y2ggKHN0YXRlKyspIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgY2hlY2tQb3NpdGlv
bihwKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oKyttb2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdp
dHVkZSwgKyttb2NrQWNjdXJhY3kpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
MToKICAgICAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgIGNoZWNrUG9zaXRpb24o
cCk7CkBAIC01Niw4ICs1Niw4IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9u
KGZ1bmMKICAgICBzd2l0Y2ggKHN0YXRlKyspIHsKICAgICAgICAgY2FzZSAyOgogICAgICAgICAg
ICAgY2hlY2tFcnJvcihlKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNj
dXJhY3kpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUs
ICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBp
bnZva2VkIHVuZXhwZWN0ZWRseScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL3dpbmRvdy1jbG9zZS1jcmFzaC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2luZG93LWNsb3Nl
LWNyYXNoLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvd2luZG93LWNsb3NlLWNyYXNoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC00LDEwICs0LDEwIEBAIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGUgYXNzZXJ0aW9uIHRoYXQg
dGgKIAogdmFyIG90aGVyV2luZG93OwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VS
ZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOwogfSBlbHNlCiAgICAgdGVzdEZhaWxl
ZCgnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9s
bGVyJyk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC11bnNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11bnNldC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3ItZG93bmxvYWQtdW5zZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpAQCAtMjQsNyArMjQsNyBA
QCBmdW5jdGlvbiBjbGljayhlbG10KQogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICB2YXIg
c3RyaW5nID0gIjwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFkPjx0aXRsZT5UaXRsZTwvdGl0bGU+
PHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7IDwvIiArICJzY3JpcHQ+PC9oZWFkPjxib2R5PlBBU1M8L2JvZHk+
PHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7PC9zY3IiICsgImlwdD48L2h0bWw+IjsKKyAgICB2YXIgc3RyaW5n
ID0gIjwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFkPjx0aXRsZT5UaXRsZTwvdGl0bGU+PHNjcmlw
dD5pZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOyA8LyIgKyAi
c2NyaXB0PjwvaGVhZD48Ym9keT5QQVNTPC9ib2R5PjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTs8L3NjciIgKyAiaXB0PjwvaHRtbD4iOwogICAg
IHZhciBibG9iID0gbmV3IEJsb2IoW3N0cmluZ10sIHt0eXBlOiAidGV4dC9odG1sIn0pOwogICAg
IHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJsb2ItdXJsIik7CiAgICAgbGlu
ay5ocmVmID0gd2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9h
bmNob3ItZG93bmxvYWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsOSArMiw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCB0eXBlPSd0ZXh0L2ph
dmFzY3JpcHQnPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwv
aGVhZD4KQEAgLTI0LDcgKzI0LDcgQEAgZnVuY3Rpb24gY2xpY2soZWxtdCkKIAogZnVuY3Rpb24g
cnVuVGVzdCgpCiB7Ci0gICAgdmFyIHN0cmluZyA9ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVh
ZD48dGl0bGU+VGl0bGU8L3RpdGxlPjxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyA8LyIgKyAic2NyaXB0Pjwv
aGVhZD48Ym9keT5QQVNTPC9ib2R5PjxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOzwvc2NyIiArICJpcHQ+PC9o
dG1sPiI7CisgICAgdmFyIHN0cmluZyA9ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48dGl0
bGU+VGl0bGU8L3RpdGxlPjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsgPC8iICsgInNjcmlwdD48L2hlYWQ+PGJvZHk+UEFTUzwvYm9keT48c2Ny
aXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7PC9zY3Ii
ICsgImlwdD48L2h0bWw+IjsKICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtzdHJpbmddLCB7dHlw
ZTogInRleHQvaHRtbCJ9KTsKICAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJibG9iLXVybCIpOwogICAgIGxpbmsuaHJlZiA9IHdpbmRvdy53ZWJraXRVUkwuY3JlYXRlT2Jq
ZWN0VVJMKGJsb2IpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1ub2Rvd25sb2FkLXNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkBAIC0yNCw3ICsy
NCw3IEBAIGZ1bmN0aW9uIGNsaWNrKGVsbXQpCiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewotICAg
IHZhciBzdHJpbmcgPSAiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPlRpdGxlPC90
aXRsZT48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsgPC8iICsgInNjcmlwdD48L2hlYWQ+PGJvZHk+UEFTUzwv
Ym9keT48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTs8L3NjciIgKyAiaXB0PjwvaHRtbD4iOworICAgIHZhciBz
dHJpbmcgPSAiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPlRpdGxlPC90aXRsZT48
c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7IDwv
IiArICJzY3JpcHQ+PC9oZWFkPjxib2R5PlBBU1M8L2JvZHk+PHNjcmlwdD5pZiAod2luZG93LnRl
c3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOzwvc2NyIiArICJpcHQ+PC9odG1sPiI7
CiAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbc3RyaW5nXSwge3R5cGU6ICJ0ZXh0L2h0bWwifSk7
CiAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmxvYi11cmwiKTsKICAg
ICBsaW5rLmhyZWYgPSB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25s
b2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHR5
cGU9J3RleHQvamF2YXNjcmlwdCc+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpAQCAtMjQsNyArMjQsNyBAQCBmdW5jdGlvbiBjbGljayhlbG10KQog
CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICB2YXIgc3RyaW5nID0gIjwhZG9jdHlwZSBodG1s
PjxodG1sPjxoZWFkPjx0aXRsZT5UaXRsZTwvdGl0bGU+PHNjcmlwdD5pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7IDwvIiAr
ICJzY3JpcHQ+PC9oZWFkPjxib2R5PlBBU1M8L2JvZHk+PHNjcmlwdD5pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7PC9zY3Ii
ICsgImlwdD48L2h0bWw+IjsKKyAgICB2YXIgc3RyaW5nID0gIjwhZG9jdHlwZSBodG1sPjxodG1s
PjxoZWFkPjx0aXRsZT5UaXRsZTwvdGl0bGU+PHNjcmlwdD5pZiAod2luZG93LnRlc3RSdW5uZXIp
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOyA8LyIgKyAic2NyaXB0PjwvaGVhZD48Ym9keT5QQVNT
PC9ib2R5PjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTs8L3NjciIgKyAiaXB0PjwvaHRtbD4iOwogICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3N0
cmluZ10sIHt0eXBlOiAidGV4dC9odG1sIn0pOwogICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJsb2ItdXJsIik7CiAgICAgbGluay5ocmVmID0gd2luZG93LndlYmtpdFVS
TC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QXJlYUVsZW1lbnQvYXJlYS1pc2xpbmstZm9jdXMtbnVsbC1wdHItY3Jhc2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQXJlYUVsZW1lbnQvYXJlYS1pc2xpbmst
Zm9jdXMtbnVsbC1wdHItY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFyZWFFbGVtZW50L2FyZWEtaXNsaW5rLWZvY3VzLW51bGwtcHRyLWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAtLT4KIDxkaXYgaWQ9Imxv
ZyI+RkFJTDwvZGl2PgogPHNjcmlwdD4KLSAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYm
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgd2luZG93LnRlc3RSdW5uZXIg
JiYgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgb0FyZWEgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdhcmVhJyk7CiAgIG9BcmVhLmhyZWYgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEJ1dHRvbkVsZW1lbnQvY2hhbmdlLXR5cGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQnV0dG9uRWxlbWVudC9jaGFuZ2UtdHlwZS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQnV0dG9uRWxlbWVu
dC9jaGFuZ2UtdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05OCw4ICs5OCw4IEBAIGZ1bmN0
aW9uIHJ1blRlc3RzKCkKICAgICB3YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7CiAKICAg
ICBpZiAod2luZG93LmpzVGVzdElzQXN5bmMpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIGlmICh3aW5kb3cud2FzRmluaXNoSlNU
ZXN0Q2FsbGVkKQogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSBlbHNlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQnV0dG9uRWxlbWVudC92YWx1ZS9nZXRzZXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQnV0dG9uRWxlbWVudC92
YWx1ZS9nZXRzZXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEJ1dHRvbkVsZW1lbnQvdmFsdWUvZ2V0c2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTIsOCArMiw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotCWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLQkJd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCX0KIAl2YXIgYnV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2J1dHRvbicpOwogCWJ1dC52YWx1ZSA9ICdTdWNjZXNzJzsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0
bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRh
R3JpZENvbHVtbnMtYmFzaWMuaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICsz
LDkgQEAKICAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KICAgICA8ZGF0YWdyaWQgaWQ9InRl
c3QiPjwvZGF0YWdyaWQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMTEzLDggKzExMyw4
IEBACiAgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9u
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20t
YXR0cmlidXRlcy5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0
bWwtZGlzYWJsZWQJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0bWwtZGlz
YWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiAgICAgPHByZSBpZD0iY29uc29s
ZSI+PC9wcmU+CiAgICAgPGRhdGFncmlkIGlkPSJ0ZXN0Ij48ZGNvbCBpZD0iZnJvbXdyb25nIiBs
YWJlbD0iRnJvbXdyb25nIiB0eXBlPSJwcm9ncmVzcyI+PGRjb2wgaWQ9InN1YmplY3QiIGxhYmVs
PSJTdWJqZWN0IiB0eXBlPSJ0ZXh0Ij48L2RhdGFncmlkPgogICAgIDxzY3JpcHQ+Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gbG9nKG1z
ZykKQEAgLTgwLDggKzgwLDggQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhyZXcgZXhjZXB0
aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0
YUdyaWRDb2x1bW5zLWRvbS5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS5odG1sLWRp
c2FibGVkCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0
YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20uaHRtbC1kaXNhYmxlZAkod29ya2luZyBj
b3B5KQpAQCAtMyw5ICszLDkgQEAKICAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KICAgICA8
ZGF0YWdyaWQgaWQ9InRlc3QiPjxkY29sIGlkPSJmcm9tIiBsYWJlbD0iRnJvbSIgdHlwZT0idGV4
dCIgcHJpbWFyeT48ZGNvbCBpZD0ic3ViamVjdCIgbGFiZWw9IlN1YmplY3QiIHR5cGU9InRleHQi
PjwvZGF0YWdyaWQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMTIxLDggKzEyMSw4IEBA
CiAgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNp
Yy5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
YXRhR3JpZEVsZW1lbnQvRGF0YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWwtZGlzYWJsZWQJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1l
bnQvRGF0YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiAgICAgPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAgICAgPGRhdGFn
cmlkIGlkPSJ0ZXN0Ij48L2RhdGFncmlkPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cp
CiAgICAgICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaXZFbGVtZW50L2Fs
aWduL2dldHNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
aXZFbGVtZW50L2FsaWduL2dldHNldC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGl2RWxlbWVudC9hbGlnbi9nZXRzZXQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOSw4ICs5LDggQEAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkgewogfQogCiBmdW5j
dGlvbiB0ZXN0KCkgewotCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLQkJd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwlpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKwkJd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCX0KIAkvL3Rlc3Qg
Z2V0IGFsaWduCiAJdmFyIGRpdkwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2TGVmdCIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2FjdGl2ZS1lbGVtZW50
LWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1
bWVudC9hY3RpdmUtZWxlbWVudC1mcmFtZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2FjdGl2ZS1lbGVtZW50LWZyYW1lcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIGZ1bmN0aW9uIGFzc2VydEFjdGl2ZUVs
ZW1lbnQoZG9jLCBleHBlY3QKICAgICAgICAgcHJpbnQoJ0ZBSUw6ICcgKyBkZXNjcmliZShkb2Mp
ICsgJyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzICcgKyBkZXNjcmliZShkb2MuYWN0aXZlRWxl
bWVudCkgKyAnIGJ1dCBleHBlY3RlZCAnICsgZGVzY3JpYmUoZXhwZWN0ZWQpKTsKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIHByaW50KCdGb2N1c2luZyAnICsgZGVzY3JpYmUoaW5wdXQwKSk7CiBpbnB1
dDAuZm9jdXMoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9hY3Rp
dmVFbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERv
Y3VtZW50L2FjdGl2ZUVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2FjdGl2ZUVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMyw4ICszLDggQEAKICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAg
ICAgIGxvZyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTsKICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnb25lJykuZm9jdXMoKTsKICAgICAgICAgICAgICAgICBsb2coZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCArICIgaWQ6ICIgKyBkb2N1bWVudC5hY3RpdmVFbGVtZW50Lmlk
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9kb2N1bWVudC1vcGVu
LXJldHVybi12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEb2N1bWVudC9kb2N1bWVudC1vcGVuLXJldHVybi12YWx1ZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvZG9jdW1lbnQtb3Blbi1y
ZXR1cm4tdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIGRvY3VtZW50
Lm9wZW4oKSBlcnJvbmVvdXNseSByZXR1cm5zIHZvaWQgaW5zdGVhZCBvZiB0aGUgbmV3IERvY3Vt
ZW50LjwvcD4KIDxkaXYgaWQ9cmVzdWx0PkZBSUxVUkU8L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRG9jdW1lbnQvZG9jdW1lbnQtcGx1Z2lucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9kb2N1bWVudC1wbHVnaW5zLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9kb2N1bWVudC1w
bHVnaW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBAIGZ1bmN0aW9uIHByaW50
KG1lc3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgfQogCiAgICAgdmFyIHBhc3MgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2RvY3VtZW50LXNwZWNpYWwtcHJvcGVydGllcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9kb2N1
bWVudC1zcGVjaWFsLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2RvY3VtZW50LXNwZWNpYWwtcHJvcGVydGllcy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBAIG9iamVjdCBmb3IgdGhhdCBpZnJh
bWUuCiA8c2NyaXB0PgogZG9jdW1lbnQuY3VzdG9tPW5ldyBPYmplY3QoKTsKIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogCiA8ZGl2IHN0eWxlPSJ2aXNpYmlsaXR5OiBo
aWRkZW47IHdpZHRoOiAwcHg7IGhlaWdodDogMHB4OyI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRG9jdW1lbnQvZnJhbWVsZXNzLWxvY2F0aW9uLWJ1Z3ppbGxhMTA4MzcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvZnJhbWVsZXNz
LWxvY2F0aW9uLWJ1Z3ppbGxhMTA4MzcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2ZyYW1lbGVzcy1sb2NhdGlvbi1idWd6aWxsYTEw
ODM3Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogPC9zY3JpcHQ+CiA8ZnJhbWVzZXQgY29scz0iMSwxIj4KICAgICA8
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvZnJhbWVsZXNzLWxvY2F0aW9uLWJ1Z3ppbGxhMTA4MzctaWZy
YW1lLmh0bWwiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2dldC1p
ZnJhbWUtd2l0aC1pbnRlZ2VyLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRG9jdW1lbnQvZ2V0LWlmcmFtZS13aXRoLWludGVnZXItbmFtZS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvZ2V0
LWlmcmFtZS13aXRoLWludGVnZXItbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CiAgICAgaWYgKGRvY3VtZW50WycxJ10gJiYgZG9jdW1lbnRbMV0pCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvaGFzRm9jdXMtZnJhbWVsZXNzLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L2hhc0ZvY3Vz
LWZyYW1lbGVzcy1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRG9jdW1lbnQvaGFzRm9jdXMtZnJhbWVsZXNzLWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8cD5UaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBIVE1M
RG9jdW1lbnQuaGFzRm9jdXMoKSBvbiBhIGZyYW1lbGVzcyBIVE1MRG9jdW1lbnQgZG9lcyBub3Qg
Y3Jhc2guPC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IHZhciBuZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQo
IiIpOwogICAgIG5ld0RvYy5oYXNGb2N1cygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERvY3VtZW50L2hhc0ZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERvY3VtZW50L2hhc0ZvY3VzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9oYXNGb2N1cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC04LDkgKzgsOSBAQAogICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsb2coIkNvdWxkIG5vdCBsaWZ0IHJlc3RyaWN0
aW9ucyBvbiB3aW5kb3cuYmx1cigpLCB0aGlzIHBhcnQgb2YgdGhlIHRlc3Qgd2lsbCBmYWlsLlxu
IikKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICogT3BlbmluZyBhIHNlcGFyYXRl
IHdpbmRvdyBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgdGVzdGluZyBpbiBTYWZhcmkuCkBAIC02NCw4
ICs2NCw4IEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRvbmVIYW5kbGVy
KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgICAgICAgICB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvbmFtZWQtaXRlbS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9uYW1lZC1pdGVtLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9uYW1lZC1p
dGVtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHZhciBkaXYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdGRpdiIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERvY3VtZW50L29iamVjdC1ieS1uYW1lLW9yLWlkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L29iamVjdC1ieS1uYW1lLW9y
LWlkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
b2N1bWVudC9vYmplY3QtYnktbmFtZS1vci1pZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDgg
KzgsOCBAQCB3aGl0ZXNwYWNlIGFub255bW91cyB0ZXh0LiBBIFBBU1MgcmVzdWx0CiA8aHI+CiAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiAKIDxkaXYg
c3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsgd2lkdGg6IDBweDsgaGVpZ2h0OiAwcHg7Ij4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9vYmplY3QtYnktbmFtZS11bmtu
b3duLWNoaWxkLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRG9jdW1lbnQvb2JqZWN0LWJ5LW5hbWUtdW5rbm93bi1jaGlsZC1lbGVtZW50Lmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9v
YmplY3QtYnktbmFtZS11bmtub3duLWNoaWxkLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlv
biBydW5UZXN0KCkgewogICAgIGlmIChkb2N1bWVudC5hKQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERvY3VtZW50L3RpdGxlLWdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC90aXRsZS1nZXQuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3RpdGxlLWdldC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlKSB7CiB9
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotCQl3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCQl3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAJfQog
CiAJaWYgKGRvY3VtZW50LnRpdGxlID09ICJ0ZXN0IikgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERvY3VtZW50L3RpdGxlLXNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC90aXRsZS1zZXQuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3RpdGxlLXNldC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlKSB7CiB9
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotCQl3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCQl3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAJfQog
CiAJZG9jdW1lbnQudGl0bGUgPSAidGVzdCI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRG9jdW1lbnQvdXJsLWdldHNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEb2N1bWVudC91cmwtZ2V0c2V0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC91cmwtZ2V0c2V0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKIAkJcHJpbnQoIkdl
dDogZmFpbGVkIik7CiAJCQogCS8vdGVzdCBzZXQgVVJMCi0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotCQl3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAJfQogCXZhciBvcmlnVVJMID0gZG9jdW1lbnQuVVJMOwogCQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3dpZHRoLWFuZC1oZWlnaHQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvd2lkdGgtYW5kLWhlaWdo
dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9j
dW1lbnQvd2lkdGgtYW5kLWhlaWdodC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGlmICgnd2lk
dGgnIGluIGRvY3VtZW50ICYmICdoZWlnaHQnIGluIGRvY3VtZW50KQogICAgICAgICBkb2N1bWVu
dC53cml0ZSgiUEFTUy4gVGhlIGRvY3VtZW50LndpZHRoIGFuZCBkb2N1bWVudC5oZWlnaHQgcHJv
cGVydGllcyBhcmUgYWNjZXNzaWJsZSBmcm9tIEphdmFTY3JpcHQuIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvd3JpdGUtY2FsbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC93cml0ZS1jYWxsLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC93cml0ZS1j
YWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+
CiBmdW5jdGlvbiB0ZXN0KCkgewotCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LQkJd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwlpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKwkJd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCX0KIAog
CWRvY3VtZW50LndyaXRlKCJwYXNzZWQiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxEb2N1bWVudC93cml0ZS1tdWx0aXBsZS1jYWxscy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC93cml0ZS1tdWx0aXBsZS1jYWxscy5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvd3Jp
dGUtbXVsdGlwbGUtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxo
ZWFkPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotCQl3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAJfQogCiAJZG9jdW1lbnQud3JpdGUoIjxwcmU+Iik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvd3JpdGVsbi1jYWxsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3dyaXRlbG4tY2FsbC5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRG9jdW1lbnQvd3JpdGVs
bi1jYWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KIDxzY3Jp
cHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLQkJd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKwkJd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCX0K
IAogCWRvY3VtZW50LndyaXRlbG4oInN1Y2Nlc3MiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEb2N1bWVudC93cml0ZWxuLW11bHRpcGxlLWNhbGxzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3dyaXRlbG4tbXVsdGlwbGUtY2Fs
bHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERv
Y3VtZW50L3dyaXRlbG4tbXVsdGlwbGUtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4
ICsyLDggQEAKIDxoZWFkPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0JaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCQl3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl3aW5kb3cudGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAJfQogCiAJZG9jdW1lbnQud3JpdGVsbigiPHByZT4iKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEb2N1bWVudC9yZXNvdXJjZXMvZnJhbWVsZXNz
LWxvY2F0aW9uLWJ1Z3ppbGxhMTA4MzctaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3Jlc291cmNlcy9mcmFtZWxlc3MtbG9jYXRpb24t
YnVnemlsbGExMDgzNy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERvY3VtZW50L3Jlc291cmNlcy9mcmFtZWxlc3MtbG9jYXRpb24tYnVn
emlsbGExMDgzNy1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgRkFJ
TEVECiA8c2NyaXB0PgogICAgIHZhciBmID0gcGFyZW50LmZyYW1lc1sxXTsKICAgICB2YXIgZCA9
IGYuZG9jdW1lbnQ7Ci0gICAgZi5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCwlM0Nib2R5IG9u
bG9hZD0lMjJpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7JTIyJTNFZm9vJTNDL2JvZHklM0UnOworICAgIGYubG9jYXRpb24g
PSAnZGF0YTp0ZXh0L2h0bWwsJTNDYm9keSBvbmxvYWQ9JTIyaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTslMjIlM0Vmb28lM0MvYm9keSUzRSc7CiAgICAgdmFy
IHRlc3QgPSBkLmxvY2F0aW9uOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQn
KS5pbm5lckhUTUwgPSAnUEFTU0VEJzsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEVsZW1lbnQvaW5uZXJIVE1MLXNlbGVjdGlvbi1jcmFzaC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxFbGVtZW50L2lubmVySFRNTC1zZWxlY3Rp
b24tY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEVsZW1lbnQvaW5uZXJIVE1MLXNlbGVjdGlvbi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC01LDggKzUsOCBAQAogPGlucHV0IGlkPSJmaWVsZCIgdHlwZT0idGV4dCIgdmFsdWU9InNv
bWUgdGV4dCI+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ZpZWxkJykuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBpbmxpbmUnKTsK
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWVsZCcpLmZvY3VzKCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9zZXQtaW5uZXItb3V0ZXItb3B0aW1pemF0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEVsZW1lbnQvc2V0LWlu
bmVyLW91dGVyLW9wdGltaXphdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRWxlbWVudC9zZXQtaW5uZXItb3V0ZXItb3B0aW1pemF0aW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDggQEAgZnVuY3Rpb24gcnVuVGVzdChtYXJr
dXAsIHByb3BlcnR5TmFtZSwgbgogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicGFyZW50Iik7CiAgICAgcGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2Rp
ZmllZCIsIHNldE1vZGlmaWVkRmxhZywgdHJ1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRm9ybUVsZW1lbnQvYWRvcHQtYXNzZXJ0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L2Fkb3B0LWFzc2VydGlvbi5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRm9ybUVsZW1lbnQv
YWRvcHQtYXNzZXJ0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiA8L3A+
CiA8Zm9ybSBpZD0idGFyZ2V0Ij48L2Zvcm0+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgdmFyIG90aGVyRG9jdW1lbnQgPSBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTsKICAgICBvdGhlckRvY3VtZW50LmFkb3B0Tm9kZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEZvcm1FbGVtZW50L2Fzc29jaWF0ZWQtZWxlbWVudHMtYWZ0ZXItaW5kZXgtYXNz
ZXJ0aW9uLWZhaWwxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEZvcm1FbGVtZW50L2Fzc29jaWF0ZWQtZWxlbWVudHMtYWZ0ZXItaW5kZXgtYXNzZXJ0aW9uLWZh
aWwxLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxG
b3JtRWxlbWVudC9hc3NvY2lhdGVkLWVsZW1lbnRzLWFmdGVyLWluZGV4LWFzc2VydGlvbi1mYWls
MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogICAgICAgICAgIGRpdi5pbm5l
ckhUTUwgPSAnUEFTUyc7CiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYp
OwogICAgICAgfQotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJwYXNzKCkiPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L2Fzc29jaWF0ZWQtZWxlbWVudHMtYWZ0ZXItaW5kZXgt
YXNzZXJ0aW9uLWZhaWwyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEZvcm1FbGVtZW50L2Fzc29jaWF0ZWQtZWxlbWVudHMtYWZ0ZXItaW5kZXgtYXNzZXJ0aW9u
LWZhaWwyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxGb3JtRWxlbWVudC9hc3NvY2lhdGVkLWVsZW1lbnRzLWFmdGVyLWluZGV4LWFzc2VydGlvbi1m
YWlsMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogICAgICAgICAgIGRpdi5p
bm5lckhUTUwgPSAnUEFTUyc7CiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
aXYpOwogICAgICAgfQotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJwYXNzKCkiPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L2RvY3VtZW50LWRlYWN0aXZhdGlvbi1jYWxsYmFj
ay1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxGb3Jt
RWxlbWVudC9kb2N1bWVudC1kZWFjdGl2YXRpb24tY2FsbGJhY2stY3Jhc2guaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L2RvY3Vt
ZW50LWRlYWN0aXZhdGlvbi1jYWxsYmFjay1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSw5ICsxMSw5IEBACiAKICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0VG9wOwpAQCAtMzUsNyArMzUsNyBAQAogCiAgICAgICAgIGlmcmFtZS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGlmcmFtZSk7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MSGVhZEVsZW1lbnQvaGVhZC1saW5rLXN0eWxlLWhyZWYtY2hlY2suaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSGVhZEVsZW1lbnQvaGVhZC1saW5rLXN0eWxl
LWhyZWYtY2hlY2suaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEhlYWRFbGVtZW50L2hlYWQtbGluay1zdHlsZS1ocmVmLWNoZWNrLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAgZnVuY3Rpb24gbW92ZURpdihkdikgewogdmFyIG9I
ZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsKIAogZnVuY3Rp
b24gY3JlYXRlQW5kQXBwZW5kKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgICAgICB2YXIgb0VsbSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpCkBAIC0zNiw4ICszNiw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUFuZEFwcGVu
ZCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIHNldFRpbWVvdXQobW92ZURpdihv
RWxtKSwgMTAwMCk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiB9CiAgICAgICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEhlYWRFbGVtZW50L3Jlc291cmNlcy9oZWFkLWNoZWNrLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxIZWFkRWxlbWVudC9yZXNvdXJjZXMvaGVhZC1jaGVjay5q
cwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEhlYWRFbGVt
ZW50L3Jlc291cmNlcy9oZWFkLWNoZWNrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBA
QCB2YXIgbWF4VGVzdHMgPSA0OwogdmFyIGN1cnJlbnRUZXN0ID0gMTsKIHZhciBpZnJhbWU7CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0
QW5kTG9hZE5leHQoKSB7CkBAIC0yMyw4ICsyMyw4IEBAIGZ1bmN0aW9uIHRlc3RBbmRMb2FkTmV4
dCgpIHsKICAgICBlbHNlIHsKICAgICAgICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CiAgICAgICAgIGRlYnVnKCc8c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4n
KTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MSHRtbEVsZW1lbnQvZHVwbGljYXRlLWh0bWwtZWxlbWVudC1jcmFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxIdG1sRWxlbWVudC9kdXBsaWNhdGUt
aHRtbC1lbGVtZW50LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxIdG1sRWxlbWVudC9kdXBsaWNhdGUtaHRtbC1lbGVtZW50LWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAgICAgCiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwogICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LnBhcmVudEVsZW1lbnQp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEh0bWxFbGVtZW50L3NldC12ZXJzaW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEh0bWxFbGVtZW50
L3NldC12ZXJzaW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxIdG1sRWxlbWVudC9zZXQtdmVyc2lvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
LDggKzQsOCBAQAogVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBIVE1MSHRtbEVsZW1lbnQ6
OnZlcnNpb24gc2V0dGFibGUuPC9wPgogWW91IHNob3VsZCBzZWUgMiBsaW5lcyB3aXRoICJTVUND
RVNTIiBiZWxvdzoKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gY2hlY2tFeHBl
Y3RlZChhY3R1YWwsIGV4cGVjdGVkKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEltYWdlRWxlbWVudC9jb25zdHJ1Y3Rvci1tdXRhdGlvbi1ldmVudC1kaXNwYXRjaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvY29uc3Ry
dWN0b3ItbXV0YXRpb24tZXZlbnQtZGlzcGF0Y2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9jb25zdHJ1Y3Rvci1tdXRhdGlv
bi1ldmVudC1kaXNwYXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogICAg
ICAgICAKICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAg
ICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLCBsaXN0
ZW4sIHRydWUpOwogICAgICAgICAgICAgbmV3IEltYWdlKDEsIDEpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9pbWFnZS1sb2FkLWNyb3NzLWRvY3VtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9p
bWFnZS1sb2FkLWNyb3NzLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2UtbG9hZC1jcm9zcy1kb2N1bWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxNSArMTYsMTUgQEAgZnVuY3Rpb24gZXZlcnl0
aGluZ0xvYWRlZCgpCiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5u
ZXJIVE1MID0gIlBBU1M6IFRlc3QgY29tcGxldGUgYW5kIHBhc3NlZCB1bmxlc3MgYSBzdWJzZXF1
ZW50IHRlc3QgY3Jhc2hlcy4iOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAK
IGZ1bmN0aW9uIGRvY3VtZW50TG9hZGVkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgaXNEb2N1bWVu
dExvYWRlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVt
ZW50L2ltYWdlLWxvYWRpbmctZ2MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2ltYWdlLWxvYWRpbmctZ2MuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9pbWFnZS1sb2Fk
aW5nLWdjLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxzY3Jp
cHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAgICAgCiAgICAgdmFyIGltYWdl
ID0gbmV3IEltYWdlKCk7CkBAIC0xMSw4ICsxMSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAg
ICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgCiAg
ICAgaW1hZ2Uuc3JjID0gJ3Jlc291cmNlcy9ibHVlX3JlY3QuanBnJwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9pbWFnZS1sb25nZGVzYy1hYnNvbHV0ZS11cmwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50
L2ltYWdlLWxvbmdkZXNjLWFic29sdXRlLXVybC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2ltYWdlLWxvbmdkZXNjLWFic29s
dXRlLXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBACiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgCiAgICAgICAgIGRvY3VtZW50LmltYWdlc1sidGVzdCJdLmxvbmdEZXNj
ID0gInRlc3QtZGVzY3JpcHRpb24uaHRtbCI7CiAgICAgICAgICAgICAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2UtbmF0dXJhbC13aWR0aC1oZWlnaHQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50
L2ltYWdlLW5hdHVyYWwtd2lkdGgtaGVpZ2h0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2UtbmF0dXJhbC13aWR0aC1o
ZWlnaHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxzY3JpcHQ+CiBmdW5j
dGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
CiAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKICAg
ICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2Utc3Jj
LWFic29sdXRlLXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxJbWFnZUVsZW1lbnQvaW1hZ2Utc3JjLWFic29sdXRlLXVybC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2ltYWdlLXNyYy1h
YnNvbHV0ZS11cmwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksOCArMTksOCBAQAogCX0KIAog
CWZ1bmN0aW9uIGluaXQoKSB7Ci0JCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0J
CQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisJCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKwkJCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCQogCQlJY29uSW1hZ2VzID0gbmV3
IEFycmF5KCk7CiAJCUljb25JbWFnZXNbImdyZXkiXSA9IG5ldyBJbWFnZSgxMjksMzUpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9pbWFnZS13aXRob3V0LXJl
bmRlcmVyLXdpZHRoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEltYWdlRWxlbWVudC9pbWFnZS13aXRob3V0LXJlbmRlcmVyLXdpZHRoLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2Ut
d2l0aG91dC1yZW5kZXJlci13aWR0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIGltZyA9IG5ldyBJbWFnZSgpOyAKIGltZy53
aWR0aDsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTElucHV0RWxl
bWVudC9jbG9uZS1pbnB1dC1jaGVja2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9jbG9uZS1pbnB1dC1jaGVja2VkLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvY2xv
bmUtaW5wdXQtY2hlY2tlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQAogPC9k
aXY+CiA8c2NyaXB0PgogCi12YXIgbGMgPSB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXI7Cit2
YXIgbGMgPSB3aW5kb3cudGVzdFJ1bm5lcjsKIGlmIChsYykgewogICAgIGxjLmR1bXBBc1RleHQo
KTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvY2xvbmVk
LWlucHV0LWNoZWNrZWQtc3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MSW5wdXRFbGVtZW50L2Nsb25lZC1pbnB1dC1jaGVja2VkLXN0YXRlLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQv
Y2xvbmVkLWlucHV0LWNoZWNrZWQtc3RhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICsz
LDkgQEAKIEFzc2VydGlvbiBmYWlsdXJlIGluIENoZWNrZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1
dHRvbiB3aGVuIHVzaW5nIGpRdWVyeSAxLjQuMS4gQWxzbyB0ZXN0cyBhY3R1YWwKIGJlaGF2aW9y
IHRoZSBjcmFzaGluZyBqUXVlcnkgd2FzIHRlc3Qgd2FzIGNoZWNraW5nIGZvci48L3A+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24g
Z2MoKQpAQCAtNTYsOCArNTYsOCBAQCB0cnkgewogCiAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKICAgICAgICAgZ2MoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfSwgMCk7CiB9IGNhdGNoIChleCkgewogICAgIGRvY3VtZW50LndyaXRlKCJG
QUlMOiAiICsgZXgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTElucHV0RWxlbWVu
dC9pbnB1dC1jaGVja2VkLXJlc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTElucHV0RWxlbWVudC9pbnB1dC1jaGVja2VkLXJlc2V0Lmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvaW5wdXQt
Y2hlY2tlZC1yZXNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBAIGJvdGgg
YSByZXNldCBpbnB1dCBjb250cm9sIGFuZCBhIHJlc2V0IGIKIDxwPllvdSBzaG91bGQgc2VlIGZv
dXIgZWxlbWVudCBJRHMgYmVsb3csIGFuZCB0aGUgd29yZCAiU1VDQ0VTUyIgdHdpY2UgYWZ0ZXIg
ZWFjaDo8L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHZhciBpbnB1dFJlc2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0UmVzZXQiKTsKIHZhciBidXR0b25SZXNldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b25SZXNldCIpOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L2lucHV0LWhpZGRlbi12YWx1ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvaW5wdXQtaGlk
ZGVuLXZhbHVlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxJbnB1dEVsZW1lbnQvaW5wdXQtaGlkZGVuLXZhbHVlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiAgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgog
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHZhciBmcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJtIik7CiAgICAg
ICAgICAgICB2YXIgdGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGYnKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvaW5wdXQtc2xpZGVyLXVwZGF0ZS1z
dHlsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW5wdXRF
bGVtZW50L2lucHV0LXNsaWRlci11cGRhdGUtc3R5bGVkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvaW5wdXQtc2xpZGVyLXVw
ZGF0ZS1zdHlsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDE2IEBAIHZhbHVl
IGlzIHVwZGF0ZWQuCiAKICovCiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiBydW5U
ZXN0KCkKIHsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzbGlkZXInKS52YWx1ZSA9IDEwMDsKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMCk7CiB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvaW5wdXQtc2xpZGVyLXVwZGF0ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQv
aW5wdXQtc2xpZGVyLXVwZGF0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L2lucHV0LXNsaWRlci11cGRhdGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtOSwxNiArOSwxNiBAQCB2YWx1ZSBpcyB1cGRhdGVkLgogCiAqLwogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CiAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpCiAgICAgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xp
ZGVyJykudmFsdWUgPSAxMDA7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0sIDApOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
SW5wdXRFbGVtZW50L2lucHV0LXRleHQtcmVzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L2lucHV0LXRleHQtcmVzZXQuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9p
bnB1dC10ZXh0LXJlc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAgdXNl
ZCBmb3IgdGhvc2UuKTwvcD4KIDxwPllvdSBzaG91bGQgc2VlIHNpeCBlbGVtZW50IElEcyBiZWxv
dywgYW5kIHRoZSB3b3JkICJTVUNDRVNTIiB0d2ljZSBhZnRlciBlYWNoOjwvcD4KIAogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogdmFyIGlucHV0UmVzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiaW5wdXRSZXNldCIpOwogdmFyIGJ1dHRvblJlc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImJ1dHRvblJlc2V0Iik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1
dEVsZW1lbnQvc2l6ZS1hcy1udW1iZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L3NpemUtYXMtbnVtYmVyLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvc2l6ZS1hcy1u
dW1iZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgVGhpcyB0ZXN0cyB0byBt
YWtlIHN1cmUgdGhhdCBIVE1MSW5wdXRFbAogPC9wPgogWW91IHNob3VsZCBzZWUgMiBsaW5lcyB3
aXRoICJTVUNDRVNTIiBiZWxvdzoKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24g
Y2hlY2tFeHBlY3RlZChhY3R1YWwsIGV4cGVjdGVkKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExhYmVsRWxlbWVudC9jbGljay1sYWJlbC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMYWJlbEVsZW1lbnQvY2xpY2stbGFiZWwuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExhYmVsRWxlbWVudC9j
bGljay1sYWJlbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIGZ1bmN0aW9u
IGRpc3BhdGNoQ2xpY2tFdmVudCh0YXJnZXQpIHsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBsYWJlbDEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbGFiZWwxJyk7CiAgICAgZGlzcGF0Y2hDbGlja0V2ZW50KGxhYmVs
MSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGFiZWxFbGVtZW50L2ZvY3VzLWxh
YmVsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExhYmVsRWxl
bWVudC9mb2N1cy1sYWJlbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGFiZWxFbGVtZW50L2ZvY3VzLWxhYmVsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiA8c2NyaXB0PgogCiBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGxhYmVsMSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsYWJlbDEnKTsKICAgICBsYWJlbDEuZm9jdXMoKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMYWJlbEVsZW1lbnQvZm9ybS90ZXN0MS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMYWJlbEVsZW1lbnQvZm9ybS90ZXN0MS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGFiZWxFbGVt
ZW50L2Zvcm0vdGVzdDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAKICAgICAg
ICAgfQogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZih3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAg
ICAgbGFiZWxJbnNpZGVGb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxhYmVsSW5zaWRl
Rm9ybSIpOwogICAgICAgICAgICAgbGFiZWxOb3RJbnNpZGVGb3JtID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxhYmVsTm90SW5zaWRlRm9ybSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L2NhY2hlZHJlc291cmNlLXR5cGVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2NhY2hlZHJlc291cmNlLXR5
cGVzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9jYWNoZWRyZXNvdXJjZS10eXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiA8L3NjcmlwdD4KIDxsaW5rIHJl
bD0ic3VicmVzb3VyY2UiIGhyZWY9InJlc291cmNlcy9kb2VzLW5vdC1leGlzdC5qcGciLz4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNv
dXJjZS10ZXN0LW5vbmV4aXN0ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3Qtbm9uZXhpc3Rl
bnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3Qtbm9uZXhpc3RlbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTYsMTQgKzE2LDE0IEBAIGZ1bmN0aW9uIGRuZV9vbmVycm9yKCkKICAg
ICArK2RuZV9lcnJvcl9jb3VudDsKICAgICBpZiAoZG5lX2Vycm9yX2NvdW50ID09IDIpIHsKICAg
ICAgICAgbG9nKCJTVUNDRVNTLiAgVHdvIGVycm9ycy4iKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJl
c3BvbnNlTUlNRVR5cGVzKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CiB9CiA8L3NjcmlwdD4K
IDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFuIGltYWdlIHdoaWNoIGlzIHByZWZldGNoZWQs
IGFuZCB3aGljaCBpcyBhbHNvIGNvbnRhaW5lZCBhcyBhCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1z
dWJyZXNvdXJjZS10ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJjZS10ZXN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE2LDE0ICsxNiwxNCBAQCBmdW5jdGlvbiBuaWNrX29ubG9hZCgpCiAg
ICAgKytuaWNrX2xvYWRfY291bnQ7CiAgICAgaWYgKG5pY2tfbG9hZF9jb3VudCA9PSAyKSB7CiAg
ICAgICAgIGxvZygiU1VDQ0VTUy4gIFR3byBsb2Fkcy4iKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJl
c3BvbnNlTUlNRVR5cGVzKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CiB9CiA8L3NjcmlwdD4K
IDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFuIGltYWdlIHdoaWNoIGlzIHByZWZldGNoZWQs
IGFuZCB3aGljaCBpcyBhbHNvIGNvbnRhaW5lZCBhcyBhCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvb25sb2FkLWNvbXBsZXRpb24tdGVzdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9vbmxvYWQtY29tcGxl
dGlvbi10ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9vbmxvYWQtY29tcGxldGlvbi10ZXN0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTksOCArOSw4IEBAIGlmIChuaWNrLm5hdHVyYWxXaWR0aCA9PSAzMjAgJiYgbmljay5u
YXQKICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlNVQ0NFU1MuIjsKIGVsc2UKICAgICByZXN1bHQu
aW5uZXJIVE1MID0gIkZBSUxVUkUhIjsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8Ym9k
eSBvbmxvYWQ9InJ1bnRlc3QoKSI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtYmVmb3JlbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1iZWZvcmVsb2FkLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1iZWZvcmVsb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0K
IDwvc2NyaXB0PgogPGh0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJlZmV0Y2gtZGV0YWNoZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZGV0YWNoZWQuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LWRldGFjaGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8Ym9keT4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPGh0bWw+CiA8cD5UaGlzIHRlc3QgcGFz
c2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2guPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9uZXJyb3IuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25lcnJvci5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
cHJlZmV0Y2gtb25lcnJvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEyICs1LDEyIEBACiBm
dW5jdGlvbiBkb25lKCkKIHsKICAgICB0ZXN0UGFzc2VkKCdvbmVycm9yIHdhcyBjYWxsZWQnKTsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTIgKzEwLDEy
IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgbG9nKCJU
RVNUIFBBU1NFRC4iKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICB9Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtdG9vLW1hbnkt
Y2xpZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC10b28tbWFueS1jbGllbnRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC10b28tbWFu
eS1jbGllbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE0ICsyMSwxNCBAQCBmdW5jdGlv
biBtYW55X2xpbmtfdXBkYXRlcyhpdGVyKSB7CiAKIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgdGVz
dFBhc3NlZCgid2UgZGlkbid0IGNyYXNoLiIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7IAotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOyAKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IH0KIDwvc2NyaXB0PgogPHA+VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIHNpbmdsZSBwcmVm
ZXRjaCBlbGVtZW50IGlzIG5vdCBhIGNsaWVudCBvZiBtdWx0aXBsZSBjYWNoZWRyZXNvdXJjZXMg
YXQgdGhlIHNhbWUgdGltZTsgYnkgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsMTIgKzcsMTIgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKIH0KIGZ1bmN0
aW9uIHByZWZldGNoX29ubG9hZCgpIHsKICAgICBsb2coIlNVQ0NFU1MhICBwcmVmZXRjaCBvbmxv
YWQgY2FsbGVkLiIpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVz
KCk7CiB9CiA8L3NjcmlwdD4KIDxodG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZXJlbmRlci1yZW1vdmUtYWZ0ZXItc3RvcC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVyZW5kZXItcmVtb3Zl
LWFmdGVyLXN0b3AuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZXJlbmRlci1yZW1vdmUtYWZ0ZXItc3RvcC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHNjcmlwdD4KIAogZnVuY3Rpb24gZG9uZSgpIHsK
LSAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgIH0KIH0KIApAQCAtMjIsOSArMjIsOSBA
QCBmdW5jdGlvbiBuYXZpZ2F0ZUlGcmFtZVRoZW5SZW1vdmVMaW5rKCkgCiAgICAgaWZyYW1lLmNv
bnRlbnRXaW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2VtcHR5Lmh0bWwiOwogfQogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3VicmVzb3VyY2UuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3Vi
cmVzb3VyY2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTIg
KzQsMTIgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBwcmVmZXRjaF9vbmxvYWQoKSB7CiAgICAgdGVz
dFBhc3NlZCgnb25sb2FkIGNhbGxlZCEnKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VSZXNw
b25zZU1JTUVUeXBlcygpOwogfQogPC9zY3JpcHQ+CiA8aHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVz
b3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxp
dGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBzaG91bGRDb21wdXRlZENvbG9yT2ZFbGVtZW50QmVF
cXVhbFRvUkdCU3RyaW5nKGVsZW1lbnQsIGV4cGVjdGVkQ29sb3IpCkBAIC01Nyw2ICs1Nyw2IEBA
IGZ1bmN0aW9uIHRlc3RGYWlsZWRBbmROb3RpZnlEb25lKG1lc3NhZ2UKIAogZnVuY3Rpb24gdGVz
dEZpbmlzaGVkKCkKIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxNZXRhRWxlbWVudC9tZXRhLWF0dHJpYnV0ZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0YUVsZW1lbnQvbWV0YS1hdHRyaWJ1dGVzLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRhRWxl
bWVudC9tZXRhLWF0dHJpYnV0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAK
IDxib2R5PgogWW91IHNob3VsZCBzZWUgNSBsaW5lcyB3aXRoICJTVUNDRVNTIiBiZWxvdzoKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gY2hlY2tFeHBlY3RlZChhY3R1YWwsIGV4
cGVjdGVkKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9t
ZXRlci1hcHBlYXJhbmNlcy1jYXBhY2l0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItYXBwZWFyYW5jZXMtY2FwYWNpdHkuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE1ldGVyRWxl
bWVudC9tZXRlci1hcHBlYXJhbmNlcy1jYXBhY2l0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSw4ICsxMSw4IEBACiAgIGxpOm50aC1jaGlsZChvZGQpIHsgYmFja2dyb3VuZDogI2VlZTsgfQog
PC9zdHlsZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWFw
cGVhcmFuY2VzLXJhdGluZy1yZWxldmFuY3kuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWFwcGVhcmFuY2VzLXJhdGluZy1yZWxl
dmFuY3kuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TE1ldGVyRWxlbWVudC9tZXRlci1hcHBlYXJhbmNlcy1yYXRpbmctcmVsZXZhbmN5Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAKICAgbGk6bnRoLWNoaWxkKG9kZCkgeyBiYWNr
Z3JvdW5kOiAjZWVlOyB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRl
ckVsZW1lbnQvbWV0ZXItZWxlbWVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC1jcmFzaC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50
L21ldGVyLWVsZW1lbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxNSArNSwxNSBA
QAogIH0gIAogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5pbm5lckhUTUw9IlBBU1MiOwotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKIDwvc2NyaXB0
PgogPHNwYW4gaWQ9InRlc3QiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE1ldGVy
RWxlbWVudC9tZXRlci1lbGVtZW50LWZvcm0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLWVsZW1lbnQtZm9ybS5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21l
dGVyLWVsZW1lbnQtZm9ybS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogCiA8Ym9keT4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVu
dC1yZXBhaW50LW9uLXVwZGF0ZS12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItZWxlbWVudC1yZXBhaW50LW9uLXVwZGF0
ZS12YWx1ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MTWV0ZXJFbGVtZW50L21ldGVyLWVsZW1lbnQtcmVwYWludC1vbi11cGRhdGUtdmFsdWUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQAogPG1ldGVyIGlkPSJuYXRpdmUiIHZh
bHVlPSIwIiBtaW49IjAiIG1heD0iMTAwIj48L21ldGVyPgogPG1ldGVyIGlkPSJzaGFkb3ciIHZh
bHVlPSIwIiBtaW49IjAiIG1heD0iMTAwIiBzdHlsZT0iLXdlYmtpdC1hcHBlYXJhbmNlOiBub25l
OyI+PC9tZXRlcj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIGRvY3VtZW50LmJvZHku
b25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuYXRpdmUiKS52YWx1ZSA9IDUwOwog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhZG93IikudmFsdWUgPSA1MDsKICAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0s
IDApOwogICAgIH0sIDUwKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRl
ckVsZW1lbnQvbWV0ZXItZWxlbWVudC13aXRoLWNoaWxkLWNyYXNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50LXdp
dGgtY2hpbGQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1lbGVtZW50LXdpdGgtY2hpbGQtY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIAogPG1ldGVyPjxpc2luZGV4PgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7CiBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CiBkb2N1bWVudC5leGVjQ29tbWFuZCgiQ3JlYXRl
TGluayIsIDAsICdmb28nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRlckVs
ZW1lbnQvbWV0ZXItb3B0aW11bXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLW9wdGltdW1zLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItb3B0aW11
bXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1wZXJjZW50LXNpemUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50
L21ldGVyLXBlcmNlbnQtc2l6ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLXBlcmNlbnQtc2l6ZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgIDxtZXRlciBzdHlsZT0icGFkZGluZzogMSU7
Ij4zMCU8L21ldGVyPgogICAgIFBBU1MKICAgICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAgIDwvc2NyaXB0PgogICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLXN0eWxlcy1jaGFuZ2luZy1w
c2V1ZG8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJF
bGVtZW50L21ldGVyLXN0eWxlcy1jaGFuZ2luZy1wc2V1ZG8uaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci1zdHlsZXMt
Y2hhbmdpbmctcHNldWRvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMTYgQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgLy8gV2UgdG91Y2ggb2Zmc2V0V2lkdGggaGVyZSB0byBlbnN1cmUgZm9sbG93
aW5nIGNvZGUgcnVuIGFmdGVyIHRoZSBmaXJzdCBsYXlvdXQgaXMgZG9uZSwgCiAgICAgLy8gYmVj
YXVzZSB3aGF0IHdlIHRlc3QgaXMgc2lkZS1lZmZlY3QgZm9yIHRoZSB0aGUgbGF5b3V0IGFuZCB0
aGUgcGFpbnRpbmcuCiAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS52YWx1ZSA9IDkwOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8c3R5bGU+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLXN0eWxlcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5
bGVzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxN
ZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4
IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogPC9zY3JpcHQ+CiA8
c3R5bGU+CiAgIG1ldGVyLnVzZXN0eWxlIHsgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvKiB0
aGlzIGZvcmNlcyBzdHlsaW5nOyAqLyB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
T2JqZWN0RWxlbWVudC9jaGlsZHJlbi1jaGFuZ2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvY2hpbGRyZW4tY2hhbmdlZC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVu
dC9jaGlsZHJlbi1jaGFuZ2VkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAK
IDxodG1sPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYScpLnRleHRDb250ZW50ID0gJyAnOwogICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyEiOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAxMCk7CiAgICAgCiB9CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMtZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9vYmplY3QtYXMt
ZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TE9iamVjdEVsZW1lbnQvb2JqZWN0LWFzLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQs
OSArNCw5IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIHZhciB1cGRhdGVkRnJhbWVVUkwgPSAiZGF0YTp0ZXh0L2h0bWwsVXBkYXRlZCBj
b250ZW50cyBvZiBpZnJhbWUiOwpAQCAtMzcsOCArMzcsOCBAQCBmdW5jdGlvbiBoYW5kbGVMb2Fk
KCkKIAogICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCki
LCAnIicgKyB1cGRhdGVkRnJhbWVVUkwgKyAnIicpOwogICAgIHNob3VsZEJlKCJ3aW5kb3cuZnJh
bWVzWzFdLmxvY2F0aW9uLnRvU3RyaW5nKCkiLCAnIicgKyB1cGRhdGVkT2JqZWN0VVJMICsgJyIn
KTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9zZXQtdHlwZS10
by1udWxsLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TE9iamVjdEVsZW1lbnQvc2V0LXR5cGUtdG8tbnVsbC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT2JqZWN0RWxlbWVudC9zZXQtdHlwZS10
by1udWxsLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiA8b2JqZWN0
IHR5cGU9IiIgaWQ9ImNyYXNoIj48L29iamVjdD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CiBQQVNTIC0gVGhlIHRlc3QgZGlkbid0IGNyYXNoLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvZm9ybS9uZXN0ZWQtZm9ybS1lbGVtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQv
Zm9ybS9uZXN0ZWQtZm9ybS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxPYmplY3RFbGVtZW50L2Zvcm0vbmVzdGVkLWZvcm0tZWxlbWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KICAg
PHNjcmlwdD4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVj
dEVsZW1lbnQvZm9ybS90ZXN0MS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxPYmplY3RFbGVtZW50L2Zvcm0vdGVzdDEuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9iamVjdEVsZW1lbnQvZm9ybS90ZXN0MS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgICAgICB9CiAgICAgICAgIGZ1bmN0
aW9uIHRlc3QoKSAKICAgICAgICAgewotICAgICAgICAgICAgaWYod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIGlmKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBvYmpl
Y3RJbnNpZGVGb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9iamVjdEluc2lkZUZvcm0i
KTsKICAgICAgICAgICAgIG9iamVjdE5vdEluc2lkZUZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib2JqZWN0Tm90SW5zaWRlRm9ybSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTE9wdGlvbkVsZW1lbnQvb3B0aW9uLXByb3RvdHlwZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPcHRpb25FbGVtZW50L29wdGlvbi1wcm90b3R5cGUuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9wdGlvbkVs
ZW1lbnQvb3B0aW9uLXByb3RvdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBA
QAogPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODg2Ij5idWcgMjE4ODY8L2E+Ogogd2luZG93LkhUTUxPcHRpb25FbGVtZW50ID09
ICJbb2JqZWN0IEhUTUxFbGVtZW50Q29uc3RydWN0b3JdIiBpbnN0ZWFkIG9mIEhUTUxPcHRpb25F
bGVtZW50Q29uc3RydWN0b3IuPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB3aW5kb3cu
SFRNTE9wdGlvbkVsZW1lbnQucHJvdG90eXBlLmZvbyA9IGZ1bmN0aW9uKCkgeyB9CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPcHRpb25FbGVtZW50L29wdGlvbi10ZXh0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTE9wdGlvbkVsZW1lbnQvb3B0
aW9uLXRleHQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTE9wdGlvbkVsZW1lbnQvb3B0aW9uLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4
ICszLDggQEAKIDxoZWFkPgogICAgIDxNRVRBIEhUVFAtRVFVSVY9IkNvbnRlbnQtVHlwZSIgQ09O
VEVOVD0idGV4dC9odG1sOyBjaGFyc2V0PUVVQy1KUCI+CiAgICAgPHNjcmlwdD4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxPcHRpb25FbGVtZW50
L3NldC1vcHRpb24taW5kZXgtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxPcHRpb25FbGVtZW50L3NldC1vcHRpb24taW5kZXgtdGV4dC5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MT3B0aW9uRWxlbWVudC9z
ZXQtb3B0aW9uLWluZGV4LXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAK
IDxvcHRpb24+T3B0aW9uIDI8L29wdGlvbj4KIDwvc2VsZWN0PgogPHNjcmlwdD4KLSAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICB2YXIgb3B0aW9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJvcHRpb24iKVswXTsKICAgdmFyIG9wdGlvbjIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgib3B0aW9uIilbMV07CkBAIC0xNiw3ICsxNiw3IEBACiAgICAgaWYgKG9wdGlvbjEuaW5k
ZXggIT0gMCkKICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5GQUlMOiBBbiBhdHRlbXB0IHRvIHNl
dCBIVE1MT3B0aW9uRWxlbWVudC5pbmRleCB3YXMgbm90IGlnbm9yZWQuIik7CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgICBkb2N1bWVudC53cml0ZShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
b3B0aW9uIilbMF0udGV4dCArICI8YnI+Iik7CiAgICAgICBkb2N1bWVudC53cml0ZShkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgib3B0aW9uIilbMV0udGV4dCArICI8YnI+Iik7CiAgICAg
fQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFByb2dyZXNzRWxlbWVudC9pbmRldGVy
bWluYXRlLXByb2dyZXNzLTAwMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxQcm9ncmVzc0VsZW1lbnQvaW5kZXRlcm1pbmF0ZS1wcm9ncmVzcy0wMDIuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFByb2dyZXNzRWxl
bWVudC9pbmRldGVybWluYXRlLXByb2dyZXNzLTAwMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03
LDggKzcsOCBAQCBwcm9ncmVzczppbmRldGVybWluYXRlICsgI3Rlc3QgeyBjb2xvcjogCiA8L3N0
eWxlPgogPHNjcmlwdD4KIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QiKTsKICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2LCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCJjb2xvciIpID09ICJyZ2IoMCwgMTI4LCAwKSIpCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MUHJvZ3Jlc3NFbGVtZW50L3Byb2dyZXNzLWVsZW1lbnQtZm9y
bS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxQcm9ncmVzc0Vs
ZW1lbnQvcHJvZ3Jlc3MtZWxlbWVudC1mb3JtLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxQcm9ncmVzc0VsZW1lbnQvcHJvZ3Jlc3MtZWxlbWVudC1m
b3JtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiAKIDxib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTFByb2dyZXNzRWxlbWVudC9wcm9ncmVzcy1lbGVtZW50LXdpdGgt
Y2hpbGQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
UHJvZ3Jlc3NFbGVtZW50L3Byb2dyZXNzLWVsZW1lbnQtd2l0aC1jaGlsZC1jcmFzaC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MUHJvZ3Jlc3NFbGVt
ZW50L3Byb2dyZXNzLWVsZW1lbnQtd2l0aC1jaGlsZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MUHJvZ3Jlc3NFbGVtZW50L3Byb2dyZXNzLWVsZW1lbnQtd2l0aC1zdHlsZS1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxQcm9ncmVzc0VsZW1lbnQv
cHJvZ3Jlc3MtZWxlbWVudC13aXRoLXN0eWxlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxQcm9ncmVzc0VsZW1lbnQvcHJvZ3Jlc3MtZWxl
bWVudC13aXRoLXN0eWxlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzEsMTcg
QEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKICAgICAvLyBJdCBpcyBuZWNlc3Nhcnkg
dG8gYWxsb3cgc29tZSB0aW1lIGZvciB0aGUgcHJvZ3Jlc3MgYmFyIHRvIHJlbmRlciB0aGUKICAg
ICAvLyBwcm9ncmVzcyBhbmQgcHJvZHVjZSB0aGUgY3Jhc2guCiAgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgfSwgMTApOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9hc3luYy13cml0ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L2FzeW5jLXdyaXRlLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRF
bGVtZW50L2FzeW5jLXdyaXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIFBBU1MKIDxzY3JpcHQgYXN5bmM9IkFT
WU5DIiBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGRvY3VtZW50LndyaXRlKCdGQUlMJyk7Ij48
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L2Rl
ZmVyLXdyaXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNj
cmlwdEVsZW1lbnQvZGVmZXItd3JpdGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvZGVmZXItd3JpdGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogUEFTUwogPHNjcmlwdCBkZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGRvY3VtZW50
LndyaXRlKCdGQUlMJyk7Ij48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTY3JpcHRFbGVtZW50L2RvbnQtbG9hZC11bmtub3duLXR5cGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9kb250LWxvYWQtdW5rbm93
bi10eXBlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTY3JpcHRFbGVtZW50L2RvbnQtbG9hZC11bmtub3duLXR5cGUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDggQEAKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLSAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VS
ZXNwb25zZU1JTUVUeXBlcygpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZVJlc3BvbnNl
TUlNRVR5cGVzKCk7CiAgIH0KIAogICBmdW5jdGlvbiBmYWlsKHN0cikgewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvaXNVUkxBdHRyaWJ1dGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9pc1VSTEF0
dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MU2NyaXB0RWxlbWVudC9pc1VSTEF0dHJpYnV0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogPHNjcmlwdCBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LCIgaWQ9InRhcmdl
dCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLnNyYzsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvbW92ZS1pbi1iZWZvcmVs
b2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVs
ZW1lbnQvbW92ZS1pbi1iZWZvcmVsb2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L21vdmUtaW4tYmVmb3JlbG9hZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2ZyYW1lLmh0bWwiPjwvaWZyYW1lPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9uZXN0ZWQtZXhlY3V0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvbmVzdGVkLWV4
ZWN1dGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MU2NyaXB0RWxlbWVudC9uZXN0ZWQtZXhlY3V0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aGVhZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBzdGFydGVkID0gZmFsc2U7CkBAIC0yMSw4
ICsyMSw4IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FuUGFzcyA9IHRy
dWU7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FjaGVNb2RlbCgwKTsgLy8gV2Vi
Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYWNoZU1vZGVsKDApOyAvLyBXZWJD
YWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgogPC9oZWFk
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvcmVtb3ZlLWlu
LWJlZm9yZWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
U2NyaXB0RWxlbWVudC9yZW1vdmUtaW4tYmVmb3JlbG9hZC5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9yZW1vdmUtaW4tYmVm
b3JlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkBAIC0xNiw4
ICsxNiw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHMuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3Jl
bG9hZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVsyXSk7CiAgICAgICAgIHRlc3RQ
YXNzZWQoIiIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9LCBmYWxzZSk7CiAgICAgcy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICB0ZXN0RmFpbGVkKCJlcnJvciBldmVudCBzaG91bGQgbm90IGZpcmUuIikK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3JlbW92ZS1zb3Vy
Y2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxl
bWVudC9yZW1vdmUtc291cmNlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3JlbW92ZS1zb3VyY2UuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMSArMSwxMSBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
Y3JpcHQiKTsKLXNjcmlwdC5zcmMgPSAiZGF0YTp0ZXh0L2phdmFzY3JpcHQsZG9jdW1lbnQud3Jp
dGUoJ0ZBSUwnKTtpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7IjsKK3NjcmlwdC5zcmMgPSAiZGF0YTp0ZXh0L2phdmFzY3Jp
cHQsZG9jdW1lbnQud3JpdGUoJ0ZBSUwnKTtpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOyI7CiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIp
WzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7CiBzY3JpcHQuc3JjID0gIiI7CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1kZWNvZGlu
Zy1lcnJvci1hZnRlci1zZXR0aW5nLXNyYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1kZWNvZGluZy1lcnJvci1hZnRlci1z
ZXR0aW5nLXNyYy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtZGVjb2RpbmctZXJyb3ItYWZ0ZXItc2V0dGluZy1z
cmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAKICAgICA8ZGl2IGlkPSJjb250
ZW50X3BhbmVsIj6y4srUPC9kaXY+CiAgICAgPHNjcmlwdD4KICAgICBmdW5jdGlvbiBzZXRfc2Ny
aXB0X3NyYygpIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgfQogICAgICAgdmFyIHNjcmlwdF9vYmogPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0X3RhcmdldCIpOwogICAgICAgaWYgKHNjcmlwdF9v
YmopIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Njcmlw
dC1sb2FkLWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1l
dmVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDE1IEBAIGZ1bmN0aW9uIGVu
ZFRlc3QoKQogICAgIGVsc2UKICAgICAgICAgcmVzdWx0cy5pbm5lckhUTUwgPSAiUEFTUyI7CiAK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgIH0KIAogICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVl
eGVjdXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2Ny
aXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gcGFzcygpIHsK
IH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgdGVzdCA9ICJwMSI7CkBA
IC00MSw4ICs0MSw4IEBAIGZ1bmN0aW9uIGZpbmlzaCgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLnJlbW92ZUNoaWxkKGUzKTsKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGUzKTsKIAotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtc2V0LXNyYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Njcmlw
dC1zZXQtc3JjLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtc3JjLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTUsOSArNSw5IEBAIHZhciBwNXJlc3VsdCA9ICJGQUlMIjsKIAogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIH0KIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNSIpLmlubmVySFRN
TCA9IHA1cmVzdWx0OwpAQCAtMzAsNyArMzAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAKICAg
ICB2YXIgZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic2NyaXB0IiApOwogICAgIGUzLnR5
cGUgID0gInRleHQvamF2YXNjcmlwdCI7Ci0gICAgZTMuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAi
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgc2V0VGltZW91dCgnbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpJywgMTAwKSIpOyAKKyAgICBlMy5zZXRBdHRyaWJ1dGUoIm9u
bG9hZCIsICJpZiAod2luZG93LnRlc3RSdW5uZXIpIHNldFRpbWVvdXQoJ3Rlc3RSdW5uZXIubm90
aWZ5RG9uZSgpJywgMTAwKSIpOyAKICAgICBlMy5zcmMgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQt
c3JjLXA5ZmFpbEJlZm9yZS5qcyI7CiAgICAgZTMuc3JjID0gInJlc291cmNlcy9zY3JpcHQtc2V0
LXNyYy1wOXBhc3MuanMiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFk
IilbMF0uYXBwZW5kQ2hpbGQoZTMpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNj
cmlwdEVsZW1lbnQvd3JpdGUtYWZ0ZXItaWdub3JlZC13cml0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3dyaXRlLWFmdGVyLWlnbm9y
ZWQtd3JpdGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFNjcmlwdEVsZW1lbnQvd3JpdGUtYWZ0ZXItaWdub3JlZC13cml0ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+
CiA8Ym9keSBvbmxvYWQ9ImRvY3VtZW50LndyaXRlKCdQQVNTJykiPgogRkFJTApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL25lc3RlZC1leGVj
dXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVs
ZW1lbnQvcmVzb3VyY2VzL25lc3RlZC1leGVjdXRpb24uanMJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9uZXN0ZWQt
ZXhlY3V0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQCBpZiAoc3RhcnRlZCkg
ewogICAgIGV4ZWN1dGVkID0gdHJ1ZTsKICAgICBpZiAoY2FuUGFzcykgewogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gIlBBU1M6IFNjcmlwdCBl
eGVjdXRlZCBhZnRlciBhcHBlbmRDaGlsZCgpIjsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogLyoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtZGVjb2RpbmctZXJyb3ItYWZ0
ZXItc2V0dGluZy1zcmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFNjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1kZWNvZGluZy1lcnJvci1hZnRlci1zZXR0
aW5nLXNyYy5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFNjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1kZWNvZGluZy1lcnJvci1hZnRlci1zZXR0
aW5nLXNyYy5qcwkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDYgQEAgaWYgKHBhbmVsX29iaikg
ewogICAgIHBhbmVsX29iai5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CiAgIGVsc2UKICAgICBwYW5l
bF9vYmouaW5uZXJIVE1MID0gIkZBSUxVUkUiOwotICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvY2xpY2stc2l6ZS16ZXJvLW5v
LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVj
dEVsZW1lbnQvY2xpY2stc2l6ZS16ZXJvLW5vLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTZWxlY3RFbGVtZW50L2NsaWNrLXNpemUtemVy
by1uby1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDEyICs5LDEyIEBAIGZ1bmN0aW9u
IGdldENlbnRlckZvcihlbGVtZW50KQogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgaWYgKCF3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgcmV0dXJuOwogICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICByZXR1cm47CiAKLSAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgY2VudGVyID0gZ2V0Q2VudGVyRm9yKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
bXB0eXNlbGVjdCIpKTsKICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyLngsIGNlbnRl
ci55KTsKICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MU2VsZWN0RWxlbWVudC9sZW5ndGgtbm90LW92ZXJyaWRkZW4uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2VsZWN0RWxlbWVudC9sZW5ndGgtbm90
LW92ZXJyaWRkZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFNlbGVjdEVsZW1lbnQvbGVuZ3RoLW5vdC1vdmVycmlkZGVuLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTgsOCArOCw4IEBACiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICAgICAgdmFyIHNs
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxTZWxlY3RFbGVtZW50L2xpc3Rib3gtc2VsZWN0LXJlc2V0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvbGlzdGJveC1z
ZWxlY3QtcmVzZXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFNlbGVjdEVsZW1lbnQvbGlzdGJveC1zZWxlY3QtcmVzZXQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTgsOCArMTgsOCBAQAogInNlbGVjdGVkIiBhdHRyaWJ1dGVzIGFyZSBwcm9wZXJs
eSBjbGVhcmVkIHdoZW4gcmVzZXQuCiA8cD5Zb3Ugc2hvdWxkIHNlZSB0d28gZWxlbWVudCBJRHMg
YmVsb3csIGFuZCB0aGUgd29yZCAiU1VDQ0VTUyIgdHdpY2U6CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiB2YXIgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc2V0QnV0dG9uIik7
CiAKIGZ1bmN0aW9uIHRlc3QoZWxlbWVudElkKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFNlbGVjdEVsZW1lbnQvb3B0aW9ucy1jb2xsZWN0aW9uLWRldGFjaGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvb3B0aW9ucy1j
b2xsZWN0aW9uLWRldGFjaGVkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxTZWxlY3RFbGVtZW50L29wdGlvbnMtY29sbGVjdGlvbi1kZXRhY2hlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBACiAgICAgICAgIFJlc3VsdDogPHNw
YW4gaWQ9InJlc3VsdCI+RkFJTCAodGVzdCBkaWQgbm90IHJ1bik8L3NwYW4+CiAgICAgPC9wPgog
ICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgICAgICAKICAgICAgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNlbGVjdCIpOwogICAgICAgICB2YXIgbGFzdE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIm9wdGlvbiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1l
bnQvb3B0aW9ucy1jb2xsZWN0aW9uLXNldC1zdHJpbmctbGVuZ3RoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvb3B0aW9ucy1jb2xsZWN0
aW9uLXNldC1zdHJpbmctbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxTZWxlY3RFbGVtZW50L29wdGlvbnMtY29sbGVjdGlvbi1zZXQtc3Ry
aW5nLWxlbmd0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB2YXIgc2wgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2wiKTsKICAgICAgICAgICAgICAgICBzbC5vcHRpb25z
Lmxlbmd0aD0iNSI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2VsZWN0RWxlbWVu
dC9yZW1vdmUtZWxlbWVudC1mcm9tLXdpdGhpbi1mb2N1cy1oYW5kbGVyLWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvcmVtb3Zl
LWVsZW1lbnQtZnJvbS13aXRoaW4tZm9jdXMtaGFuZGxlci1jcmFzaC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2VsZWN0RWxlbWVudC9yZW1vdmUt
ZWxlbWVudC1mcm9tLXdpdGhpbi1mb2N1cy1oYW5kbGVyLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOCArNCw4IEBACiA8aDI+TGF5b3V0IHRlc3QgZm9yIDxhIGhyZWY9J2h0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1OCc+YnVnIDIzODU4PC9hPjwvaDI+
CiA8cD5JZiB0aGlzIHBhZ2UgaXMgZGlzcGxheWVkIHdpdGhvdXQgY3Jhc2hpbmcgdGhlbiB0aGUg
dGVzdCBoYXMgcGFzc2VkLjwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvbWInKTsK
ICAgICB2YXIgbW91c2VFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvc2VsZWN0LXNl
bGVjdGVkSW5kZXgtYnVnLTEyOTQyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTFNlbGVjdEVsZW1lbnQvc2VsZWN0LXNlbGVjdGVkSW5kZXgtYnVnLTEyOTQyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTZWxlY3RF
bGVtZW50L3NlbGVjdC1zZWxlY3RlZEluZGV4LWJ1Zy0xMjk0Mi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPlRlc3QgZm9yIEJ1ZyAxMjk0Mjwv
dGl0bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFRhYmxlRWxlbWVudC9pbnNlcnQtcm93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTFRhYmxlRWxlbWVudC9pbnNlcnQtcm93Lmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUYWJsZUVsZW1lbnQvaW5zZXJ0LXJv
dy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgIH0KICAgICAg
ICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICB2YXIgdGFibGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRhYmxlIik7
CiAgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyB0YWJsZXNbaV07IGkrKykKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxUYWJsZVJvd0VsZW1lbnQvaW5zZXJ0Q2VsbC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUYWJsZVJvd0VsZW1lbnQvaW5zZXJ0
Q2VsbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
VGFibGVSb3dFbGVtZW50L2luc2VydENlbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1
LDggQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgdmFyIHRyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JvdycpOwogICAgIHRyLmlu
c2VydENlbGwoMCkuaW5uZXJIVE1MID0gIjx0ZD5jZWxsIGluc2lkZSB0YWJsZSBpbnNpZGUgY2Vs
bCAwPC90ZD4iOwogICAgIHRyLmluc2VydENlbGwoMSkuaW5uZXJIVE1MID0gIjx0ZD5jZWxsIGlu
c2lkZSB0YWJsZSBpbnNpZGUgY2VsbCAxPC90ZD4iOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vTWljcm9EYXRhL3Jlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9yZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1v
bi5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRh
L3Jlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogLy8gdGhpcyBmdW5jdGlvbiBjcmVhdGVzIGVsZW1lbnQgd2l0aCBzcGVjaWZpZWQgcHJv
cGVydHkgYW5kIGNvbnRlbnRzLgogZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBwcm9wcywg
Y29udGVudHMpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpOwogCkBAIC0yMSw4ICsyMSw4IEBAIGZ1bmN0
aW9uIGNyZWF0ZUVsZW1lbnQodHlwZSwgcHJvcHMsIGNvbnQKIAogLy8gcnVucyBhIHRlc3QgYW5k
IHdyaXRlcyBhIGxvZwogZnVuY3Rpb24gcnVuVGVzdChjb2xsZWN0aW9uLCBlbGVtZW50cywgdGl0
bGUpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICBwYXNzID0gdHJ1ZTsKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vTm9kZS9kZWZhdWx0LW5hbWVzcGFjZS1lbXB0eS1hcmd1bWVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGUvZGVmYXVsdC1uYW1lc3Bh
Y2UtZW1wdHktYXJndW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTm9kZS9kZWZhdWx0LW5hbWVzcGFjZS1lbXB0eS1hcmd1bWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHA+VGVzdCBmb3IgYSA8aHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwOTkyIj5idWcgMzA5OTI8L2E+OiBOb2Rl
LmlzRGVmYXVsdE5hbWVzcGFjZSBkb2Vzbid0IGNvbnZlcnQgZW1wdHkgc3RyaW5ncyB0byBudWxs
LjwvcD4KIDxwPlNob3VsZCBzYXkgUEFTUzo8L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IGRvY3VtZW50LndyaXRlKChkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudChu
dWxsLCAncm9vdCcsIG51bGwpLmlzRGVmYXVsdE5hbWVzcGFjZSgnJykpID8gIlBBU1MiIDogIkZB
SUwiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVu
dC1tdXRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGUv
ZnJhZ21lbnQtbXV0YXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
LDggKzMsOCBAQAogPHRpdGxlPkZyYWdtZW50IE11dGF0aW9uIFRlc3RzPC90aXRsZT4KIDxzY3Jp
cHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgbG9nID0gW107CiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL05vZGUvbXV0YXRpb24tYmx1ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL05vZGUvbXV0YXRpb24tYmx1ci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlL211dGF0aW9uLWJsdXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9
CiAKICAgICB2YXIgY29udGFpbmVyMTsKQEAgLTUyLDggKzUyLDggQEAKIAogICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGNvbnRhaW5lcjIpOwogCi0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9Ob2RlL25vcm1hbGl6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL05vZGUvbm9ybWFsaXplLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL05vZGUvbm9ybWFsaXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw4
ICsxNTcsOCBAQCBmdW5jdGlvbiBydW5UZXN0KHRlc3REaXYsIHRlc3ROYW1lKQogCiBmdW5jdGlv
biBydW5UZXN0cygpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB0cnkg
ewogICAgICAgICB2YXIgdGVzdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdHMiKS5j
aGlsZE5vZGVzOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZUxpc3QvNTcyNTA1OC1j
cmFzaC1zY2VuYXJpby0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
Tm9kZUxpc3QvNTcyNTA1OC1jcmFzaC1zY2VuYXJpby0xLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0LzU3MjUwNTgtY3Jhc2gtc2NlbmFyaW8t
MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAgIDxkaXYgbmFtZT0ndGVz
dCc+PC9kaXY+CiA8L3NwYW4+CiA8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiB0cmlnZ2VyR2FyYmFnZUNv
bGxlY3Rpb24oKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0LzU3
MjUwNTgtY3Jhc2gtc2NlbmFyaW8tMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL05vZGVMaXN0LzU3MjUwNTgtY3Jhc2gtc2NlbmFyaW8tMi5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlTGlzdC81NzI1MDU4LWNyYXNoLXNj
ZW5hcmlvLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwIGlkPSJhIj5w
YXJhZ3JhcGggYTwvcD4KIDxwIGlkPSJiIj5wYXJhZ3JhcGggYjwvcD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogZnVuY3Rpb24gdHJpZ2dlckdhcmJhZ2VDb2xsZWN0aW9uKCkKIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0LzU3MjUwNTgtY3Jhc2gtc2NlbmFyaW8tMy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0LzU3MjUwNTgt
Y3Jhc2gtc2NlbmFyaW8tMy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9Ob2RlTGlzdC81NzI1MDU4LWNyYXNoLXNjZW5hcmlvLTMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMiw4ICsyLDggQEAKIAogPHAgaWQ9ImEiPjxhIG5hbWU9ImFuY2hvciI+cGFyYWdy
YXBoIGE8L2E+PC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgbGlzdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCJhbmNob3IiKTsKIHZhciB4ID0gbGlzdC5sZW5ndGgKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0L2Fkb3B0Tm9kZS1ub2RlLWxpc3QtY2Fj
aGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlTGlzdC9hZG9w
dE5vZGUtbm9kZS1saXN0LWNhY2hlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL05vZGVMaXN0L2Fkb3B0Tm9kZS1ub2RlLWxpc3QtY2FjaGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTUsOCArMTUsOCBAQCBmdW5jdGlvbiBnYygpCiAKIGZ1bmN0aW9uIHBh
Z2VMb2FkZWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAg
cGFnZUhhc0xvYWRlZCA9IHRydWU7CiAgICAgaWYgKHBhZ2VIYXNMb2FkZWQgJiYgZnJhbWVIYXNM
b2FkZWQpCkBAIC0zMiw4ICszMiw4IEBAIGZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKIAogZnVuY3Rp
b24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIg
ZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKTsKICAgICBmcmFtZS5zZXRB
dHRyaWJ1dGUoIm9ubG9hZCIsICJmcmFtZUxvYWRlZEFnYWluKCkiKTsKQEAgLTQ0LDggKzQ0LDgg
QEAgZnVuY3Rpb24gZnJhbWVMb2FkZWRBZ2FpbigpCiB7CiAgICAgZ2MoKTsKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gIlRFU1QgUEFTU0VE
IC0gVW5sZXNzIGFuIGFzc2VydGlvbiBvciBjcmFzaCBoYXBwZW5zIHNvb24uIjsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9Ob2RlTGlzdC9jaGlsZE5vZGVzLXJlc2V0LWNhY2hlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZUxpc3QvY2hpbGROb2Rlcy1yZXNldC1jYWNoZS5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlTGlzdC9j
aGlsZE5vZGVzLXJlc2V0LWNhY2hlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBA
IFJFR1JFU1NJT04gKHIyMDk5Ny0yMTAwMyk6IENyYXNoIGluIFdlYkMKIDxkaXYgaWQ9ImVsZW0i
PjxwPjwvcD48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGdjKCkKIHsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0L2ludmFsaWRhdGUtbm9kZS1saXN0
cy13aGVuLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9O
b2RlTGlzdC9pbnZhbGlkYXRlLW5vZGUtbGlzdHMtd2hlbi1wYXJzaW5nLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0L2ludmFsaWRhdGUtbm9k
ZS1saXN0cy13aGVuLXBhcnNpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAK
ICAgICAgICAgPHRpdGxlPjUzNjA3NDg8L3RpdGxlPgogCiAgICAgICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBwcmludChtZXNz
YWdlKQogICAgICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZUxpc3Qv
aXRlbS1ieS1pZC13aXRoLW5vLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vTm9kZUxpc3QvaXRlbS1ieS1pZC13aXRoLW5vLWRvY3VtZW50Lmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL05vZGVMaXN0L2l0ZW0tYnkt
aWQtd2l0aC1uby1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
PHRpdGxlPlRlc3QgY2FzZSBmb3IgUmFkYXIgNDQxMTY2MzwvdGl0bGU+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiB2YXIgcGFyYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKIGZvciAo
dmFyIHggPSAwOyB4IDwgMTAwMDsgeCsrKSB7CiAgICAgdmFyIG5ld05vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiYXNkZiAiICsgeCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9S
YW5nZS8xMzAwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
LzEzMDAwLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1Jh
bmdlLzEzMDAwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8ZGl2IGlkPSJk
aXYiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+VGhlICwganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cu
PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogdmFy
IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKIHZhciB0ZXh0ID0gZGl2LmZp
cnN0Q2hpbGQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9hY2lkMy1zdXJyb3Vu
ZC1jb250ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L2FjaWQzLXN1cnJvdW5kLWNvbnRlbnRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2FjaWQzLXN1cnJvdW5kLWNvbnRlbnRzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aWZyYW1lIHNyYz0iZW1wdHkuaHRtbCIgaWQ9InNl
bGVjdG9ycyIgd2lkdGg9MCBoZWlnaHQ9MCBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPgogPHA+VGhl
IHRlc3QgYmVsb3cgc2hvdWxkIHJlcG9ydCBubyBmYWlsdXJlcywgYW5kIHNob3VsZCBzYXkgUEFT
UyBhdCB0aGUgZW5kLjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiA8L3Njcmlw
dD4KIDxzY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9idWctMTk1Mjcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9idWctMTk1Mjcu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvYnVn
LTE5NTI3Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8cD5UZXN0IFJhbmdl
LmNvbXBhcmVQb2ludCBhbmQgUmFuZ2UuaXNQb2ludEluUmFuZ2UgRmlyZWZveCBleHRlbnNpb25z
LjwvcD4KIDxkaXYgaWQ9bG9nPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIg
aGFkRXJyb3IgPSBmYWxzZTsKIGZ1bmN0aW9uIGxvZ0Vycm9yKG1lc3NhZ2UpCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9jb21wYXJlQm91bmRhcnlQb2ludHMtMS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2NvbXBhcmVCb3VuZGFyeVBvaW50
cy0xLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L2NvbXBhcmVCb3VuZGFyeVBvaW50cy0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEw
LDggQEAgZnVuY3Rpb24gbG9nKHN0cikgewogICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOwog
fQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
d2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogdmFyIGRpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKIHZhciB0ZXh0ID0gZGl2LmZpcnN0Q2hpbGQ7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9jb21wYXJlQm91bmRhcnlQb2ludHMtMi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2NvbXBhcmVCb3VuZGFy
eVBvaW50cy0yLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L1JhbmdlL2NvbXBhcmVCb3VuZGFyeVBvaW50cy0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDggKzEwLDggQEAKICAgICAgICRvdXQuaW5uZXJIVE1MICs9ICI8YnIgLz4iICsgdGV4dDsKICAg
ICB9CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
CiAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvY3JlYXRlLWNvbnRleHR1YWwtZnJhZ21lbnQtc2Ny
aXB0LW5vdC1yYW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5n
ZS9jcmVhdGUtY29udGV4dHVhbC1mcmFnbWVudC1zY3JpcHQtbm90LXJhbi5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9jcmVhdGUtY29udGV4dHVh
bC1mcmFnbWVudC1zY3JpcHQtbm90LXJhbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsx
MSw4IEBAIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTsKIHJhbmdlLmNyZWF0ZUNvbnRl
eHR1YWxGcmFnbWVudCgiPHNjcmlwdD4gY291bnQrKzsgPC9zY3JpcHQiICsgIj4iKTsKIG5vZGUu
dGV4dENvbnRlbnQgPSAhY291bnQgPyAnUEFTUycgOiAnRkFJTCAtIGV4cGVjdGVkIG5vIGV4ZWN1
dGlvbiBidXQgZXhlY3V0ZWQgJyArIGNvdW50ICsgJyB0aW1lcyc7CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2Ny
ZWF0ZS1jb250ZXh0dWFsLWZyYWdtZW50LXNjcmlwdC11bm1hcmstYWxyZWFkeS1zdGFydGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvY3JlYXRlLWNvbnRl
eHR1YWwtZnJhZ21lbnQtc2NyaXB0LXVubWFyay1hbHJlYWR5LXN0YXJ0ZWQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvY3JlYXRlLWNvbnRleHR1
YWwtZnJhZ21lbnQtc2NyaXB0LXVubWFyay1hbHJlYWR5LXN0YXJ0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTEsOCArMTEsOCBAQCByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7CiBu
b2RlLmFwcGVuZENoaWxkKHJhbmdlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCgiPHNjcmlwdD4g
Y291bnQrKzsgPC9zY3JpcHQiICsgIj4iKSk7CiBub2RlLnRleHRDb250ZW50ID0gY291bnQgPT0g
MSA/ICdQQVNTJyA6ICdGQUlMIC0gZXhwZWN0ZWQgb25lIGV4ZWN1dGlvbiBidXQgZXhlY3V0ZWQg
JyArIGNvdW50ICsgJyB0aW1lcyc7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiA8L3NjcmlwdD4KIDwvYm9k
eT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2RlbGV0ZWQtcmFuZ2UtZW5kcG9p
bnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZGVsZXRl
ZC1yYW5nZS1lbmRwb2ludHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vUmFuZ2UvZGVsZXRlZC1yYW5nZS1lbmRwb2ludHMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtOCw4ICs4LDggQEAKIDxGT08+PEJBUjE+QUI8L0JBUjE+PEJBUjI+PC9CQVIyPjxCQVIz
PkNEPC9CQVIzPjwvRk9PPgogPC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0
Qm91bmRpbmdDbGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdD
bGllbnRSZWN0LWdldENsaWVudFJlY3RzLXJlbGF0aXZlLXRvLXZpZXdwb3J0Lmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xp
ZW50UmVjdC1nZXRDbGllbnRSZWN0cy1yZWxhdGl2ZS10by12aWV3cG9ydC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBACiAgICAgPGRpdiBpZD0icHVzaGVyIj5UaGlzIGJveCBp
cyBoZXJlIHRvIGNyZWF0ZSBzY3JvbGxiYXJzLjwvZGl2PgogPC9kaXY+CiA8c2NyaXB0PgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3QnKSk7CkBAIC00NSw3ICs0NSw3IEBACiAgICAgc2hvdWxkQmUoInVuU2Ny
b2xsZWRCb3VuZGluZ0JveC5sZWZ0IC0gc2Nyb2xsZWRSaWdodEJvdW5kaW5nQm94LmxlZnQiLCAi
NTAiKTsKICAgICBzaG91bGRCZSgidW5TY3JvbGxlZEJvdW5kaW5nQm94ZXNbMF0ubGVmdCAtIHNj
cm9sbGVkUmlnaHRCb3VuZGluZ0JveGVzWzBdLmxlZnQiLCAiNTAiKTsKIAotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
ICAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsK
ICAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOwogICAgIH0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xpZW50
UmVjdC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5n
ZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIs
OCBAQCBib2R5IHsKIAogPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIGVsc2UKICAgICAgICAgYWxlcnQoIldBUk5JTkc6XG5UaGlzIHRlc3QgbWF5IHNo
b3cgYm9ndXMgRkFJTHVyZXMgaWYgbm90IHJ1biBpbiBEdW1wUmVuZGVyVHJlZSwgZHVlIHRvIHBs
YXRmb3JtLXNwZWNpZmljIGRpZmZlcmVuY2VzIGluIGZvbnQgbWV0cmljcy4iKTsKIApAQCAtOTks
NyArOTksNyBAQCBib2R5IHsKIAogICAgIGZ1bmN0aW9uIHNob3cocmFuZ2UpCiAgICAgewotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGFkZEJCb3hPdmVyQ2xp
ZW50UmVjdChyYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CiAgICAgfQpAQCAtMTYyLDcg
KzE2Miw3IEBAIGJvZHkgewogICAgIHJlY3QgPSByYW5nZTYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkKICAgICB0ZXN0Q2xpZW50UmVjdChyZWN0LCBleHBlY3RlZFJlc3VsdHNbNiAtIDFdKTsKIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGVzdEFyZWEnKTsKICAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOwog
ICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldENsaWVudFJlY3RzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Q2xpZW50UmVj
dHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uv
Z2V0Q2xpZW50UmVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODQsOCArODQsOCBAQAogPC9k
aXY+CiAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5j
dGlvbiBhZGRCQm94T3ZlckNsaWVudFJlY3QocmVjdCkKICAgICB7CkBAIC0xMDgsNyArMTA4LDcg
QEAKIAogICAgIGZ1bmN0aW9uIHNob3cocmFuZ2UpCiAgICAgewotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGFkZEJCb3hPdmVyQ2xpZW50UmVjdHMocmFuZ2Uu
Z2V0Q2xpZW50UmVjdHMoKSk7CiAgICAgfQpAQCAtNDAzLDcgKzQwMyw3IEBACiAgICAgcmVjdHMg
PSByYW5nZTExLmdldENsaWVudFJlY3RzKCk7CiAgICAgc2hvdWxkQmUoInJlY3RzLmxlbmd0aCIs
ICIwIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3RBcmVhJyk7CiAgICAgICAgIGFyZWEucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChhcmVhKTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1j
b21wYXJlTm9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L3JhbmdlLWNvbXBhcmVOb2RlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWNvbXBhcmVOb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE5NCw4ICsxOTQsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgCiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtY29tcGFyZVBvaW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtY29tcGFyZVBvaW50Lmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWNv
bXBhcmVQb2ludC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4ICs4MSw4IEBAIGZ1bmN0aW9u
IHRlc3QoKSAKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QxMCIpLmlubmVy
SFRNTCA9ICJ0ZXN0IDEwIHBhc3NlZCI7IAogICAgIH0KICAgICAgICAgCi0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vUmFuZ2UvcmFuZ2UtY3JlYXRlZC1pbi1tdXRhdGlvbi1ldmVudC1jcmFzaC54aHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1jcmVhdGVkLWluLW11
dGF0aW9uLWV2ZW50LWNyYXNoLnhodG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1jcmVhdGVkLWluLW11dGF0aW9uLWV2ZW50LWNyYXNoLnho
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw4ICsxNiw4IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbiAoKSB7CiAgICAgZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5leHRyYWN0Q29udGVu
dHMoKTsKICAgICByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKIAotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgYWxlcnQoIlRoaXMgdGVzdCBjYWxscyBnZXRCb3VuZGlu
Z0NsaWVudFJlY3Qgb24gYSByYW5nZSBvYnRhaW5lZCBpbnNpZGUgYSBtdXRhdGlvbiBldmVudCBs
aXN0ZW5lci5cbiIKICAgICArICJUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jh
c2guXG5cbiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWRlbGV0ZS1j
b250ZW50cy1ldmVudC1maXJlLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vUmFuZ2UvcmFuZ2UtZGVsZXRlLWNvbnRlbnRzLWV2ZW50LWZpcmUtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2Ut
ZGVsZXRlLWNvbnRlbnRzLWV2ZW50LWZpcmUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Niw4ICs2LDggQEAKIDxvbD48L29sPg0KIDwvZGl2Pg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7DQogDQogZnVuY3Rpb24gcnVuVGVzdCgpIHsNCiAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1l
eHBhbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5n
ZS1leHBhbmQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
UmFuZ2UvcmFuZ2UtZXhwYW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDggQEAg
ZnVuY3Rpb24gZXhwYW5kUmFuZ2VTdHJpbmcocmFuZ2UsIHN0YXJ0SQogCiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIC8vIHRlc3QgMSAtIEV4
cGFuZCB0byBkb2N1bWVudC4KICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtZXh0cmFjdC1jb250ZW50
cy1ldmVudC1maXJlLWNyYXNoMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1JhbmdlL3JhbmdlLWV4dHJhY3QtY29udGVudHMtZXZlbnQtZmlyZS1jcmFzaDIuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtZXh0
cmFjdC1jb250ZW50cy1ldmVudC1maXJlLWNyYXNoMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw4ICsxMCw4IEBACiAgICAgPC9zcGFuPgogPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L3JhbmdlLWV4dHJhY3QtY29udGVudHMtZXZlbnQtZmlyZS1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWV4dHJhY3QtY29udGVudHMtZXZl
bnQtZmlyZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9SYW5nZS9yYW5nZS1leHRyYWN0LWNvbnRlbnRzLWV2ZW50LWZpcmUtY3Jhc2guaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogICAgIDwvc3Bhbj4KIDwvcD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1leHRyYWN0Q29udGVudHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1leHRyYWN0Q29udGVudHMuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2Ut
ZXh0cmFjdENvbnRlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAKICAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAg
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnQnKS5pbm5l
ckhUTUwgPSAnJzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWlzUG9p
bnRJblJhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uv
cmFuZ2UtaXNQb2ludEluUmFuZ2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtaXNQb2ludEluUmFuZ2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNzgsOCArNzgsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgCiAgICAgaWYgKHJlc3VsdCA9PSBl
eHBlY3RlZFJlc3VsdCkKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QxMCIp
LmlubmVySFRNTCA9ICJ0ZXN0IDEwIHBhc3NlZCI7IAogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uv
cmFuZ2UtcHJvY2Vzc2luZy1pbnN0cnVjdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1wcm9jZXNzaW5nLWluc3RydWN0aW9ucy5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1wcm9j
ZXNzaW5nLWluc3RydWN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
PGRpdj5UZXN0IHRoYXQgUmFuZ2UgbWFuaXB1bGF0aW9ucyB3b3JrIHdpdGggUHJvY2Vzc2luZ0lu
c3RydWN0aW9uIG5vZGVzLjwvZGl2PgogPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICBm
dW5jdGlvbiBkdW1wUmFuZ2UocmFuZ2UpIHsKICAgICAgIGlmIChyYW5nZS5zdGFydENvbnRhaW5l
ciA9PSByYW5nZS5lbmRDb250YWluZXIpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5n
ZS9yYW5nZS1zZWxlY3Rpb24tYWNyb3NzLWRvY3VtZW50cy1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLXNlbGVjdGlvbi1hY3Jvc3MtZG9j
dW1lbnRzLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1JhbmdlL3JhbmdlLXNlbGVjdGlvbi1hY3Jvc3MtZG9jdW1lbnRzLWNyYXNoLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aHRtbD4NCiA8aGVhZD4NCiA8c2NyaXB0Pg0K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOw0KIA0KIGZ1bmN0aW9uIHJ1blRlc3QoKQ0KIHsNCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yZW1vdmUtYWxsLWNoaWxkcmVuLWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmVtb3ZlLWFsbC1jaGlsZHJl
bi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9S
YW5nZS9yZW1vdmUtYWxsLWNoaWxkcmVuLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OCArMiw4IEBACiA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjg2OTciPmJ1ZyAyODY5NzwvYT4uPC9wPgogPGRpdiBpZD0iZGl2Ij48
cCBpZD0ib25lIj48L3A+PHAgaWQ9InR3byI+RkFJTCwgdGhlIHRlc3QgZGlkIG5vdCBzdGFydC48
L3A+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGdjKCkgewogICAg
IGlmICh0eXBlb2YgR0NDb250cm9sbGVyICE9PSAidW5kZWZpbmVkIikKQEAgLTMzLDcgKzMzLDcg
QEAgZ2MoKTsKIAogcmFuZ2Uuc3RhcnRPZmZzZXQ7CiBkaXYuaW5uZXJIVE1MID0gIlBBU1MsIHRo
ZSB0ZXN0IGRpZCBub3QgY3Jhc2guIjsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGll
bnQtcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3Nj
YWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVj
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHNjcmlwdD4KIGZ1bmN0aW9u
IHRlc3RSZWN0cygpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwg
IXdpbmRvdy5pbnRlcm5hbHMpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93
LmludGVybmFscykKICAgICAgICAgcmV0dXJuOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRz
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXYnKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2Ut
Y2xpZW50LXJlY3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8c2NyaXB0
PgogZnVuY3Rpb24gdGVzdFJlY3RzKCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciB8fCAgIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
ciB8fCAgIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgIHJldHVybjsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgIHJhbmdlLnNlbGVj
dE5vZGVDb250ZW50cyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2JykpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uvc3Vycm91bmQtY29udGVudHMtZm9udC1mYWNlLWNyYXNo
LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9zdXJyb3VuZC1j
b250ZW50cy1mb250LWZhY2UtY3Jhc2guc3ZnCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9SYW5nZS9zdXJyb3VuZC1jb250ZW50cy1mb250LWZhY2UtY3Jhc2guc3Zn
CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogPHN0b3AgaWQ9InMiLz4KIDxzY3JpcHQ+
CiAKLWlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQoraWYgKCF3aW5kb3cudGVzdFJ1
bm5lcikKICAgICBhbGVydCgiVGhpcyB0ZXN0IHJlcXVpcmVzIEdDQ29udHJvbGxlciIpCiBlbHNl
IHsKICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwpAQCAtMTMsNyArMTMs
NyBAQCBlbHNlIHsKICAgICByYW5nZS5zdXJyb3VuZENvbnRlbnRzKCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZicpICk7CiAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKIAotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICBhbGVydCgiUEFTUy4gV2ViS2l0IGRpZG4ndCBjcmFzaC4iKTsKIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uvc3Vycm91bmRDb250ZW50cy1jaGVjay1ib3VuZGFy
eS1wb2ludHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9z
dXJyb3VuZENvbnRlbnRzLWNoZWNrLWJvdW5kYXJ5LXBvaW50cy5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9zdXJyb3VuZENvbnRlbnRzLWNoZWNr
LWJvdW5kYXJ5LXBvaW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQCBSYW5n
ZSNzdXJyb3VuZENvbnRlbnRzIGluY29ycmVjdGx5IHRocm93CiA8cCBzdHlsZT0idmlzaWJpbGl0
eTpoaWRkZW4iPkhlbGxvLCA8ZW0+UmFuZ2U8L2VtPiB3b3JsZCE8L3A+CiAKIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogCiAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9SYW5nZS9yZXNvdXJjZXMvaW50ZXJzZWN0c05vZGUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmVzb3VyY2VzL2ludGVyc2VjdHNOb2RlLmpzCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yZXNvdXJjZXMv
aW50ZXJzZWN0c05vZGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw1ICsxNDIsNSBAQCB2YXIg
bm9kZSA9IG51bGw7CiBzaG91bGRUaHJvdygicmFuZ2UuaW50ZXJzZWN0c05vZGUobm9kZSkiKTsK
IGRlYnVnKCIiKTsKICAgICAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vU2VsZWN0b3JBUEkvYnVnLTE3MzEzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vU2VsZWN0b3JBUEkvYnVnLTE3MzEzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2J1Zy0xNzMxMy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICB9CiAKICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CkBAIC0xMyw4ICsx
Myw4IEBACiAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdoMTpmaXJzdC1j
aGlsZCcpOwogICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpLmluZGV4
T2YoJz8nKSA8IDApCiAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZG9SZWxvYWQs
IDEwMCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICB3aW5kb3cuc2V0VGlt
ZW91dChkb1FTQSwgMTAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJ
L2R1bXBOb2RlTGlzdC1hbG1vc3Qtc3RyaWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvZHVtcE5vZGVMaXN0LWFsbW9zdC1zdHJpY3QuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvZHVt
cE5vZGVMaXN0LWFsbW9zdC1zdHJpY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYs
OCBAQAogCiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJ
L2R1bXBOb2RlTGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1Nl
bGVjdG9yQVBJL2R1bXBOb2RlTGlzdC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9kdW1wTm9kZUxpc3QuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTUsOCArMTUsOCBAQAogCiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1NlbGVjdG9yQVBJL25vdC1zdXBwb3J0ZWQtbmFtZXNwYWNlLWluLXNlbGVjdG9yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvbm90LXN1cHBv
cnRlZC1uYW1lc3BhY2UtaW4tc2VsZWN0b3IuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvbm90LXN1cHBvcnRlZC1uYW1lc3BhY2UtaW4t
c2VsZWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgbG9nID0g
ZnVuY3Rpb24obXNnKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9y
QVBJL3Jlc2lnLVNlbGVjdG9yc0FQSS10ZXN0LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL3Jlc2lnLVNlbGVjdG9yc0FQSS10ZXN0LnhodG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9yZXNp
Zy1TZWxlY3RvcnNBUEktdGVzdC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDkgKzIyNCw5
IEBACiAgICAgLmJhci4geyBiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB5ZWxsb3c7IH0KICAgPC9z
dHlsZT4KICAgPHNjcmlwdD48IVtDREFUQVsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAJd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uKCl7CkBAIC03MjAsOCArNzIwLDggQEAKIAkJCXQoICJOb3QiLCAiYS5ibG9nOm5v
dCgubGluaykiLCBbIm1hcmsiXSApOwogCQl9CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAJfTsKICAgXV0+PC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS91bmtub3duLXBzZXVkby5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL3Vua25vd24tcHNldWRv
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9y
QVBJL3Vua25vd24tcHNldWRvLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rp
b24gbG9nKG1zZykKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0
YWNoZWQtc3R5bGUtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1N0
eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtMi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0L2RldGFjaGVkLXN0eWxlLTIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIFRlc3QgdGhhdCAmbHQ7bGluaz4gZWxlbWVudHMgb25s
eSBoYXZlIHN0eWxlc2hlZXRzIHdoZW4gaW4gZG9jdW1lbnQuPC9wPgogPHByZSBpZD1yZXN1bHQ+
PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOwogbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIilbMF07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0
L2RldGFjaGVkLXN0eWxlLXBpLTIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vU3R5bGVTaGVldC9kZXRhY2hlZC1zdHlsZS1waS0yLnhodG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0L2RldGFjaGVkLXN0eWxlLXBp
LTIueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBACiBUZXN0IHRoYXQgJmx0O3ht
bC1zdHlsZXNoZWV0PiBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBvbmx5IGhhdmUgc3R5bGVzaGVl
dHMgd2hlbiBpbiBkb2N1bWVudC48L3A+CiA8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiBzaGVldCA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdOwogcGkg
PSBkb2N1bWVudC5maXJzdENoaWxkOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVT
aGVldC9yZW1vdmVkLW1lZGlhLXJ1bGUtZGVsZXRlZC1wYXJlbnQtY3Jhc2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0L3JlbW92ZWQtbWVkaWEtcnVs
ZS1kZWxldGVkLXBhcmVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0L3JlbW92ZWQtbWVkaWEtcnVsZS1kZWxldGVkLXBhcmVu
dC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8aHRtbD4NCiA8
aGVhZD4NCiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQ0KIHsNCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOw0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsNCiB9DQogDQogZnVuY3Rpb24gcnVuVGVzdCgpDQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlv
biBydW5UZXN0KCkNCiANCiAgICAgaWYgKCFydWxlTGlzdFswXS5wYXJlbnRTdHlsZVNoZWV0KQ0K
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJQ
QVNTIjsNCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7DQogfQ0KIA0KIGZ1bmN0aW9u
IGdjKCkNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9TdHlsZVNoZWV0L3JlbW92ZWQtc3R5
bGVzaGVldC1ydWxlLWRlbGV0ZWQtcGFyZW50LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVTaGVldC9yZW1vdmVkLXN0eWxlc2hlZXQtcnVsZS1kZWxl
dGVkLXBhcmVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9TdHlsZVNoZWV0L3JlbW92ZWQtc3R5bGVzaGVldC1ydWxlLWRlbGV0ZWQtcGFyZW50
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxodG1sPg0KIDxo
ZWFkPg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCitpZiAo
d2luZG93LnRlc3RSdW5uZXIpDQogew0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7DQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
Ow0KIH0NCiANCiBmdW5jdGlvbiBydW5UZXN0KCkNCkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKQ0KIA0KICAgICBpZiAoIXJ1bGVMaXN0WzBdLnBhcmVudFN0eWxlU2hlZXQpDQog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlBB
U1MiOw0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpDQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiB9DQogDQogZnVuY3Rpb24g
Z2MoKQ0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9CYXJJbmZvLWFmdGVyLWZy
YW1lLXJlbW92ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvQmFySW5mby1hZnRlci1mcmFtZS1yZW1vdmVkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9CYXJJbmZvLWFmdGVyLWZyYW1lLXJlbW92ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxNSArMiwxNSBAQAogPGhlYWQ+CiA8c2NyaXB0Pgog
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAKICAgICAgICAgdmFyIGZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIik7CiAgICAgICAgIHZhciBjaGlsZFdpbmRv
dyA9IGZyYW1lLmNvbnRlbnRXaW5kb3c7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvUGx1Zy1pbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvUGx1Zy1pbnMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L1BsdWctaW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAK
ICAgICAgICAgPGRpdiBpZD0ibWFyZ2lucyI+CiAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL3gtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgICAgICAgICAgICAgIC8vIExvY2FsaXplcnM6IFRyYW5zbGF0ZSB0aGUgdGl0bGUg
YWJvdmUsIGFuZCB0aGVzZSBzaXggc3RyaW5ncywgYW5kIGxlYXZlIHRoZSByZXN0IG9mIHRoZSBm
aWxlIGludGFjdC4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2FsZXJ0LXVu
ZGVmaW5lZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9h
bGVydC11bmRlZmluZWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2FsZXJ0LXVuZGVmaW5lZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDgg
KzQsOCBAQAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgYWxlcnQodW5k
ZWZpbmVkKTsKICAgICAgICAgICAgIGFsZXJ0KG51bGwpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2Fub255bW91cy1zbG90LXdpdGgtY2hhbmdlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hbm9ueW1vdXMtc2xvdC13aXRoLWNoYW5n
ZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L2Fub255bW91cy1zbG90LXdpdGgtY2hhbmdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkg
KzUsOSBAQAogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9
ImZpbGVJbnB1dCI+PC9pbnB1dD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogfQogCiB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CkBAIC05MCw4ICs5MCw4IEBAIGZ1bmN0aW9uIG9ubWVzc2FnZShldnQpIHsKICAg
ICBldmVudERhdGEgPSBldnQuZGF0YTsKICAgICBzaG91bGRCZSgiZXZlbnREYXRhIiwgbWVzc2Fn
ZXNbMF0pOwogICAgIG1lc3NhZ2VzLnNoaWZ0KCk7Ci0gICAgaWYgKHNhZmVUb1N0cmluZyhldnQu
ZGF0YSkgPT0gJ2RvbmUnICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmIChzYWZlVG9TdHJpbmco
ZXZ0LmRhdGEpID09ICdkb25lJyAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
Jywgb25tZXNzYWdlLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
YXR0ci1jb25zdHJ1Y3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9hdHRyLWNvbnN0cnVjdG9yLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdHRyLWNvbnN0cnVjdG9yLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOCArNCw4IEBAIHdpbmRvdy5BdHRyIGlzIHVuZGVmaW5lZC48L3A+CiA8ZGl2IGlk
PXRlc3Q+PC9kaXY+CiA8c2NyaXB0PgogICB0cnkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKICAgICBBdHRyLnByb3RvdHlwZS5mb29iYXIgPSBmdW5jdGlvbiAoKSB7IGRvY3VtZW50Lndy
aXRlKCJTVUNDRVNTIik7IH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Ns
ZWFyLXRpbWVvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvY2xlYXItdGltZW91dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvY2xlYXItdGltZW91dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgg
KzEsOCBAQAogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogZnVuY3Rpb24gZjEoKQpAQCAtMTMsOCArMTMsOCBAQCBmdW5jdGlvbiBmMSgpCiBmdW5j
dGlvbiBmMigpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmUyJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1RoZSBmdW5jdGlvbiBmMiB3YXMgY2FsbGVk
LicpKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogdmFyIHQxID0gc2V0VGlt
ZW91dCgnZjEoKScsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Nsb3N1
cmUtYWNjZXNzLWFmdGVyLW5hdmlnYXRpb24taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Nsb3N1cmUtYWNjZXNzLWFmdGVyLW5hdmlnYXRpb24t
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9jbG9zdXJlLWFjY2Vzcy1hZnRlci1uYXZpZ2F0aW9uLWlmcmFtZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICB9CiAKICAgICB2YXIgbG9nU3RyaW5nID0gIiI7CkBAIC0xOSw4ICsxOSw4IEBA
CiAgICAgZnVuY3Rpb24gZG9uZSgpCiAgICAgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9IGxvZ1N0cmluZzsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiAgICAgT2JqZWN0LnByb3RvdHlw
ZS5teVZhbCA9ICJwYXJlbnQiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Ns
b3N1cmUtYWNjZXNzLWFmdGVyLW5hdmlnYXRpb24td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Nsb3N1cmUtYWNjZXNzLWFmdGVyLW5hdmlnYXRp
b24td2luZG93Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9jbG9zdXJlLWFjY2Vzcy1hZnRlci1uYXZpZ2F0aW9uLXdpbmRvdy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSgpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
LnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5p
bmdXaW5kb3dzV2hlbkNvbXBsZXRlKCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIH0KIAogICAgIHZhciBsb2dTdHJpbmcgPSAiIjsKQEAgLTI0LDggKzI0LDggQEAK
ICAgICBmdW5jdGlvbiBkb25lKCkKICAgICB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gbG9nU3RyaW5nOwotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICBPYmplY3QucHJvdG90eXBl
Lm15VmFsID0gInBhcmVudCI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY29u
c29sZS1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvY29uc29sZS1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtZnVuY3Rpb25zLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOCArNCw4IEBACiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgog
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAg
ICBjb25zb2xlLmxvZygiY29uc29sZS5sb2coKSBjYWxsZWQuIik7CiAgICAgICAgICAgICBjb25z
b2xlLmluZm8oImNvbnNvbGUuaW5mbygpIGNhbGxlZC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9jb25zb2xlLXRyYWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtdHJhY2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtdHJhY2UuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmdW5jdGlvbkluQ2FsbFN0
YWNrKCk7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0
b20tY29uc3RydWN0b3JzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlw
dD4KICAgICBkZXNjcmlwdGlvbignVGVzdCBjb25zdHJ1Y3RvcnMgZm9yIGNsYXNzZXMgaW4gV2lu
ZG93Jyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIAogICAgIHNo
b3VsZEJlKCJBdWRpby5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgQXVkaW8pIiwgIidbb2Jq
ZWN0IEhUTUxBdWRpb0VsZW1lbnRdJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Rv
bS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gbG9nKHMpCkBAIC0x
NCw4ICsxNCw4IEBACiAgICAgICAgIC8vIENhbGwgdGhlIG1ldGhvZCBpbmplY3RlZCBieSByZXNv
dXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1lLWNoaWxkLmh0bWwKICAgICAgICAg
YWNjZXNzRnJhbWUoKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICB9CiA8L3NjcmlwdD4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRv
dy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNj
ZXNzLWZyb20tY2xvc3VyZS13aW5kb3cuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5k
b3dzV2hlbkNvbXBsZXRlKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUo
KTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgdmFy
IHdpbiA9IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2lu
ZG93LWNoaWxkLmh0bWwiLCAiY2hpbGQiKTsKQEAgLTE4LDggKzE4LDggQEAKICAgICAgICAgLy8g
Q2FsbCB0aGUgbWV0aG9kIGluamVjdGVkIGJ5IHJlc291cmNlcy9kb20tYWNjZXNzLWZyb20tY2xv
c3VyZS13aW5kb3ctY2hpbGQuaHRtbAogICAgICAgICBhY2Nlc3NGcmFtZSgpOwogCi0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIDwvc2NyaXB0Pgog
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvZWxlbWVudC1jb25zdHJ1Y3RvcnMtb24td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2VsZW1lbnQtY29uc3RydWN0b3JzLW9uLXdpbmRvdy5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZWxl
bWVudC1jb25zdHJ1Y3RvcnMtb24td2luZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCAr
Miw4IEBACiA8Ym9keT4KIDxwPlRlc3QgdGhhdCBIVE1MIGVsZW1lbnQgY29uc3RydWN0b3JzIGFy
ZSBhY2Nlc3NpYmxlIGFzIHdpbmRvdyBvYmplY3QgcHJvcGVydGllcy48L3A+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdChjbGFzc05hbWUpIHsKICAgZG9jdW1lbnQud3JpdGUo
IjxwPiIgKyBjbGFzc05hbWUgKyAiOiAiICsgZXZhbCgid2luZG93LiIgKyBjbGFzc05hbWUpICsg
IjwvcD4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nZXQtc2V0LXByb3Bl
cnRpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZ2V0
LXNldC1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9nZXQtc2V0LXByb3BlcnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjcwLDggKzI3MCw4IEBAIHZhciB3aW5kb3dGdW5jdGlvbnMgPSBbCiAKIHdpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBsb2co
IlxuLS0tLS0gdGVzdHMgZm9yIGdldHRpbmcvc2V0dGluZyByZWFkLXdyaXRlIHByb3BlcnRpZXMg
LS0tLS1cbiIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZ2V0TWF0Y2hl
ZENTU1J1bGVzLW51bGwtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvZ2V0TWF0Y2hlZENTU1J1bGVzLW51bGwtY3Jhc2guaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE1hdGNoZWRDU1NSdWxl
cy1udWxsLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHZhciBydWxlcyA9IGdldE1hdGNo
ZWRDU1NSdWxlcyhudWxsLCAiIiwgZmFsc2UpOwogPC9zY3JpcHQ+CiBTVUNDRVNTICg8Y29kZT5n
ZXRNYXRjaGVkQ1NTUnVsZShudWxsLCAuLi4pPC9jb2RlPiBkaWQgbm90IGNyYXNoKS4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nbG9iYWwtb3BlbmVyLWZ1bmN0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dsb2JhbC1vcGVuZXIt
ZnVuY3Rpb24uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2dsb2JhbC1vcGVuZXItZnVuY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEs
OCArMTEsOCBAQCBmdW5jdGlvbiBvcGVuZXIoKSB7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0J
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCQl3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAJfQogCiAJdmFyIFNUQVRVUzsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9tb3ppbGxhLWZvY3VzLWJsdXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvbW96aWxsYS1mb2N1cy1ibHVyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9tb3pp
bGxhLWZvY3VzLWJsdXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRD
YW5PcGVuV2luZG93cygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOwogfQogCiB2YXIgb3JpZ2luYXRpbmdXaW5kb3cg
PSBzZWxmOwpAQCAtMTAzLDggKzEwMyw4IEBAIGZ1bmN0aW9uIHRlc3Q1KCkKIAogZnVuY3Rpb24g
ZmluaXNoZWQoKSB7CiAgICAgbG9nKHRydWUsICdBbGwgdGVzdHMgZmluaXNoZWQnKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvbmF2aWdhdGVkLXdpbmRvdy1wcm9wZXJ0aWVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L25hdmlnYXRlZC13aW5kb3ctcHJv
cGVydGllcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvbmF2aWdhdGVkLXdpbmRvdy1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsOSArNCw5IEBACiA8cD5BY2Nlc3NpbmcgcHJvcGVydGllcyBvZiBhIG5hdmlnYXRlZCB3aW5k
b3cgc2hvdWxkbid0IGNyYXNoPC9wPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIH0KIAogCkBAIC0xOSw4ICsxOSw4IEBAIGZ1bmN0aW9uIHRlc3RQaGFz
ZTEoKSB7CiAKIGZ1bmN0aW9uIHRlc3RQaGFzZTIoKSB7CiAgICAgZnVuYygpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8aWZyYW1lIGlkPSJzdWJmcmFtZSIg
c3JjPSJyZXNvdXJjZXMvbmF2aWdhdGVkLXdpbmRvdy1wcm9wLXN1YmZyYW1lMS5odG1sIj48L2lm
cmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9uZXctd2luZG93LW9wZW5l
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9uZXctd2lu
ZG93LW9wZW5lci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvbmV3LXdpbmRvdy1vcGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMCAr
OCwxMCBAQAogPGJvZHk+CiAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Bl
bldpbmRvd3MoKTsKICAgICAgICAgfQogCiAgICAgCkBAIC03Myw4ICs3Myw4IEBACiAgICAgICAg
IGZ1bmN0aW9uIG5leHRUZXN0KCkgewogICAgICAgICAgICAgaWYgKHRlc3ROdW0gPT0gbGFzdFRl
c3QpIHsKICAgICAgICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAodGVzdE51bSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoIiIpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L29wZW4tZXhpc3RpbmctcG9wLXVwLWJsb2NraW5nLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L29wZW4tZXhpc3Rp
bmctcG9wLXVwLWJsb2NraW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWV4aXN0aW5nLXBvcC11cC1ibG9ja2luZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
PC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL29wZW4tc2libGluZy1zdWJmcmFtZS5o
dG1sIj48L2lmcmFtZT4KIDxpZnJhbWUgbmFtZT0ic2libGluZyIgc3JjPSJkYXRhOnRleHQvaHRt
bCxJZiB5b3UgY2FuIHN0aWxsIHNlZSB0aGlzIHRleHQsIHRoZSB0ZXN0IGZhaWxlZC4iPjwvaWZy
YW1lPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L29wZW4taW52YWxpZC11cmwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1pbnZh
bGlkLXVybC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvb3Blbi1pbnZhbGlkLXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE1ICszLDE1
IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRDYW5PcGVuV2luZG93cygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOwogfQogCiB2YXIgYSA9IHdpbmRv
dy5vcGVuKCJhYm91dDpibGFuayIsIm1vb25zaGluZSIpCiBmdW5jdGlvbiBtb3VudGFpbkdvYXQo
KSB7Ci0gICAgICAgIGEud2luZG93LmV2YWwoJ3NldFRpbWVvdXQoImFsZXJ0KHdpbmRvdy5vcGVu
KFwnL1wnKSA/IFwnRkFJTFwnIDogXCdQQVNTXCcpOyBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLCAwKScpCisgICAgICAg
IGEud2luZG93LmV2YWwoJ3NldFRpbWVvdXQoImFsZXJ0KHdpbmRvdy5vcGVuKFwnL1wnKSA/IFwn
RkFJTFwnIDogXCdQQVNTXCcpOyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpIiwgMCknKQogfQogc2V0VGltZW91dCgibW91bnRhaW5Hb2F0KCkiLCAwKQogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3JwaGFuZWQtZnJhbWUt
YWNjZXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L29y
cGhhbmVkLWZyYW1lLWFjY2Vzcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvb3JwaGFuZWQtZnJhbWUtYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTUsOSArNSw5IEBACiA8dGl0bGU+TnVsbCBmcmFtZSBhY2Nlc3MgdGVzdHM8L3RpdGxl
PgogPHNjcmlwdD4KIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAg
ICAgdmFyIHRhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJmcmFtZScpOwpAQCAtMjAs
OCArMjAsOCBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luLnRlc3QgfHwgJ3By
b3BlcnR5OiBQQVNTIC4uLiAnKSk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luWzIwXSB8fCAnYXJyYXk6IFBBU1MgLi4uICcpKTsK
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh3aW4uQ29tbWVudCB8fCAnbWlzc2luZyBwcm9wZXJ0eTogUEFTUy4nKSk7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDApOwogfTsKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3JlZGlyZWN0LXdpdGgtdGlt
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVkaXJl
Y3Qtd2l0aC10aW1lci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvcmVkaXJlY3Qtd2l0aC10aW1lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9cmVz
b3VyY2VzL2Rlc3RpbmF0aW9uLmh0bWwiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIH0KIHNldFRpbWVvdXQoIndpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCdyZXNv
dXJjZXMvZGVzdGluYXRpb24uaHRtbCcpIiwgMCkKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3JlbW92ZS10aW1lb3V0LWNyYXNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3JlbW92ZS10aW1lb3V0LWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZW1vdmUt
dGltZW91dC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE3ICsyLDE3IEBACiBUaW1l
ci1yZWxhdGVkIGNyYXNoIHdoZW4gY2xvc2luZyBXZWIgSW5zcGVjdG9yLjwvcD4KIDxwPlBBU1Mg
aWYgbm8gY3Jhc2guPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiB9CiAKIHZhciB0aW1lb3V0SUQ7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBjbGVh
clRpbWVvdXQodGltZW91dElEKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCkgfSwgMCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSB9LCAwKTsKIH0K
IAogdGltZW91dElEID0gc2V0VGltZW91dCh0ZXN0LCAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9zZXRUaW1lb3V0LW5vLWFyZ3VtZW50cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9zZXRUaW1lb3V0LW5vLWFyZ3VtZW50cy5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvc2V0VGlt
ZW91dC1uby1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsMTUgKzE2LDE1IEBA
IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MID0gJ1Jlc3VsdDogPHNwYW4gY2xhc3M9InBhc3MiPlRpbWVv
dXQgd2FzIHN1Y2Nlc3NmdWw8L3NwYW4+PGJyPic7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHNldFRp
bWVvdXQoaGFuZGxlVGltZW91dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
c2V0VGltZW91dC1zdHJpbmctYXJndW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvc2V0VGltZW91dC1zdHJpbmctYXJndW1lbnQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3NldFRpbWVvdXQtc3Ry
aW5nLWFyZ3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKQogfQogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtOTAsOCArOTAsOCBAQCBmdW5jdGlv
biBkb25lKGRpZFBhc3MpCiAgICAgZWxzZQogICAgICAgICBsb2coIkZBSUw6IEFsbCB0ZXN0cyBk
aWQgbm90IHBhc3MuIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogc2V0
VGltZW91dDEoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9zZXR0aW5nLXBy
b3BlcnRpZXMtb24tY2xvc2VkLXdpbmRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9zZXR0aW5nLXByb3BlcnRpZXMtb24tY2xvc2VkLXdpbmRvdy5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvc2V0dGlu
Zy1wcm9wZXJ0aWVzLW9uLWNsb3NlZC13aW5kb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4
ICs2LDggQEAgZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpCiAgICAgdy5zdGF0dXMgPSBpOwogICAg
IAogICAgIGlmIChpID09IDIpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgfQogICAgIAogICAgIHNldFRpbWVvdXQoaGFuZGxlVGltZW91dCwgMSk7
ICAgIApAQCAtMTUsMTAgKzE1LDEwIEBAIGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKQogCiBmdW5j
dGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
ICAgICB9CiAgICAgCiAgICAgaSA9IDA7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvc2xvdy11bmxvYWQtaGFuZGxlci1vbmx5LWZyYW1lLWlzLXN0b3BwZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvc2xvdy11bmxvYWQtaGFuZGxlci1v
bmx5LWZyYW1lLWlzLXN0b3BwZWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3Nsb3ctdW5sb2FkLWhhbmRsZXItb25seS1mcmFtZS1pcy1zdG9w
cGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0PgotaWYgKGxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh0ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIGRvbmUoKQog
ewogICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVySFRNTCA9
PSAiIikKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUEFTUyIpKTsKLSAgICBpZiAobGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAodGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiAKIGZ1bmN0aW9uIHJlbW92ZUZyYW1lKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9zbG93LXVubG9hZC1oYW5kbGVyLW92ZXJ3cml0dGVuLWRhdGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvc2xvdy11bmxvYWQtaGFuZGxlci1vdmVy
d3JpdHRlbi1kYXRlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy9zbG93LXVubG9hZC1oYW5kbGVyLW92ZXJ3cml0dGVuLWRhdGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMiwxNiArMiwxNiBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAobGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgiUEFTUyIpKTsKLSAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAodGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvYWRlZCgpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9zbG93LXVubG9hZC1oYW5kbGVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Nsb3ctdW5sb2FkLWhh
bmRsZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3Nsb3ctdW5sb2FkLWhhbmRsZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxNyArMiwx
NyBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVu
Y3Rpb24gZG9uZSgpCiB7CiAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRz
IikuaW5uZXJIVE1MID09ICIiKQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0cyIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQQVNTIikpOwotICAg
IGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9hZGVkKCkgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3RpbWVvdXQtY2FsbGJhY2stc2NvcGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvdGltZW91dC1jYWxsYmFjay1zY29wZS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvdGltZW91
dC1jYWxsYmFjay1zY29wZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogd2lu
ZG93LmNvbXBsZXRpb25Db3VudGVyID0gMDsKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9
CiAgICAgLy8gR2V0IHRoZSBpZnJhbWUncyB3aW5kb3cuCiAgICAgdmFyIGlmcmFtZVdpbmRvdyA9
IHdpbmRvdy5mcmFtZXNbInRlc3RJZnJhbWUiXTsKQEAgLTI5LDggKzI5LDggQEAgZnVuY3Rpb24g
dGVzdCgpCiBmdW5jdGlvbiBjaGVja1Jlc3VsdCgpIHsKICAgICBpZiAoY29tcGxldGlvbkNvdW50
ZXIgPCAyKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy90aW1lb3V0LXJlbGVhc2VkLW9uLWNsb3NlLmh0bWwtZGlzYWJsZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3RpbWVvdXQtcmVsZWFzZWQt
b24tY2xvc2UuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3RpbWVvdXQtcmVsZWFzZWQtb24tY2xvc2UuaHRtbC1kaXNhYmxlZAko
d29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIAogdmFyIG9iamVjdENvdW50QmVmb3JlOwog
ZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAm
JiB3aW5kb3cuR0NDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuR0NDb250cm9sbGVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgd2luZG93LkdDQ29udHJvbGxlci5jb2xsZWN0KCk7CiAgICAg
ICAgIG9iamVjdENvdW50QmVmb3JlID0gd2luZG93LkdDQ29udHJvbGxlci5nZXRKU09iamVjdENv
dW50KCk7CiAgICAgICAgIHZhciBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImlmcmFtZSIpOwpAQCAtMzksNyArMzksNyBAQCBmdW5jdGlvbiB2ZXJpZnkoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIsIGJlZm9yZTogIiArICBvYmplY3RDb3VudEJlZm9yZSArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiwgYWZ0ZXIgbG9hZDogIiArIG9iamVjdENvdW50QWZ0ZXJMb2FkICsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
LCBhZnRlcjogIiArIG9iamVjdENvdW50QWZ0ZXIpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0
PgogPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy90aW1lci1udWxsLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1udWxsLXNjcmlwdC1leGVjdXRp
b24tY29udGV4dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvdGltZXItbnVsbC1zY3JpcHQtZXhlY3V0aW9uLWNvbnRleHQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDxpZnJhbWUgc3JjPSJhYm91dDpibGFuayI+PC9pZnJh
bWU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiBmdW5jdGlvbiBnYygpCkBAIC0zNSw4ICszNSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICB0cnkgeyB3X3NldEludGVydmFsLmNhbGwodywgIiIsIDApOyBhbGVydCgiRkFJTDogbm8gZXhj
ZXB0aW9uIikgfSBjYXRjaCAoZXgpIHsgfQogICAgICAgICB0cnkgeyB3X2NsZWFySW50ZXJ2YWwu
Y2FsbCh3LCAwKSB9IGNhdGNoIChleCkgeyB9CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3Vt
ZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOCwxNSArOCwxNSBAQCBmdW5jdGlvbiB2ZXJpZnkoKSB7CiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9CiAgICAgICAgIGFj
dHVhbFRpbWVyRGVsYXkgPj0gdGltZW91dFZhbHVlID8gJ1BBU1MnIDogJ0ZBSUwgd2l0aCAnICsg
YWN0dWFsVGltZXJEZWxheSArICcgbXMgZGVsYXkuJzsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJl
ZmVyZW5jZUtleSIsIDEpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hl
UHJlZmVyZW5jZUtleSIsIDEpOwogICAgIH0KICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQg
dG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3Rvcnkg
ZW50cmllcy4KICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1hY2Nlc3MtYWZ0ZXItbmF2aWdhdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctYWNjZXNzLWFmdGVy
LW5hdmlnYXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1hY2Nlc3MtYWZ0ZXItbmF2aWdhdGlvbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHdpbmRvd09iamVjdDsKQEAgLTE3LDggKzE3LDgg
QEAgZnVuY3Rpb24gY2hlY2tXaW5kb3dBY2Nlc3MoKQogewogICAgIGlmICh3aW5kb3dPYmplY3Qg
JiYgd2luZG93T2JqZWN0LmRvY3VtZW50ICYmIC9ibGFuay5odG1sLy50ZXN0KHdpbmRvd09iamVj
dC5sb2NhdGlvbikpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcp
LmlubmVySFRNTCA9ICdTVUNDRVNTJzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LWFwcGVuZGFnZXMtY2xlYXJlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctYXBwZW5kYWdlcy1jbGVhcmVkLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctYXBwZW5kYWdlcy1jbGVhcmVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBA
CiA8aHRtbD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctY2xvc2VkLWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1jbG9zZWQtY3Jh
c2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1jbG9zZWQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBA
QAogICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogICAgIDxpZnJhbWUgaWQ9ImFuSWZyYW1l
Ij48L2lmcmFtZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgd2luID0gd2luZG93LmZyYW1lc1swXTsKICAg
ICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YW5JZnJhbWUnKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWNv
bGxlY3Rpb24tbGVuZ3RoLW5vLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1jb2xsZWN0aW9uLWxlbmd0aC1uby1jcmFzaC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWNv
bGxlY3Rpb24tbGVuZ3RoLW5vLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkgKzEy
LDkgQEAgb25jZSB0aGUgdGVzdCBjb21wbGV0ZXMuCiA8ZGl2IGlkPSJzdGF0dXMiPlRlc3QgaW4g
cHJvZ3Jlc3MuLi48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgbXlGcmFtZXMg
PSBzdWJmcmFtZS5mcmFtZXM7CkBAIC0yMiw4ICsyMiw4IEBAIHZhciBteUZyYW1lcyA9IHN1YmZy
YW1lLmZyYW1lczsKIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgdmFyIGZvbyA9IG15RnJhbWVzLmxl
bmd0aDsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhdHVzIikuaW5uZXJUZXh0ID0g
IlNVQ0NFU1MiOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiAKIHN1YmZyYW1lLmRvY3VtZW50LmxvY2F0aW9uID0gInJlc291cmNlcy9ub3RpZnktcGFyZW50
LWRvbmUuaHRtbCI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWNv
bnN0cnVjdG9yLXNldHRhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1jb25zdHJ1Y3Rvci1zZXR0YWJsZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWNvbnN0cnVjdG9yLXNl
dHRhYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiBDYW4ndCBzaGFkb3cv
b3ZlcndyaXRlIHdpbmRvdy5jb25zdHJ1Y3Rvci48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rp
b24gbG9nKG1lc3NhZ2UsIGNvbG9yKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1jb25zdHJ1Y3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctY29uc3RydWN0b3IuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1jb25zdHJ1Y3Rvci5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogd2luZG93IGNvbnN0cnVjdG9yIHNob3VsZG4ndCBi
ZSBkaXJlY3RseSBjYWxsYWJsZS48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1l
c3NhZ2UsIGNvbG9yKSAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
Y3VzdG9tLXByb3RvdHlwZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctY3VzdG9tLXByb3RvdHlwZS1jcmFzaC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWN1c3RvbS1w
cm90b3R5cGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgbmV3UHJvdG90eXBl
ID0gbmV3IE9iamVjdCgpOwogICAgIG5ld1Byb3RvdHlwZS5teU5ld1Byb3RvdHlwZUZ1bmN0aW9u
ID0gZnVuY3Rpb24oKSB7IHJldHVybiAibXlOZXdQcm90b3R5cGVGdW5jdGlvbiI7IH0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctZWFybHktcHJvcGVydGllcy14aHIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWVh
cmx5LXByb3BlcnRpZXMteGhyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctZWFybHktcHJvcGVydGllcy14aHIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAgUmVmZXJlbmNpbmcgWEhSIGNvbnN0cnVjdG9yIGZvciBh
IG5vdCB5ZQogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3dp
bmRvdy1lYXJseS1wcm9wZXJ0aWVzLXhoci1mcmFtZS5odG1sIj48L2lmcmFtZT4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2luZG93LmZyYW1lc1sw
XS5YTUxIdHRwUmVxdWVzdDsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1lYXJseS1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1lYXJseS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctZWFybHkt
cHJvcGVydGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8aHRtbD4K
IDxib2R5IG9ubG9hZD0ndGVzdCgpJz4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5P
cGVuV2luZG93cygpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVu
V2luZG93cygpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICB2YXIgdzsKQEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZG9uZUhhbmRsZXIsIDEpOwogICAgICAgICAgICAgZnVuY3Rpb24gZG9uZUhhbmRs
ZXIoKSB7CiAgICAgICAgICAgICAgICAgaWYgKHcuY2xvc2VkKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWV2
ZW50LW92ZXJyaWRlLW5vLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1ldmVudC1vdmVycmlkZS1uby1jcmFzaC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWV2ZW50LW92
ZXJyaWRlLW5vLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRt
bD4KIDxib2R5PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogd2lu
ZG93LmV2ZW50ID0gbmV3IE9iamVjdDsKIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
ZnVuY3Rpb24tZnJhbWUtZ2V0dGVyLXByZWNlZGVuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWZ1bmN0aW9uLWZyYW1lLWdldHRlci1wcmVj
ZWRlbmNlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctZnVuY3Rpb24tZnJhbWUtZ2V0dGVyLXByZWNlZGVuY2UuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvV2luZG93UHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UsIGNvbG9yKSAKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1mdW5jdGlvbi1uYW1lLWdldHRlci1wcmVjZWRlbmNlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1mdW5jdGlvbi1u
YW1lLWdldHRlci1wcmVjZWRlbmNlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctZnVuY3Rpb24tbmFtZS1nZXR0ZXItcHJlY2VkZW5j
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQ+CiAgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9XaW5kb3dQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
ICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSwgY29sb3IpIAogICAgICAgICB7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWxvY2F0aW9uLXJlcGxhY2UtZnVuY3Rpb25z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1s
b2NhdGlvbi1yZXBsYWNlLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LWxvY2F0aW9uLXJlcGxhY2UtZnVuY3Rpb25z
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxzY3JpcHQ+CiAg
ICAgd2luZG93LmxvY2F0aW9uLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAiaHR0cDov
L3dlYmtpdC5vcmciOyB9Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4K
IDxib2R5PgogWW91IHNob3VsZCBzZWUgdGhpcy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctb2JqZWN0LWNyb3NzLWZyYW1lLWNhbGxzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1vYmplY3QtY3Jvc3MtZnJhbWUt
Y2FsbHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1vYmplY3QtY3Jvc3MtZnJhbWUtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDggQEAKIDxodG1sPgogIDxoZWFkPgogICA8c2NyaXB0PgotICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICBmdW5jdGlvbiBiYXIoKSB7IHdoaWNoID0gInBhcmVudCI7IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSB3aGljaDsgfQogICA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctb25Gb2N1cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1v
bkZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1vbkZvY3VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdHMgd2luZG93Lm9uRm9jdXMgYW5kIHdpbmRvdy5vbkJs
dXIgaGFuZGxlcnMuIEl0IHVzZXMgdGhlIGxheW91dFRlc3RDb250cm9sbGVycyBhYmlsaXR5IHRv
IG1pbWljIGJyaW5naW5nIHRoZSB3aW5kb3cgdG8gdGhlIGZyb250IGFuZCBwdXNoaW5nIGl0IHRv
IHRoZSBiYWNrLgorVGhpcyB0ZXN0cyB3aW5kb3cub25Gb2N1cyBhbmQgd2luZG93Lm9uQmx1ciBo
YW5kbGVycy4gSXQgdXNlcyB0aGUgdGVzdFJ1bm5lcnMgYWJpbGl0eSB0byBtaW1pYyBicmluZ2lu
ZyB0aGUgd2luZG93IHRvIHRoZSBmcm9udCBhbmQgcHVzaGluZyBpdCB0byB0aGUgYmFjay4KIEl0
IGlzIG5vdCBpbnRlbmRlZCB0byBiZSBydW4gaW50ZXJhY3RpdmVseTogd2hlbiB5b3UgcnVuIGl0
IGludGVyYWN0aXZlbHksIHlvdSBzaG91bGQgc2VlICdXaW5kb3cgd2FzIGJsdXJyZWQnIGFuZCAn
V2luZG93IHdhcyBmb2N1c2VkJyBtZXNzYWdlcyBhcyB5b3UgcHVzaCB0aGUgd2luZG93IHRvIHRo
ZSBiYWNrIGFuZCBicmluZyBpdCB0byB0aGUgZnJvbnQsIHJlc3BlY3RpdmVseS4KIAogV2luZG93
IHdhcyBibHVycmVkCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LW9u
Rm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LW9uRm9jdXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1vbkZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUs
MTMgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB3aW5kb3cub25mb2N1cyA9IHdpbmRvd0Zv
Y3VzZWQ7CiAgICAgd2luZG93Lm9uYmx1ciA9IHdpbmRvd0JsdXJyZWQ7CiAgICAgCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcih0cnVlKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKHRy
dWUpOwogICAgICAgICAKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldFdp
bmRvd0lzS2V5KGZhbHNlKTsKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNl
dFdpbmRvd0lzS2V5KHRydWUpOwotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0V2luZG93SXNLZXkoZmFsc2UpOworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRXaW5k
b3dJc0tleShmYWxzZSk7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFdpbmRvd0lzS2V5
KHRydWUpOworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRXaW5kb3dJc0tleShmYWxzZSk7
CiAgICAgfQogfQogCkBAIC0zMyw3ICszMyw3IEBAIGZ1bmN0aW9uIHdpbmRvd0JsdXJyZWQoKSB7
CiB9CiA8L3NjcmlwdD4KIDxib2R5PgotVGhpcyB0ZXN0cyB3aW5kb3cub25Gb2N1cyBhbmQgd2lu
ZG93Lm9uQmx1ciBoYW5kbGVycy4gIEl0IHVzZXMgdGhlIGxheW91dFRlc3RDb250cm9sbGVycyBh
YmlsaXR5IHRvIG1pbWljIGJyaW5naW5nIHRoZSB3aW5kb3cgdG8gdGhlIGZyb250IGFuZCBwdXNo
aW5nIGl0IHRvIHRoZSBiYWNrLgorVGhpcyB0ZXN0cyB3aW5kb3cub25Gb2N1cyBhbmQgd2luZG93
Lm9uQmx1ciBoYW5kbGVycy4gIEl0IHVzZXMgdGhlIHRlc3RSdW5uZXJzIGFiaWxpdHkgdG8gbWlt
aWMgYnJpbmdpbmcgdGhlIHdpbmRvdyB0byB0aGUgZnJvbnQgYW5kIHB1c2hpbmcgaXQgdG8gdGhl
IGJhY2suCiA8cD48Yj5JdCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgcnVuIGludGVyYWN0aXZlbHk6
PC9iPiB3aGVuIHlvdSBydW4gaXQgaW50ZXJhY3RpdmVseSwgeW91IHNob3VsZCBzZWUgJ1dpbmRv
dyB3YXMgYmx1cnJlZCcgYW5kICdXaW5kb3cgd2FzIGZvY3VzZWQnIG1lc3NhZ2VzIGFzIHlvdSBw
dXNoIHRoZSB3aW5kb3cgdG8gdGhlIGJhY2sgYW5kIGJyaW5nIGl0IHRvIHRoZSBmcm9udCwgcmVz
cGVjdGl2ZWx5LjwvcD4KIDx1bCBpZD0iY29uc29sZSI+PC91bD4KIDxzY3JpcHQ+cnVuVGVzdCgp
Ozwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1vcGVu
LXBhcmVudC1uby1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LW9wZW4tcGFyZW50LW5vLXBhcmVudC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LW9wZW4tcGFyZW50LW5v
LXBhcmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiB3aW5kb3cub3BlbigicmVzb3Vy
Y2VzL2Rlc3RpbmF0aW9uLmh0bWwiLCAiX3BhcmVudCIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LW9wZW4tcGVuZGluZy11cmwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LW9wZW4tcGVuZGlu
Zy11cmwuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1vcGVuLXBlbmRpbmctdXJsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCAr
MSw4IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHBvcHVwID0gd2luZG93Lm9wZW4oJ3Jl
c291cmNlcy9kZXN0aW5hdGlvbi5odG1sJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LW9wZW4tc2VsZi1mcm9tLW90aGVyLWZyYW1lLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1vcGVuLXNlbGYtZnJvbS1vdGhl
ci1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LW9wZW4tc2VsZi1mcm9tLW90aGVyLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsMTIgKzMsMTIgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgfQogICAgIAotICAgIHZhciB0ID0gJzxzY3JpcHQ+aWYod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk8L3NjcmknOworICAg
IHZhciB0ID0gJzxzY3JpcHQ+aWYod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpPC9zY3JpJzsKICAgICB0ICs9ICdwdD48ZGl2PklmIHlvdSBjYW4gc2VlIHRoaXMgdGV4
dCBhbmQgaXQgaXMgbm90IGluIGEgc3ViZnJhbWUgdGhlIHRlc3QgaGFzIEZBSUxFRC48L2Rpdj4n
CiAgICAgd2luZG93WydzdWJmcmFtZSddLm9wZW4oJ2RhdGE6dGV4dC9odG1sLCcgKyB0LCAnX3Nl
bGYnKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctb3Blbi1z
ZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1vcGVuLXNlbGYuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1vcGVuLXNlbGYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
d2luZG93Lm9wZW4oInJlc291cmNlcy9kZXN0aW5hdGlvbi5odG1sIiwgIl9zZWxmIik7CiA8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctb3Blbi10b3Au
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LW9w
ZW4tdG9wLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctb3Blbi10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogd2luZG93
Lm9wZW4oInJlc291cmNlcy9kZXN0aW5hdGlvbi5odG1sIiwgIl90b3AiKTsKIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1hcmdzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC00LDkgKzQsOSBAQAogPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIAogdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpOwpAQCAtMTcsOCArMTcsOCBAQCBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7CiAgICAgZWxz
ZQogICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAiUmVjZWl2ZWQgbWVzc2FnZSAnIiArIGV2
dC5kYXRhICsgIic8YnI+IjsKIAotICAgIGlmIChldnQuZGF0YSA9PSAnZG9uZScgJiYgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgaWYgKGV2dC5kYXRhID09ICdkb25lJyAmJiB3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgb25tZXNzYWdlLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFycmF5cy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJy
YXlzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSAr
NCw5IEBACiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiIvPgogPGRpdiBpZD0iY29uc29sZSIvPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBjb25z
b2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKQEAgLTE3LDggKzE3LDgg
QEAgZnVuY3Rpb24gcmVjaWV2ZU1lc3NhZ2UoZXZ0KSB7CiAgICAgICB2YXIgZGF0YSA9IGV2dC5k
YXRhOwogICAgICAgaWYgKGRhdGEuaSA9PSAwKSB7CiAgICAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gIkRvbmUuIgotICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgICAgaWYgKGRhdGEuaSA8
IG1heENvdW50KSB7CkBAIC01MCw4ICs1MCw4IEBAIGZ1bmN0aW9uIHJlY2lldmVNZXNzYWdlKGV2
dCkgewogICAgICAgfQogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gIkV4Y2VwdGlvbiAiICsgZSArICI8YnI+IjsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J21lc3NhZ2UnLCByZWNpZXZlTWVzc2FnZSwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNs
b25lLWZyYW1lcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZyYW1lcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC01LDkgKzUsOSBAQAogPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiPgog
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpOwpAQCAtNzYsOCArNzYsOCBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKQogdmFyIGkgPSAwOwogd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkg
ewogICAgIGlmIChzYWZlVG9TdHJpbmcoZnJhbWVzWzBdLnRlc3RzW2ldLmV2ZW50RGF0YSkgPT0g
J2RvbmUnKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1v
cmllbnRhdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8cHJlIGlkPSJwcmUiPjwvcHJlPgogCiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgCiB2YXIgbG9nQnVmZmVyID0gW107CiBmdW5jdGlvbiBsb2co
cykKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1n
ZW9sb2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1nZW9sb2NhdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZ2VvbG9jYXRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAgb2JqZWN0LCBhbG9uZyB3aXRo
IHRoZWlyIHR5cGVzLjwvcD4KIDxwcmUgaWQ9InByZSI+PC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAKIHZhciBsb2dCdWZmZXIgPSBbXTsKIGZ1bmN0aW9uIGxvZyhzKQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLXBlcmZvcm1h
bmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLXBlcmZvcm1hbmNlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1wZXJmb3JtYW5jZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHByZSBpZD0icHJlIj48L3ByZT4KIAog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogdmFyIGxvZ0J1ZmZlciA9IFtdOwogZnVuY3Rp
b24gbG9nKHMpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3Bl
cnR5LWNsZWFyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0eS1jbGVhcmluZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWNsZWFyaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDE2ICs0MiwxNiBAQCBmdW5jdGlvbiBkaWRGaW5pc2hMb2Fk
aW5nKGNoaWxkV2luZG93KSAvCiAgICAgICAgIHNob3VsZEJlKCduYW1lJyBpbiBjaGlsZFdpbmRv
dywgIiduYW1lJyBpbiBjaGlsZFdpbmRvdyIsIHRydWUpOwogICAgICAgICBzaG91bGRCZShjaGls
ZFdpbmRvdy5uYW1lLCAiY2hpbGRXaW5kb3cubmFtZSIsICJ0ZXN0Iik7CiAgICAgCi0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIAogZnVuY3Rp
b24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wcm9wZXJ0eS1zaGFkb3dpbmctbmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktc2hhZG93aW5nLW5h
bWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0eS1zaGFkb3dpbmctbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
Miw4ICsxMiw4IEBAIGZ1bmN0aW9uIGxvZyhyZXN1bHQpCiAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigicHJlIikudGV4dENvbnRlbnQgPSByZXN1bHQ7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IH0KIAogdmFyIG5hbWUgPSAidGVzdCI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnR5LXNoYWRvd2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktc2hhZG93aW5nLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dHktc2hhZG93aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAKIDxib2R5
PgogICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlm
ICh0aGlzLmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAodGhpcy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgLy8gV2luZG93IEF0dHJp
YnV0ZXMKICAgICAgICAgdmFyIGxvY2F0aW9uYmFyID0gMTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZW1vdmUtZXZlbnQtbGlz
dGVuZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1yZW1vdmUtZXZlbnQtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTUsOCArMTUsOCBAQCBmdW5jdGlvbiBldmVudEhhbmRsZXIoZXZlbnQpCiB9CiBmdW5jdGlvbiB0
ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB2YXIgZXZlbnQgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnRzIik7CiAgICAgZXZlbnQuaW5pdEV2ZW50KCJmb28i
LCB0cnVlLCBmYWxzZSk7CiAgICAgYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgZXZlbnRIYW5kbGVy
LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6
ZS1hbmQtbW92ZS1hcmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1hbmQtbW92ZS1hcmd1bWVudHMuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUt
YW5kLW1vdmUtYXJndW1lbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAK
ICAgICAgICAgcmVzZXRZID0gd2luZG93LnNjcmVlblk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICByZXNldCgpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1hbmQtbW92ZS1zdWItZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1hbmQtbW92
ZS1zdWItZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1yZXNpemUtYW5kLW1vdmUtc3ViLWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgcmVzZXRZID0gd2luZG93LnNjcmVlblk7
CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICByZXNldCgpOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1jb250ZW50
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cmVzaXplLWNvbnRlbnRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWNvbnRlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDggKzEyLDggQEAKICAgICBkaW1lbnNpb25zIGluY3JlYXNlIGJ5IDEweDEwLjwvcD4K
IDwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB2YXIg
cmVmZXJlbmNlTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZlcmVuY2UnKTsKICAg
ICBjb25zb2xlLmxvZygnSW5pdGlhbCByZWZlcmVuY2Ugbm9kZSBkaW1lbnNpb25zICcgKwogICAg
ICAgICByZWZlcmVuY2VOb2RlLm9mZnNldFdpZHRoICsgJyB4ICcgKyByZWZlcmVuY2VOb2RlLm9m
ZnNldEhlaWdodCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJl
c2l6ZS1uYW4uaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXJlc2l6ZS1uYW4uaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUtbmFuLmh0bWwt
ZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiA8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCS8vIEZJWE1FIERpc2FibGVk
IGJlY2F1c2Ugb2YgPHJkYXI6Ly9wcm9ibGVtLzU1NjkxMTk+CiAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgIHdpbmRvdy5tb3ZlVG8oMCwgMCk7CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDwvaGVhZD4KIDxib2R5PgogPHNjcmlwdCBs
YW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHdpbmRvdy5tb3ZlVG8oMCwwKTsKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JlZW4tcHJvcGVydGllcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctc2NyZWVuLXBy
b3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1zY3JlZW4tcHJvcGVydGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogZGVwdGggPSB3aW5kb3cuc2NyZWVu
LnBpeGVsRGVwdGg7CiBpZiAoZGVwdGggPT0gMTYgfHwgZGVwdGggPT0gMjQpIHsKICAgZG9jdW1l
bnQud3JpdGUoIlBBU1M6IHdpbmRvdy5zY3JlZW4ucGl4ZWxEZXB0aCBpcyBlaXRoZXIgMTYgb3Ig
MjQiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctc2Nyb2xsLWFy
Z3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctc2Nyb2xsLWFyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXNjcm9sbC1hcmd1bWVudHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTksOCArMTksOCBAQAogICAgICAgICByZXNldFkgPSB3aW5kb3cuc2Nyb2xs
WTsKICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHJlc2V0KCk7
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctc3BlY2lhbC1wcm9w
ZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1zcGVjaWFsLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zcGVjaWFsLXByb3BlcnRpZXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQCBidWlsdC1pbiBwcm9wZXJ0aWVzIGluIE1vemls
bGEgYnV0IG5vdCBJCiA8c2NyaXB0Pgogd2luZG93LmN1c3RvbT1uZXcgT2JqZWN0KCk7CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cu
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIAogPGRpdiBzdHlsZT0idmlzaWJp
bGl0eTogaGlkZGVuOyB3aWR0aDogMHB4OyBoZWlnaHQ6IDBweDsiPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy14eS1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy14eS1wcm9wZXJ0aWVzLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
eHktcHJvcGVydGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIGZ1bmN0
aW9uIG1vdXNlZXYoZXZlbnQpIHsKICAgICB9CiB9CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgLy8gdGVzdCBhIG5vcm1hbCBtb3Vz
ZSB0bwogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwogICAgICAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9Mb2NhdGlvbi9hbmNlc3Rvci1vcmlnaW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L0xvY2F0aW9uL2FuY2VzdG9yLW9yaWdpbnMuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L0xvY2F0aW9uL2FuY2Vz
dG9yLW9yaWdpbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKIH0K
IAogdmFyIG9yaWdpbnMgPSBsb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnM7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvTG9jYXRpb24vc2V0LWxvY2F0aW9uLWFmdGVyLWNsb3NlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L0xvY2F0aW9uL3Nl
dC1sb2NhdGlvbi1hZnRlci1jbG9zZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvTG9jYXRpb24vc2V0LWxvY2F0aW9uLWFmdGVyLWNsb3NlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsMTAgQEAKIFRoaXMgdGVzdHMgb3BlbnMgYSBu
ZXcgd2luZG93LCBzZXRzIGEgdGltZW91dCB0byBjbG9zZSBpdCwgdGhlbiBzZXRzIGEgdGltZW91
dCB0byBuYXZpZ2F0ZSBpdCB2aWEgd2luZG93LmxvY2F0aW9uLgogV2UgcGFzcyBpZiB3ZSBkb24n
dCBjcmFzaCB3aGVuIHNldHRpbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBhbHJlYWR5IGNsb3NlZCB3
aW5kb3cuCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHcgPSB3aW5kb3cub3BlbigncmVzb3Vy
Y2VzL3NldC1sb2NhdGlvbi1hZnRlci1jbG9zZS1uZXctd2luZG93Lmh0bWwnKTsKQEAgLTE4LDgg
KzE4LDggQEAgZnVuY3Rpb24gcHJvY2Vzc01lc3NhZ2UoZXZlbnQpIHsKICAgICAgICAgdy5jbG9z
ZSgpOwogICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImNsb3NlZCIpIHsKICAgICAgICAgdy5s
b2NhdGlvbiA9ICcnOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9Mb2NhdGlvbi93aW5kb3ctc2hhZG93LWxvY2F0aW9uLXVzaW5nLWpzLW9iamVjdC13aXRoLXRv
U3RyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L0xv
Y2F0aW9uL3dpbmRvdy1zaGFkb3ctbG9jYXRpb24tdXNpbmctanMtb2JqZWN0LXdpdGgtdG9TdHJp
bmcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L0xvY2F0aW9uL3dpbmRvdy1zaGFkb3ctbG9jYXRpb24tdXNpbmctanMtb2JqZWN0LXdpdGgtdG9T
dHJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxNiArNSwxNiBAQAogPC9oZWFkPgogPGJv
ZHk+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAg
dmFyIHJlc3VsdDsKICAgICBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiAgICAgewogICAgICAgICBy
ZXN1bHQgPSBub3JtYWxpemVVUkwoU3RyaW5nKHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24pKTsK
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdCIsICIncGFzcy5odG1sJyIpOwotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4KIDxpZnJh
bWUgb25sb2FkPSJmcmFtZUxvYWRlZCgpIiBzcmM9InJlc291cmNlcy93aW5kb3ctc2hhZG93LWxv
Y2F0aW9uLXVzaW5nLWpzLW9iamVjdC13aXRoLXRvU3RyaW5nLWlmcmFtZS5odG1sIj48L2lmcmFt
ZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9Mb2NhdGlvbi93aW5kb3ctc2hh
ZG93LWxvY2F0aW9uLXVzaW5nLXN0cmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9Mb2NhdGlvbi93aW5kb3ctc2hhZG93LWxvY2F0aW9uLXVzaW5nLXN0
cmluZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvTG9jYXRpb24vd2luZG93LXNoYWRvdy1sb2NhdGlvbi11c2luZy1zdHJpbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNSwxNiArNSwxNiBAQAogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgdmFyIHJlc3VsdDsKICAg
ICBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiAgICAgewogICAgICAgICByZXN1bHQgPSBub3JtYWxp
emVVUkwoU3RyaW5nKHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24pKTsKICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdCIsICIncGFzcy5odG1sJyIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4KIDxpZnJhbWUgb25sb2FkPSJmcmFt
ZUxvYWRlZCgpIiBzcmM9InJlc291cmNlcy93aW5kb3ctc2hhZG93LWxvY2F0aW9uLXVzaW5nLXN0
cmluZy1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvcmVzb3VyY2VzL2Rlc3RpbmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNlcy9kZXN0aW5hdGlvbi5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL2Rlc3RpbmF0
aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACiA8cD5Ib29yYXksIHlvdSBn
b3QgaGVyZSEgVGhhdCBtZWFucyB0aGUgdGVzdCBzdWNjZWVkZWQhPC9wPgotPHNjcmlwdD5pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7PC9zY3JpcHQ+Cis8c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvcmVzb3VyY2VzL3NpYmxpbmctc3ViZnJhbWUtY29udGVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvc2libGluZy1zdWJmcmFtZS1j
b250ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9yZXNvdXJjZXMvc2libGluZy1zdWJmcmFtZS1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gbG9hZGVkKCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWRl
ZCgpIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvc2xvd191
bmxvYWRfaGFuZGxlcjEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvcmVzb3VyY2VzL3Nsb3dfdW5sb2FkX2hhbmRsZXIxLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvc2xvd191bmxvYWRf
aGFuZGxlcjEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQCBmdW5jdGlvbiBw
YXVzZSgpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBwYXJlbnQuZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiRkFJTCIpKTsKLSAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAodGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG5vcGF1c2UoKSB7
CkBAIC0yMyw4ICsyMyw4IEBAIGZ1bmN0aW9uIG5vcGF1c2UoKSB7CiAgICAgICAgIHZhciB0aW1l
MSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgIHBh
cmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJGQUlMIikpOwotICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh0ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfQogfQogZnVuY3Rpb24gbm9wYXVzZTEoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL3dpbmRvdy1hcHBlbmRhZ2VzLWNsZWFyZWQtcmVzdWx0
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJj
ZXMvd2luZG93LWFwcGVuZGFnZXMtY2xlYXJlZC1yZXN1bHRzLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvd2luZG93LWFwcGVu
ZGFnZXMtY2xlYXJlZC1yZXN1bHRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDgg
QEAgc2hvdWxkQmVVbmRlZmluZWQoJ3dpbmRvdy5ldmVudCcpOwogPC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvd2luZG93LWVhcmx5LXByb3Bl
cnRpZXMteGhyLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3Jlc291cmNlcy93aW5kb3ctZWFybHktcHJvcGVydGllcy14aHItZnJhbWUuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNl
cy93aW5kb3ctZWFybHktcHJvcGVydGllcy14aHItZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNSw4ICs1LDggQEAgZnVuY3Rpb24gbG9hZCgpIHsKICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOwogICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgdG9wLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUw9IlNVQ0NFU1MiOwotICAgIGlmICh0
b3AubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHRvcC5sYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHRvcC50ZXN0UnVubmVyKQorICAgICAgICB0b3AudGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgIH0KICAgeGhyLm9wZW4oIkdFVCIsICJ3aW5kb3ctZWFy
bHktcHJvcGVydGllcy14aHItZnJhbWUuaHRtbCIpOwogICB4aHIuc2VuZChmYWxzZSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLXRl
c3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3NjcmlwdC10
ZXN0cy9wb3N0bWVzc2FnZS10ZXN0LmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLXRlc3QuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
Iik7CkBAIC0xMzksOCArMTM5LDggQEAgZnVuY3Rpb24gb25tZXNzYWdlKGV2dCkgewogICAgICAg
ICBzaG91bGRCZSgiZXZlbnREYXRhIiwgbWVzc2FnZSk7CiAgICAgfQogCi0gICAgaWYgKHNhZmVU
b1N0cmluZyhldnQuZGF0YSkgPT0gJ2RvbmUnICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmIChz
YWZlVG9TdHJpbmcoZXZ0LmRhdGEpID09ICdkb25lJyAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdtZXNzYWdlJywgb25tZXNzYWdlLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9iZWZvcmVsb2FkL2NhY2hlZC1pbWFnZS1iZWZvcmUtbG9hZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvY2FjaGVkLWltYWdlLWJlZm9yZS1s
b2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9y
ZWxvYWQvY2FjaGVkLWltYWdlLWJlZm9yZS1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw4IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ByaW50LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgIH0KIAogICAgIHdpbmRvdy5fYmVmb3JlbG9hZGZpcmVkID0gZmFsc2U7
CkBAIC0yNiw4ICsyNiw4IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcHJp
bnQoIkZBSUw6IGltYWdlIGNsYWltcyBub3QgdG8gYmUgMTZweCB3aWRlLiIsICJyZWQiKTsKIAot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FjaGVkSW1hZ2Uuc3JjID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm9yaWdpbmFsSW1hZ2UiKS5zcmM7CiAgICAgICAgIGNhY2hlZEltYWdlLnN0eWxl
LnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9y
ZWxvYWQvZmxhc2gtYmVmb3JlLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9iZWZvcmVsb2FkL2ZsYXNoLWJlZm9yZS1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvZmxhc2gtYmVmb3JlLWxvYWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxib2R5PgogPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIAogPG9iamVj
dCBpZD0icGx1Z2luIiBvbmJlZm9yZWxvYWQ9InJldHVybiBmYWxzZSIgdHlwZT0iYXBwbGljYXRp
b24veC1zaG9ja3dhdmUtZmxhc2giIGRhdGE9Ii4uLy4uLy4uL3BsdWdpbnMvcmVzb3VyY2VzL3Np
bXBsZV9ibGFuay5zd2YiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2Zy
YW1lLWJlZm9yZS1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
YmVmb3JlbG9hZC9mcmFtZS1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2ZyYW1lLWJlZm9yZS1sb2FkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8Ym9keT4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIDwvc2NyaXB0PgogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2ltYWdlLWJlZm9yZS1sb2FkLWlubmVySFRN
TC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvaW1h
Z2UtYmVmb3JlLWxvYWQtaW5uZXJIVE1MLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvaW1hZ2UtYmVmb3JlLWxvYWQtaW5uZXJIVE1MLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3ByaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJiZWZvcmVsb2FkIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAg
ICAgIHByaW50KCJQQVNTIiwgImdyZWVuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9i
ZWZvcmVsb2FkL2ltYWdlLWJlZm9yZS1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vYmVmb3JlbG9hZC9pbWFnZS1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2ltYWdlLWJlZm9yZS1s
b2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8Ym9keT4KIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIDwvc2NyaXB0
PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2ltYWdlLW9iamVjdC1i
ZWZvcmUtbG9hZC1pbm5lckhUTUwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9iZWZvcmVsb2FkL2ltYWdlLW9iamVjdC1iZWZvcmUtbG9hZC1pbm5lckhUTUwuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9pbWFn
ZS1vYmplY3QtYmVmb3JlLWxvYWQtaW5uZXJIVE1MLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OSArMiw5IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ByaW50LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWxvYWQiLCBm
dW5jdGlvbihldmVudCkgewpAQCAtMTcsOCArMTcsOCBAQAogICAgICAgICAgICAgaWYgKHN0eWxl
LndpZHRoICE9ICJhdXRvIiB8fCBzdHlsZS5oZWlnaHQgIT0gImF1dG8iKQogICAgICAgICAgICAg
ICAgIHByaW50KCJGQUlMIiwgInJlZCIpOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0
PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9pbWFnZS1v
YmplY3QtYmVmb3JlLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9iZWZvcmVsb2FkL2ltYWdlLW9iamVjdC1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2ltYWdlLW9iamVjdC1iZWZv
cmUtbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiAgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wcmludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4K
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVsb2FkIiwgZnVuY3Rpb24oZXZlbnQpIHsKQEAgLTE3
LDggKzE3LDggQEAKICAgICAgICAgICAgIGlmIChzdHlsZS53aWR0aCAhPSAiYXV0byIgfHwgc3R5
bGUuaGVpZ2h0ICE9ICJhdXRvIikKICAgICAgICAgICAgICAgICBwcmludCgiRkFJTCIsICJyZWQi
KTsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2Fk
L2xpbmstYmVmb3JlLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAog
PHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9jaycpLm9mZnNldFdpZHRo
ID09IDEwMCkKICAgICAgICAgcHJpbnQoIlBBU1MiLCAiZ3JlZW4iKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcGktYmVmb3JlLWxvYWQueGh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9waS1iZWZvcmUtbG9hZC54aHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9waS1i
ZWZvcmUtbG9hZC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogPHNjcmlw
dD4KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9jaycpLm9mZnNldFdpZHRoID09IDEw
MCkKICAgICAgICAgcHJpbnQoIlBBU1MiLCAiZ3JlZW4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLWJhZC1vYmplY3QtaW4tYmVmb3JlbG9hZC1saXN0ZW5l
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVt
b3ZlLWJhZC1vYmplY3QtaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3JlbW92ZS1iYWQtb2JqZWN0
LWluLWJlZm9yZWxvYWQtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkg
QEAKIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJpbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICB2YXIgY291bnQgPSAwOwpAQCAtMjcsMTUgKzI3LDE1IEBACiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm9i
amVjdCIpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIHByaW50KCJQQVNTIiwgImdyZWVuIik7
Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoKytjb3VudCA+IG1heENvdW50KSB7
CiAgICAgICAgICAgICAgICAgcHJpbnQoIkZBSUwiLCAicmVkIik7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3JlbW92ZS1mbGFzaC1pbi1i
ZWZvcmVsb2FkLWxpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vYmVmb3JlbG9hZC9yZW1vdmUtZmxhc2gtaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3JlbW92
ZS1mbGFzaC1pbi1iZWZvcmVsb2FkLWxpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OSArMiw5IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ByaW50LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgdmFyIGNvdW50ID0gMDsKQEAgLTI3LDE1ICsyNywxNSBA
QAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJvYmplY3QiKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICBwcmludCgiUEFTUyIsICJn
cmVlbiIpOwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCsrY291bnQgPiBtYXhD
b3VudCkgewogICAgICAgICAgICAgICAgIHByaW50KCJGQUlMIiwgInJlZCIpOwotICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9yZW1vdmUtZnJh
bWUtaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLWZyYW1lLWluLWJlZm9yZWxvYWQtbGlzdGVuZXIu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9h
ZC9yZW1vdmUtZnJhbWUtaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcmlu
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
YmVmb3JlbG9hZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBpZiAoZXZlbnQudGFy
Z2V0ICYmIGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vYmVmb3JlbG9hZC9yZW1vdmUtaW1hZ2UtaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLWlt
YWdlLWluLWJlZm9yZWxvYWQtbGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9yZW1vdmUtaW1hZ2UtaW4tYmVmb3JlbG9hZC1s
aXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiAgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wcmludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4K
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHZhciBjb3VudCA9IDA7CkBAIC0yNiwxNSArMjYsMTUgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIikubGVuZ3RoKSB7CiAg
ICAgICAgICAgICAgICAgcHJpbnQoIlBBU1MiLCAiZ3JlZW4iKTsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmICgrK2NvdW50ID4gbWF4Q291bnQpIHsKICAgICAgICAgICAgICAgICBw
cmludCgiRkFJTCIsICJyZWQiKTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLWxpbmstaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3Zl
LWxpbmstaW4tYmVmb3JlbG9hZC1saXN0ZW5lci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3JlbW92ZS1saW5rLWluLWJlZm9yZWxvYWQt
bGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJpbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWxvYWQiLCBmdW5jdGlvbihldmVudCkg
ewogICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZXZl
bnQudGFyZ2V0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3Zl
LXNjcmlwdC1pbi1iZWZvcmVsb2FkLWxpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9yZW1vdmUtc2NyaXB0LWluLWJlZm9yZWxvYWQtbGlz
dGVuZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVm
b3JlbG9hZC9yZW1vdmUtc2NyaXB0LWluLWJlZm9yZWxvYWQtbGlzdGVuZXIuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcHJpbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImJlZm9yZWxvYWQiLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgdmFyIHNj
cmlwdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9yZW1vdmUiKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLXZpZGVvLWluLWJlZm9yZWxv
YWQtbGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZv
cmVsb2FkL3JlbW92ZS12aWRlby1pbi1iZWZvcmVsb2FkLWxpc3RlbmVyLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVtb3ZlLXZpZGVv
LWluLWJlZm9yZWxvYWQtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkg
QEAKIDxoZWFkPgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJpbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICB2YXIgY291bnQgPSAwOwpAQCAtMjYsMTUgKzI2LDE1IEBACiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInZp
ZGVvIikubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgcHJpbnQoIlBBU1MiLCAiZ3JlZW4iKTsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgrK2NvdW50ID4gbWF4Q291bnQpIHsK
ICAgICAgICAgICAgICAgICBwcmludCgiRkFJTCIsICJyZWQiKTsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvc2NyaXB0LWJlZm9yZS1sb2Fk
LWR5bmFtaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVs
b2FkL3NjcmlwdC1iZWZvcmUtbG9hZC1keW5hbWljLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvc2NyaXB0LWJlZm9yZS1sb2FkLWR5bmFt
aWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCB3b3Jrcy48L3A+CiA8ZGl2
IGlkPSdjb25zb2xlJz48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogZnVu
Y3Rpb24gYmVmb3JlTG9hZEZ1bmMoKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVm
b3JlbG9hZC9zY3JpcHQtYmVmb3JlLWxvYWQteGh0bWwueGh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9zY3JpcHQtYmVmb3JlLWxvYWQteGh0bWwueGh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQv
c2NyaXB0LWJlZm9yZS1sb2FkLXhodG1sLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsx
MSw4IEBAIHdvcmtzLjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgCiBmdW5jdGlvbiBiZWZvcmVMb2FkRnVuYygpCiB7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3NjcmlwdC1iZWZvcmUtbG9hZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvc2NyaXB0LWJlZm9y
ZS1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Jl
Zm9yZWxvYWQvc2NyaXB0LWJlZm9yZS1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCAr
OSw4IEBAIHdvcmtzLjwvcD4KIDxocj4KIDxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IG9uYmVmb3JlbG9hZD0icHJpbnQo
J1BBU1MnLCAnZ3JlZW4nKTsgcmV0dXJuIGZhbHNlIiBzcmM9InJlc291cmNlcy9mYWlsLmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQv
dmlkZW8tYmVmb3JlLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9iZWZvcmVsb2FkL3ZpZGVvLWJlZm9yZS1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvdmlkZW8tYmVmb3JlLWxvYWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNSwxMyArNSwxMyBAQAogPGJvZHk+CiA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogPC9zY3JpcHQ+CiAKLTx2aWRlbyBzcmM9Ii4uLy4uLy4uL21lZGlhL2NvbnRlbnQvdGVzdC5t
cDQiIG9uYmVmb3JlbG9hZD0icHJpbnQoJ1BBU1MnLCAnZ3JlZW4nKTsgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsgcmV0dXJuIGZhbHNlOyIgb25sb2FkPSJwcmludCgnRkFJTCcsICdyZWQnKTsgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsiPjwvdmlkZW8+Cis8dmlkZW8gc3JjPSIuLi8uLi8uLi9tZWRpYS9jb250ZW50L3Rl
c3QubXA0IiBvbmJlZm9yZWxvYWQ9InByaW50KCdQQVNTJywgJ2dyZWVuJyk7IGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyByZXR1cm4gZmFsc2U7
IiBvbmxvYWQ9InByaW50KCdGQUlMJywgJ3JlZCcpOyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHdp
bmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsiPjwvdmlkZW8+CiAKIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvZHVt
cE5vZGVMaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZS9kdW1wTm9kZUxpc3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9kdW1wTm9kZUxpc3Qu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxkaXYgaWQ9InRlc3QiIGNsYXNz
PSJvbmUgdHdvIj48ZGl2IGNsYXNzPSJvbmUgdHdvIj5saW5lIDQ8L2Rpdj48cCBjbGFzcz0idHdv
Ij5saW5lIDU8L3A+PC9kaXY+CiA8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+PC9wPgogPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9yZXNvdXJjZXMvY29tbW9uLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvcmVzb3Vy
Y2VzL2NvbW1vbi5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS9yZXNvdXJjZXMvY29tbW9uLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcgKzEsNyBAQAogLy8gcnVucyBhIHRlc3QgYW5kIHdyaXRlcyBhIGxvZwogZnVuY3Rp
b24gdChjb2xsZWN0aW9uLCBlbGVtZW50cykgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIHZhciBs
b2cgPSAiIiwKICAgICAgIHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiciIpLApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2EuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvYS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
Myw4ICsxMyw4IEBAIHZhbHVlIG9yICJhYm91dDpibGFuayIgZm9yIGZyYW1lcy4gVGhlIHIKICJh
Ym91dDpibGFuayIuIElmIGl0IGlzIGVtcHR5LCB0aGVuIHRoaXMgdGVzdCB3aWxsIGhhbmcuCiA8
c2NyaXB0Pgogd3JpdGVEb3QoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogPC9zY3JpcHQ+CiA8L0JPRFk+CiA8
L0hUTUw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY29uc3RydWN0b3Jz
LWNhY2hlZC1uYXZpZ2F0ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZXNvdXJjZXMvY29uc3RydWN0b3JzLWNhY2hlZC1uYXZpZ2F0ZS5qcwkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NvbnN0cnVjdG9ycy1jYWNoZWQt
bmF2aWdhdGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIAogdmFyIGNvbnN0cnVjdG9ycyA9IFsiSW1hZ2UiLCAiTWVzc2FnZUNoYW5uZWwiLCAi
T3B0aW9uIiwgIlhNTEh0dHBSZXF1ZXN0IiwgIkF1ZGlvIl07CiAKQEAgLTQ0LDggKzQ0LDggQEAg
d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfTsKICAgICB0ZXN0RnJhbWUuc3JjID0gJ2RhdGE6dGV4dC9odG1sLDxzY3JpcHQ+dmFyIGNv
bnN0cnVjdG9ycyA9IFsiSW1hZ2UiLCAiTWVzc2FnZUNoYW5uZWwiLCAiT3B0aW9uIiwgIlhNTEh0
dHBSZXF1ZXN0IiwgIkF1ZGlvIl07JwogICAgICAgICAgICAgICAgICAgKyAnZm9yKHZhciBpID0g
MDsgaSA8IGNvbnN0cnVjdG9ycy5sZW5ndGg7IGkrKykgaWYod2luZG93W2NvbnN0cnVjdG9yc1tp
XV0pJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2V4Y2VwdGlvbi1uby1m
cmFtZS1pbmxpbmUtc2NyaXB0LWNyYXNoLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9leGNlcHRpb24tbm8tZnJhbWUtaW5saW5lLXNjcmlw
dC1jcmFzaC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmVzb3VyY2VzL2V4Y2VwdGlvbi1uby1mcmFtZS1pbmxpbmUtc2NyaXB0LWNyYXNoLWlm
cmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiBmdW5jdGlvbiBjcmFzaCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9yZXNvdXJjZXMvamF2YXNjcmlwdC11cmwtY3Jhc2gtZnVuY3Rpb24taWZyYW1lLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2phdmFzY3JpcHQtdXJs
LWNyYXNoLWZ1bmN0aW9uLWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvamF2YXNjcmlwdC11cmwtY3Jhc2gtZnVuY3Rpb24taWZy
YW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcgKzE2LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpCiB7CiAgICAgdGVzdCgpOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfSwgMCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3Jlc291cmNlcy9uZXctbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXNvdXJjZXMvbmV3LWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9uZXctbG9jYXRpb24uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IAogPC9zY3JpcHQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9zY3JpcHQ1LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9zY3JpcHQ1LmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZXNvdXJjZXMvc2NyaXB0NS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKIGxvZygi
NSIpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMv
c2V0LWZyYW1lLXNyYy13aGlsZS1ydW5uaW5nLXNjcmlwdC1pbi1mcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zZXQtZnJhbWUtc3JjLXdoaWxl
LXJ1bm5pbmctc2NyaXB0LWluLWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zZXQtZnJhbWUtc3JjLXdoaWxlLXJ1bm5pbmctc2Ny
aXB0LWluLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4K
IDxzY3JpcHQ+CiB2YXIgZiA9IHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aWZyYW1lJylbMF0KLWYub25sb2FkID0gZnVuY3Rpb24oKSB7IGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfQorZi5vbmxv
YWQgPSBmdW5jdGlvbigpIHsgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsgfQogZi5zcmM9ImFib3V0OmJsYW5rIgogPC9zY3JpcHQ+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1k
cml2ZXIuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291
cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAs
NyBAQCBmdW5jdGlvbiBkb25lVGVzdCgpIHsKICAgICBsb2coIlRFU1QgQ09NUExFVEVEIik7CiAg
ICAgaWYgKHdpbmRvdy50ZWFyRG93bk9uY2UpCiAgICAgICAgIHdpbmRvdy50ZWFyRG93bk9uY2Uo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiB9CiAKIC8vIEEgdGVzdCBkcml2ZXIuIENhbGwgdGhpcyBib2R5Lm9u
bG9hZC4KQEAgLTE0OCw5ICsxNDgsOSBAQCBmdW5jdGlvbiBkb1Rlc3QodGVzdHMpIHsKICAgICBp
ZiAod2luZG93LnNldFVwT25jZSkKICAgICAgICAgd2luZG93LnNldFVwT25jZSgpOwogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgIH0KIAogICAgIGNsZWFuVXAoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291
cmNlcy90ZXN0LXN1Y2Nlc3NmdWwtZGVzdGluYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvdGVzdC1zdWNjZXNzZnVsLWRlc3RpbmF0aW9uLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy90
ZXN0LXN1Y2Nlc3NmdWwtZGVzdGluYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0
LDggQEAKIElmIHRoaXMgcGFnZSBhcHBlYXJzIHdpdGhvdXQgYSBjcmFzaCwgdGhlIHRlc3QgaGFz
IHBhc3NlZC4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBkb25lKCkgewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2JvZHk+PC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVzb3VyY2VzL3dyYXBwZXItY29udGV4dC1pbm5lci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy93cmFwcGVyLWNvbnRleHQtaW5u
ZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL3dyYXBwZXItY29udGV4dC1pbm5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsx
NSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0b3Au
d3JpdGVPdXRwdXQoIkZBSUwiKTsKICAgICAgfQotICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2NyaXB0LXRlc3RzL2Nzcy1tZWRpYXJ1bGUtcGFyZW50UnVsZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvY3NzLW1lZGlhcnVsZS1wYXJlbnRS
dWxlLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQt
dGVzdHMvY3NzLW1lZGlhcnVsZS1wYXJlbnRSdWxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDgg
KzIsOCBAQCBkZXNjcmlwdGlvbigKICdUaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBwYXJlbnRSdWxl
IG9uIHRoZSBjaGlsZCBydWxlIG9mIE1lZGlhUnVsZSBpcyBlcXVhbCB0byB0aGF0IE1lZGlhUnVs
ZS4nCiApOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwogaGVhZC5pbm5lckhUTUwgPSAiPHN0eWxlPkBtZWRpYSBh
bGwgeyBhIHsgYm9yZGVyLWNvbG9yOiByZWQ7IH0gfTwvc3R5bGU+IjsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlv
bi5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRl
c3RzL2RvbUxpc3RFbnVtZXJhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAg
ZGVzY3JpcHRpb24oCiAnVGhpcyB0ZXN0cyBlbnVtZXJhdGluZyB0aGUgZWxlbWVudHMgb2YgRE9N
IGxpc3RzLicKICk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAvLyBDcmVhdGUgYSB0ZXN0aW5nIGVudmly
b25tZW50IHRoYXQgY2FuIGJlIGNsZWFudXAgdXAgZWFzaWx5LgogdmFyIHRlc3RpbmdHcm91bmQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NjcmlwdC10ZXN0cy9sb2NhdGlvbi1uZXctd2luZG93LW5vLWNyYXNoLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9sb2NhdGlvbi1uZXctd2lu
ZG93LW5vLWNyYXNoLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zY3JpcHQtdGVzdHMvbG9jYXRpb24tbmV3LXdpbmRvdy1uby1jcmFzaC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw4ICsxLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG1hbmlwdWxhdGlu
ZyBsb2NhdGlvbiBwcm9wZXJ0aWVzIGluIGEganVzdC1jcmVhdGVkIHdpbmRvdyBvYmplY3QgZG9l
cyBub3QgY3Jhc2guIE5vdGU6IFR1cm4gb2ZmIHBvcC11cCBibG9ja2luZyB0byBydW4gdGhpcyBp
bi1icm93c2VyLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5X
aW5kb3dzKCk7CiB9CiAKIHZhciB0ZXN0V2luZG93ID0gb3BlbigiZGF0YTp0ZXh0L3BsYWluLGEi
KTsKQEAgLTQ2LDExICs0NiwxMSBAQCBzaG91bGRCZSgidGVzdFdpbmRvdy5sb2NhdGlvbi5oYXNo
IiwgIicnCiAKIHRlc3RXaW5kb3cuY2xvc2UoKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgZnVuY3Rpb24gZG9uZUhh
bmRsZXIoKQogICAgIHsKICAgICAgICAgaWYgKHRlc3RXaW5kb3cuY2xvc2VkKSB7Ci0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBzZXRUaW1lb3V0KGRvbmVIYW5kbGVyLCAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9hY2Nlc3Mta2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2FjY2Vzcy1rZXkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjY2Vzcy1rZXkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NjgsOCArNjgsOCBAQCBmdW5jdGlvbiBwcmVwYXJlRE9NVHJlZShwYXJlbnQpCiAKIGZ1bmN0aW9u
IHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgcHJlcGFyZURP
TVRyZWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKSk7CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3dob3N0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVs
ZW1lbnQtc2hvdWxkLWJlLXNoYWRvd2hvc3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNoYWRvd2hv
c3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQCBmdW5jdGlvbiBhc3NlcnRB
Y3RpdmVFbGVtZW50KGRvYywgZXhwZWN0CiAgICAgICAgIHByaW50KCdGQUlMOiAnICsgZGVzY3Jp
YmUoZG9jKSArICcgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpcyAnICsgZGVzY3JpYmUoZG9jLmFj
dGl2ZUVsZW1lbnQpICsgJyBidXQgZXhwZWN0ZWQgJyArIGRlc2NyaWJlKGV4cGVjdGVkKSk7CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICBmdW5jdGlvbiBzaGFkb3dSb290KHNoYWRvd0hvc3Qp
IHsKICAgICByZXR1cm4gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qoc2hhZG93SG9zdCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fs
a2VyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBv
c2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVz
dHMgZm9yIENvbXBvc2VkIFNoYWRvdyBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkg
cnVuIHdpdGhpbiBEUlQiKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGR1bXBOb2RlKG5v
ZGUpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1jaGlsZC13
aGl0ZXNwYWNlLWJldHdlZW4tc3Bhbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9jb250ZW50LWNoaWxkLXdoaXRlc3BhY2UtYmV0d2Vlbi1zcGFuLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50
LWNoaWxkLXdoaXRlc3BhY2UtYmV0d2Vlbi1zcGFuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDkgKzIyLDkgQEAgZnVuY3Rpb24gcmVtb3ZlQ29udGFpbmVyTGluZXModGV4dCkKIAogZnVuY3Rp
b24gdGVzdCgpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgIHZhciB0YXJnZXRDb250YWluZXJSZW5kZXJUcmVlID0gd2luZG93LmludGVybmFscy5lbGVt
ZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Q29udGFp
bmVyIikpOwogICAgIHZhciB0YXJnZXRSZW5kZXJUcmVlID0gcmVtb3ZlQ29udGFpbmVyTGluZXMo
dGFyZ2V0Q29udGFpbmVyUmVuZGVyVHJlZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29udGVudC1lbGVtZW50LXJlbmRlcmVycy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtcmVuZGVyZXJzLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVs
ZW1lbnQtcmVuZGVyZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBm
dW5jdGlvbiByZW1vdmVDb250YWluZXJMaW5lcyh0ZXh0KQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgbG9nKCJUaGlzIHRlc3QgY29tcGFyZXMgYSBzaGFkb3ctYmFzZWQg
cmVuZGVyIHRyZWUgd2l0aCBvbmUgZm9yIGEgcmVmZXJlbmNlIERPTSB0cmVlLiIpOwogICAgIGxv
ZygiTm90ZSB0aGF0IHRoaXMgdGVzdCBvbmx5IHJ1bnMgb24gRFJULiIpOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1zZWxlY3Rvci1xdWVyeS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXNlbGVjdG9yLXF1
ZXJ5Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9jb250ZW50LXNlbGVjdG9yLXF1ZXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1
NCwxMSBAQCB2YXIgZGF0YU9mSW52YWxpZENhc2VzID0gWwogXQogCiBmdW5jdGlvbiBkb1Rlc3Qo
KSB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuaW50ZXJuYWxz
KSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGRhdGFPZlZhbGlkQ2FzZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHRl
c3QoZGF0YU9mVmFsaWRDYXNlc1tpXSwgdHJ1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvY3JlYXRlLWNvbnRlbnQtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jcmVhdGUtY29udGVudC1lbGVtZW50Lmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jcmVhdGUtY29udGVu
dC1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgZnVuY3Rpb24g
c2V0dXBUYXJnZXRUcmVlKCkKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
IGxvZygiVGhpcyB0ZXN0IGNvbXBhcmVzIGEgc2hhZG93LWJhc2VkIHJlbmRlciB0cmVlIHdpdGgg
b25lIGZvciBhIHJlZnJlbmNlIERPTSB0cmVlLiIpOwogICAgIHNldHVwVGFyZ2V0VHJlZSgpOwog
ICAgIHZhciB0YXJnZXRDb250YWluZXJSZW5kZXJUcmVlID0gd2luZG93LmludGVybmFscy5lbGVt
ZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Q29udGFp
bmVyIikpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RyYWctdG8tbWV0ZXIt
aW4tc2hhZG93LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2RyYWctdG8tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kcmFnLXRvLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZWRpdGluZy9lZGl0aW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKIHZh
ciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoY29udGFpbmVyKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9mb2N1cy1uYXZpZ2F0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2ZvY3VzLW5hdmlnYXRpb24uaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2ZvY3VzLW5h
dmlnYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQCBmdW5jdGlvbiBw
cmVwYXJlRE9NVHJlZShwYXJlbnQpCiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgewogICAg
ICAgICB0ZXN0RmFpbGVkKCcnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9m
b3JtLWluLXNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9mb3JtLWluLXNoYWRvdy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZm9ybS1pbi1zaGFkb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw4ICs4LDggQEAKIDxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gY3JlYXRlU2hhZG93Rm9ybSgpIHsKICAgICB2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwpAQCAtNjEs
OCArNjEsOCBAQCBpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCc/JykgPiAwKSB7CiAgICAgdmFy
IHF1ZXJ5ID0gbG9jYXRpb24uaHJlZi5zdWJzdHIobG9jYXRpb24uaHJlZi5pbmRleE9mKCc/Jykg
KyAxKTsKICAgICBjaGVja1F1ZXJ5KHF1ZXJ5KTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfSBlbHNlIHsKICAgICBzdWJtaXRCdXR0b24uY2xpY2soKTsKIH0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9mcmFtZWxlc3MtbWVkaWEtZWxlbWVudC1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9mcmFtZWxlc3MtbWVk
aWEtZWxlbWVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZnJhbWVsZXNzLW1lZGlhLWVsZW1lbnQtY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGRv
YyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpOwogZG9jLm9w
ZW4oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9nZXQtZWxlbWVudC1ieS1p
ZC1pbi1zaGFkb3ctcm9vdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9nZXQtZWxlbWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZ2V0LWVsZW1lbnQtYnktaWQt
aW4tc2hhZG93LXJvb3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQCBmdW5j
dGlvbiBwcmVwYXJlRG9tVHJlZShwYXJlbnQpCiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgcHJlcGFyZURvbVRyZWUoZG9jdW1lbnQuYm9k
eSk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXROb2RlSW5TaGFkb3dUcmVlU3RhY2so
J2RpdkEvaW5wdXRCJykuaWQiLCAnaW5wdXRCJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvaW5wdXQtc2hhZG93LW5vY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2lucHV0LXNoYWRvdy1ub2NoYW5nZS5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5wdXQtc2hhZG93LW5v
Y2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDEwICsxMiwxMCBAQAogdmFyIGNvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKIAogZnVuY3Rpb24g
ZG9UZXN0KCkgewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5k
b3cuaW50ZXJuYWxzKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5pbnRl
cm5hbHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBpbnB1dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgdmFyIGlucHV0VHlwZXMgPSBb
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaW5zZXJ0aW9uLXBvaW50LXNoYWRv
dy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9p
bnNlcnRpb24tcG9pbnQtc2hhZG93LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pbnNlcnRpb24tcG9pbnQtc2hhZG93LWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gcnVu
VGVzdHMoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L25vLXJlbmRlcmVycy1mb3ItbGlnaHQtY2hpbGRyZW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbm8tcmVuZGVyZXJzLWZvci1saWdodC1jaGlsZHJl
bi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
bm8tcmVuZGVyZXJzLWZvci1saWdodC1jaGlsZHJlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbm9kZXR5cGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L25vZGV0eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTks
OCArOSw4IEBACiBUaGlzIHRlc3RzIHRoZSBzaGFkb3cgaG9zdCdzIGFuZCBzaGFkb3cgcm9vdCdz
IG5vZGVUeXBlLgogPC9wcmU+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgCiAgICAgICAgIHZhciBrZXlnZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgna2V5cycpOwogICAgICAgICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qo
a2V5Z2VuKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRh
cnktY3Jvc3NpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWJvdW5kYXJ5LWNyb3NzaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjY4LDggKzI2OCw4IEBAIHZhciB0ZXN0cyA9IHsKIAogZnVuY3Rp
b24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBsb2dE
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CiAgICAgZm9yKHZhciB0ZXN0TmFt
ZSBpbiB0ZXN0cykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1i
b3VuZGFyeS1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgZnVuY3Rpb24gbW92ZUZvY3VzKG9sZEVs
ZW1lbnRJZCwgbmV3RWxlbQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICBwcmVwYXJlRE9NVHJlZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2FuZGJveCcpKTsKIAogICAgIC8vIFRlc3QgZm9yIG1vdXNlb3Zlci9tb3VzZW91dCBldmVudHMu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWV2ZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1j
b250ZW50cy1ldmVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDggKzcwLDggQEAgZnVuY3Rpb24gbW92ZU1vdXNlKG9sZEVsZW1lbnRJZCwgbmV3RWxlbQog
CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB2
YXIgaWRzID0gWydzYW5kYm94JywgJ2RldGFpbHMnLCAnc3VtbWFyeSddOwogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRzW2ldKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2st
ZHluYW1pYy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNDY3LDEzICs0NjcsMTMgQEAgZnVuY3Rpb24gZG9UZXN0SWZMZWZ0KCkgewogCiBmdW5j
dGlvbiBkb25lVGVzdCgpIHsKICAgICBsb2coIlRFU1QgQ09NUExFVEVEIik7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfQogCiBmdW5jdGlvbiBkb1Rlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIAogICAgIGNsZWFuVXAoKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJh
Y2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWNvbnRlbnRzLWZhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2suaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZhciB0ZXN0RnVuY3MgPSBbCiBdOwogCiBmdW5jdGlv
biBkb1Rlc3QoKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGNsZWFuVXAoKTsKIAogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGVzdEZ1bmNzLmxlbmd0aDsgKytpKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWRvbS1ldmVudC1kaXNwYXRjaGluZy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZG9tLWV2ZW50LWRpc3Bh
dGNoaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZG9tLWV2ZW50LWRpc3BhdGNoaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTM3Myw4ICszNzMsOCBAQCBmdW5jdGlvbiB0ZXN0RXZlbnRzT25GYWxsYmFja0VsZW1lbnRzKCkK
IAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICB0ZXN0RXZlbnRzT25EaXN0cmlidXRlZENoaWxkKCk7CiAgICAgdGVzdEV2ZW50c09uRGV0YWls
c1N1bW1hcnkoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZHlu
YW1pYy1zdHlsZS1jaGFuZ2UtdmlhLW11dGF0aW9uLWFuZC1zZWxlY3Rvci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZHluYW1pYy1zdHlsZS1j
aGFuZ2UtdmlhLW11dGF0aW9uLWFuZC1zZWxlY3Rvci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWR5bmFtaWMtc3R5bGUtY2hhbmdl
LXZpYS1tdXRhdGlvbi1hbmQtc2VsZWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAg
KzIzLDEwIEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAKICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQub2Zmc2V0TGVmdDsKICAgICBmb28uYXBwZW5kQ2hpbGQocXV4KTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiAKLWxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLWxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK3Rlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwordGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiB3aW5kb3cub25sb2FkID0gdGVzdDsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtYWN0aXZlRWxlbWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMiw4ICsxMiw4IEBAIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhY3RpdmVF
bGVtZW4KIGlmICghd2luZG93LmludGVybmFscykKICAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJ1bnMg
b24gRFJUIG9ubHknKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBjaGlsZEluQm9keSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKIGNoaWxkSW5Cb2R5LnRhYkluZGV4ID0gIjEiOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWJsdXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYmx1ci5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtYmx1ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBAIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBibHVyKCkgb24gb24KIGlmICghd2luZG93LmludGVybmFs
cykKICAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJ1bnMgb24gRFJUIG9ubHknKTsKIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoCiAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzonc2hhZG93SG9zdEEnfSwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1pbm5lckhUTUwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5lckhUTUwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQCBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGUgaW5uZXJIVE1MIHByCiBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgZGVidWcoJ1Ro
aXMgdGVzdCBydW5zIG9uIERSVCBvbmx5Jyk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogaG9zdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChob3N0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1q
cy1hcGkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtanMtYXBpLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTIsOCArMTIsOCBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0cyBmb3IgU2hhZG93Um9v
dCBKUyBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVCIpOwogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHNo
b3VsZFRocm93KCJuZXcgV2ViS2l0U2hhZG93Um9vdCgpIik7CiBzaG91bGRUaHJvdygibmV3IFdl
YktpdFNoYWRvd1Jvb3QodW5kZWZpbmVkKSIpOwogc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRTaGFk
b3dSb290KG51bGwpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJvb3Qtbm9kZS1saXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LW5vZGUtbGlzdC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qtbm9kZS1saXN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdFNob3Vs
ZE5vdENyYXNoKCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47Ci0gICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKICAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJs
b2NrcXVvdGUiKTsKICAgICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qo
aG9zdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtdGV4
dC1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC10ZXh0LWNoaWxkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC10ZXh0LWNoaWxkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTMsOSArMyw5IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdFNob3VsZE5vdENy
YXNoKCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47Ci0gICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAg
ICB2YXIgc2hhZG93ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qocm9vdCk7CiAgICAgdmFy
IHNoYWRvd0J1aWxkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBob3N0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChob3N0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy90YWItb3JkZXItaWZy
YW1lLWFuZC1zaGFkb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvdGFiLW9yZGVyLWlmcmFtZS1hbmQtc2hhZG93Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy90YWItb3JkZXItaWZyYW1lLWFuZC1zaGFk
b3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCArMTYsOCBAQCBmdW5jdGlvbiBjcmVhdGVU
ZXh0SW5wdXRFbGVtZW50KGRvYywgaWQsCiAgICAgcmV0dXJuIGlucHV0OwogfQogCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgdmFyIGRvYyA9IGRvY3VtZW50OwogCiAgICAgZG9jLmJvZHkuYXBwZW5k
Q2hpbGQoY3JlYXRlVGV4dElucHV0RWxlbWVudChkb2MsICdpbnB1dC0wMScsIDEpKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy90cmVlLXNjb3BlLWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3RyZWUtc2NvcGUtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3RyZWUt
c2NvcGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQ+
CiBSRUxPQURfVEhSRVNIT1VMRCA9IDEwOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogTWFya3Vw
Lm5vQXV0b0R1bXAoKTsKICAgICAKQEAgLTMxLDggKzMxLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgp
CiAKICAgICAKICAgICB2YXIgY291bnQgPSBjdXJyZW50Q291bnQoKTsKLSAgICBpZiAoUkVMT0FE
X1RIUkVTSE9VTEQgPD0gY291bnQgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoUkVMT0FE
X1RIUkVTSE9VTEQgPD0gY291bnQgJiYgd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy91c2VyLW1vZGlmeS1pbmhlcml0YW5jZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy91c2VyLW1vZGlmeS1pbmhl
cml0YW5jZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvdXNlci1tb2RpZnktaW5oZXJpdGFuY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQs
OCArMTQsOCBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgogZGVzY3JpcHRp
b24oIlRlc3RzIHRvIGVuc3VyZSB0aGF0IGEgJy13ZWJraXQtdXNlci1tb2RpZnknIENTUyBwb3Jw
ZXJ0eSBpcyBub3QgaW5oZXJpdGVkIGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcy4iKTsKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiBmdW5jdGlvbiBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHN0eWxlKSB7CiAgICAg
dmFyIGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2R5bmFtaWMvNTg3MjY3MS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZHluYW1pYy81ODcyNjcxLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZHluYW1pYy81ODcyNjcxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEy
LDggQEAKICAgICA8aW1nIGlkPSJ0YXJnZXQiPgogPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLnN0eWxlLmhlaWdodCA9ICIxMDBweCI7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvYW5jZXN0b3ItdG8tYWJzb2x1dGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvYW5jZXN0b3ItdG8tYWJz
b2x1dGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWlj
L2FuY2VzdG9yLXRvLWFic29sdXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogVGVzdCB0aGF0IGR5
bmFtaWNhbGx5IG1ha2luZyBlbGVtZW50IGFic29sdXRlIHBvc2l0aW9uZWQgZG9lcyBub3QgY29y
cnVwdCBpdCdzIGNoaWxkcmVucyBsYXlvdXQgZGlydHkgc3RhdGUuIFRoaXMgcGFzc2VzIGlmIGl0
IGRvZXMgbm90IGNyYXNoLgogPGRpdiBpZD1vdXRlciBzdHlsZT0iZmxvYXQ6bGVmdCIgPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2NoZWNrYm94LXNlbGVjdGlvbi1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9jaGVja2JveC1zZWxlY3Rp
b24tY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5h
bWljL2NoZWNrYm94LXNlbGVjdGlvbi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDgg
KzMsOCBAQAogLmdvbmUgeyBkaXNwbGF5Om5vbmUgfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIDwvc2NyaXB0PgogPGJvZHk+CiBMb2FkaW5nIHRoaXMgcGFnZSBzaG91bGQgbm90
IGNyYXNoLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2NvbnRhaW5pbmctYmxvY2st
Y2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2NvbnRh
aW5pbmctYmxvY2stY2hhbmdlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZHluYW1pYy9jb250YWluaW5nLWJsb2NrLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDE0ICsyLDE0IEBACiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewogICAgICAgICBk
b2N1bWVudC5ib2R5Lm9mZnNldFRvcDsgICAgLy8gZm9yY2UgbGF5b3V0Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kaXNwbGF5KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0Jyk7CiAgICAgICAgIHQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwog
ICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsgICAgLy8gZm9yY2UgbGF5b3V0CiAgICAg
ICAgIHQubGFzdENoaWxkLnJlbW92ZUNoaWxkKHQubGFzdENoaWxkLmxhc3RDaGlsZCk7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwogICAgIH0KIDwvc2NyaXB0PgogPGJv
ZHkgb25sb2FkPSJ0ZXN0KCkiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2NyYXNo
LWdlbmVyYXRlZC1jb3VudGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
eW5hbWljL2NyYXNoLWdlbmVyYXRlZC1jb3VudGVyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9jcmFzaC1nZW5lcmF0ZWQtY291bnRlci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBACiAgICAgICAgIFRlc3QgZm9yIGJ1ZyA8YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0MTEiPjYxNDEx
PC9hPjogQVNTRVJUSU9OIEZBSUxFRDogIW1fbGF5b3V0Um9vdC0+Y29udGFpbmVyKCkgfHwgIW1f
bGF5b3V0Um9vdC0+Y29udGFpbmVyKCktPm5lZWRzTGF5b3V0KCkgd2l0aCBnZW5lcmF0ZWQgY29u
dGVudDxicj4KICAgICAgICAgVGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCiAgICAg
ICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7
CiAgICAgICAgIDwvc2NyaXB0PjxkaXY+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2R5
bmFtaWMvY3Jhc2gtZ2VuZXJhdGVkLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9keW5hbWljL2NyYXNoLWdlbmVyYXRlZC1pbWFnZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvY3Jhc2gtZ2VuZXJhdGVkLWltYWdlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAKICAgICAgICAgVGVzdCBmb3IgYnVn
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTQxMSI+
NjE0MTE8L2E+OiBBU1NFUlRJT04gRkFJTEVEOiAhbV9sYXlvdXRSb290LT5jb250YWluZXIoKSB8
fCAhbV9sYXlvdXRSb290LT5jb250YWluZXIoKS0+bmVlZHNMYXlvdXQoKSB3aXRoIGdlbmVyYXRl
ZCBjb250ZW50PGJyPgogICAgICAgICBUZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC4K
ICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNl
dFRvcDsKICAgICAgICAgPC9zY3JpcHQ+PGRpdj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZHluYW1pYy9jcmFzaC1nZW5lcmF0ZWQtcXVvdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2R5bmFtaWMvY3Jhc2gtZ2VuZXJhdGVkLXF1b3RlLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9jcmFzaC1nZW5lcmF0ZWQtcXVv
dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgICAgICBUZXN0IGZv
ciBidWcgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYx
NDExIj42MTQxMTwvYT46IEFTU0VSVElPTiBGQUlMRUQ6ICFtX2xheW91dFJvb3QtPmNvbnRhaW5l
cigpIHx8ICFtX2xheW91dFJvb3QtPmNvbnRhaW5lcigpLT5uZWVkc0xheW91dCgpIHdpdGggZ2Vu
ZXJhdGVkIGNvbnRlbnQ8YnI+CiAgICAgICAgIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNy
YXNoLgogICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOwogICAgICAgICA8L3NjcmlwdD48ZGl2PjwvZGl2PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9keW5hbWljL2NyYXNoLWdlbmVyYXRlZC10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2NyYXNoLWdlbmVyYXRlZC10ZXh0Lmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9jcmFzaC1nZW5lcmF0ZWQt
dGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgIFRlc3Qg
Zm9yIGJ1ZyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjE0MTEiPjYxNDExPC9hPjogQVNTRVJUSU9OIEZBSUxFRDogIW1fbGF5b3V0Um9vdC0+Y29udGFp
bmVyKCkgfHwgIW1fbGF5b3V0Um9vdC0+Y29udGFpbmVyKCktPm5lZWRzTGF5b3V0KCkgd2l0aCBn
ZW5lcmF0ZWQgY29udGVudDxicj4KICAgICAgICAgVGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3Qg
Y3Jhc2guCiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5vZmZzZXRUb3A7CiAgICAgICAgIDwvc2NyaXB0PjxkaXY+PC9kaXY+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2R5bmFtaWMvY3Jhc2gtcGFpbnQtbm8tZG9jdW1lbnRFbGVtZW50LXJlbmRlcmVy
Lmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2Ny
YXNoLXBhaW50LW5vLWRvY3VtZW50RWxlbWVudC1yZW5kZXJlci5odG1sLWRpc2FibGVkCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvY3Jhc2gtcGFpbnQtbm8t
ZG9jdW1lbnRFbGVtZW50LXJlbmRlcmVyLmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAg
LTQsOCArNCw4IEBACiA8cD5CdWcgNjQyODQ6IENyYXNoIGluIFJlbmRlckJveDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyB3aGVuIGRvY3VtZW50RWxlbWVudCBoYXMgbm8gcmVuZGVyZXI8L3A+CiA8cD5G
b3IgdGhpcyB0ZXN0IHRvIFBBU1MsIGl0IHNob3VsZCBub3QgQVNTRVJUIG9yIENSQVNILjwvcD4K
IDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBn
bygpIHsKICAgICAgICAgZG9jdW1lbnQub3BlbigpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
eW5hbWljL2Zsb2F0LXJlbW92ZS1hYm92ZS1saW5lLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2R5bmFtaWMvZmxvYXQtcmVtb3ZlLWFib3ZlLWxpbmUtMi5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvZmxvYXQtcmVtb3ZlLWFi
b3ZlLWxpbmUtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgICAgPGRp
diBpZD0iZmxvYXQtMiIgc3R5bGU9ImZsb2F0OiByaWdodDsiPjwvZGl2PgogPC9kaXY+CiA8c2Ny
aXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZG9jdW1lbnQuYm9keS5v
ZmZzZXRUb3A7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZsb2F0LTEiKS5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2Zsb2F0LXJl
bW92ZS1hYm92ZS1saW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9keW5h
bWljL2Zsb2F0LXJlbW92ZS1hYm92ZS1saW5lLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZHluYW1pYy9mbG9hdC1yZW1vdmUtYWJvdmUtbGluZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgICAgPGRpdiBpZD0iZmxvYXQiIHN0eWxlPSJm
bG9hdDogcmlnaHQ7IGhlaWdodDogMTBweDsgd2lkdGg6IDEwcHg7IGJhY2tncm91bmQtY29sb3I6
IGxpZ2h0Ymx1ZTsgbWFyZ2luLXRvcDogLTEwcHg7Ij48L2Rpdj4KIDwvZGl2PgogPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
VG9wOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbG9hdCIpLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvaG92ZXItYmVmb3JlLXBv
c2l0aW9uLWFmdGVyLXN0eWxlLWNoYW5nZTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2R5bmFtaWMvaG92ZXItYmVmb3JlLXBvc2l0aW9uLWFmdGVyLXN0eWxlLWNoYW5nZTIu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2hvdmVy
LWJlZm9yZS1wb3NpdGlvbi1hZnRlci1zdHlsZS1jaGFuZ2UyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDEyICszNCwxMiBAQAogICAgICAgICAgICAgICAgIHZhciBvdXRzaWRlRGl2VG9wID0g
Z2V0RWxlbWVudFRvcCgib3V0c2lkZURpdiIpOwogICAgICAgICAgICAgICAgIHZhciBpbnNpZGVE
aXZUb3AgPSBnZXRFbGVtZW50VG9wKCJpbnNpZGVEaXYiKTsKICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCA9IChpbnNpZGVEaXZPcmln
aW5hbFRvcCAhPSBpbnNpZGVEaXZUb3ApID8gIkZBSUwiIDogIlBBU1MiOwotICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgib3V0c2lkZURpdiIpLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwog
ICAgICAgICAgICAgLy8gQ2FwdHVyZSB0aGUgaW5pdGlhbCB2YWx1ZXMgZm9yIGluc2lkZSBkaXYg
dG9wCkBAIC01MSw3ICs1MSw3IEBACiAgICAgICAgICAgICB2YXIgb3V0c2lkZURpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJvdXRzaWRlRGl2Iik7CiAgICAgICAgICAgICBvdXRzaWRlRGl2
LnJlbW92ZUNoaWxkKHNwYW4pOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAg
ICAgICAgICAgICBzaW11bGF0ZU1vdXNlTW92ZSgpOwogICAgICAgICAgICAgICAgIGNoZWNrVGVz
dFJlc3VsdCgpOwogICAgICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWlj
L2hvdmVyLWJlZm9yZS1wb3NpdGlvbi1hZnRlci1zdHlsZS1jaGFuZ2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvaG92ZXItYmVmb3JlLXBvc2l0aW9uLWFmdGVy
LXN0eWxlLWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2R5bmFtaWMvaG92ZXItYmVmb3JlLXBvc2l0aW9uLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxOCArMzYsMTggQEAKICAgICAgICAgICAgICAgICB2YXIgb3V0
c2lkZURpdlRvcCA9IGdldEVsZW1lbnRUb3AoIm91dHNpZGVEaXYiKTsKICAgICAgICAgICAgICAg
ICB2YXIgaW5zaWRlRGl2VG9wID0gZ2V0RWxlbWVudFRvcCgiaW5zaWRlRGl2Iik7CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAo
aW5zaWRlRGl2T3JpZ2luYWxUb3AgIT0gaW5zaWRlRGl2VG9wKSA/ICJGQUlMIiA6ICJQQVNTIjsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHNpZGVEaXYiKS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hp
ZGRlbic7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
Lm9mZnNldFRvcDsKICAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGluaXRpYWwgdmFsdWVzIGZv
ciBpbnNpZGUgZGl2IHRvcAogICAgICAgICAgICAgdmFyIGluc2lkZURpdk9yaWdpbmFsVG9wID0g
Z2V0RWxlbWVudFRvcCgiaW5zaWRlRGl2Iik7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgICAgICAgICAgICAgIHNpbXVsYXRlTW91c2VNb3ZlKCk7CiAgICAgICAgICAgICAgICAg
Y2hlY2tUZXN0UmVzdWx0KCk7CiAgICAgICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2R5bmFtaWMvaG92ZXItc3R5bGUtcmVjYWxjLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9keW5hbWljL2hvdmVyLXN0eWxlLXJlY2FsYy1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvaG92ZXItc3R5bGUtcmVj
YWxjLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAKICAgICA8YT48
L2E+CiA8L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKICAgICAgICAgdmFyIHkgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDsKICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsIHkgKyA1MCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2R5bmFtaWMvaG92ZXJlZC1kZXRhY2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2R5bmFtaWMvaG92ZXJlZC1kZXRhY2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2hvdmVyZWQtZGV0YWNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsOSArMiw5IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBm
dW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDAsIDApOyAgICAgIC8vIG91dHNpZGUgc3Bh
bgogICAgIHZhciBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EnKTsKICAgICBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsgICAgICAgICAgICAvLyBmb3JjZSBsYXlvdXQKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZHluYW1pYy9pbmxpbmUtdG8tYmxvY2stY3Jhc2guaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvaW5saW5lLXRvLWJsb2NrLWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9pbmxpbmUtdG8t
YmxvY2stY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsOCBAQCBmdW5jdGlv
biB0dXJuQW5jaG9ySW50b0Jsb2NrKCkKIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGFuIikuZmlyc3RDaGlsZC5kYXRhID0gIlBBU1NFRCI7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHR1cm5TcGFuSW50b0Jsb2NrKCkKQEAgLTI1LDkgKzI1
LDkgQEAgZnVuY3Rpb24gdHVyblNwYW5JbnRvQmxvY2soKQogCiBmdW5jdGlvbiBydW5UZXN0KCkK
IHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgfQogICAgIHNldFRpbWVvdXQodHVyblNwYW5JbnRvQmxvY2ssIDApOwogfQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2luc2VydEFkamFjZW50RWxlbWVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9pbnNlcnRBZGphY2VudEVs
ZW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWlj
L2luc2VydEFkamFjZW50RWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4
IEBACiAgICA8L3NwYW4+CiA8L2JvZHk+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiAgICAvLyB2ZXJpZnkgYWxsIHN0YW5kYXJkIGNhc2VzCiAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCJiZWZvcmVC
ZWdpbiIsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIxIikpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9keW5hbWljL2luc2VydEFkamFjZW50SFRNTC1hbGxvd2VkLXBhcmVudHMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvaW5zZXJ0QWRqYWNlbnRIVE1MLWFs
bG93ZWQtcGFyZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2R5bmFtaWMvaW5zZXJ0QWRqYWNlbnRIVE1MLWFsbG93ZWQtcGFyZW50cy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgbG9nID0gZnVuY3Rpb24obXNnKQogICAgIHsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZHluYW1pYy9pbnNlcnRBZGphY2VudEhUTUwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9pbnNlcnRBZGphY2Vu
dEhUTUwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgIDwvc3Bhbj4KIDwv
Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgLy8gdmVyaWZ5IGFsbCBzdGFuZGFy
ZCBjYXNlcwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLmluc2VydEFk
amFjZW50SFRNTCgiYmVmb3JlQmVnaW4iLCAiPHNwYW4gaWQ9JzEnJz4gMSAoYmxhY2spPC9zcGFu
PiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2luc2VydEFkamFjZW50VGV4dC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9pbnNlcnRBZGphY2Vu
dFRleHQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWlj
L2luc2VydEFkamFjZW50VGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAog
ICAgPC9zcGFuPgogPC9ib2R5PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgLy8gdmVyaWZ5IGFsbCBzdGFuZGFyZCBjYXNlcwogICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnRhaW5lciIpLmluc2VydEFkamFjZW50VGV4dCgiYmVmb3JlQmVnaW4iLCAi
IDEgKGJsYWNrKSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2pRdWVyeS1hbmlt
YXRpb24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMv
alF1ZXJ5LWFuaW1hdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2R5bmFtaWMvalF1ZXJ5LWFuaW1hdGlvbi1jcmFzaC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC02LDkgKzYsOSBAQCBqUXVlcnkgYW5pbWF0aW9uIGNyYXNoaW5nIFNhZmFyaS48L3A+
CiA8L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIHN3YXAoIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkgewpAQCAtNDks
OCArNDksOCBAQCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgIGZvcmNlTGF5b3V0KCk7CiAg
ICAgZWxlbS5zdHlsZVsnZGlzcGxheSddPSdub25lJzsKICAgICBmb3JjZUxheW91dCgpOwotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIHJldHVybjsKIH0sIDApOyAKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2xheWVyLWhpdC10ZXN0LWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2xheWVyLWhpdC10ZXN0LWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9sYXllci1o
aXQtdGVzdC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+
CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7CkBA
IC0zNSw4ICszNSw4IEBAIGZ1bmN0aW9uIGZpbmlzaCgpCiB7CiAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZHlu
YW1pYy9sYXllci1uby1sb25nZXItcGFnaW5hdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9keW5hbWljL2xheWVyLW5vLWxvbmdlci1wYWdpbmF0ZWQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL2xheWVyLW5vLWxvbmdlci1w
YWdpbmF0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjEsOSArMjEsOSBAQAogIAogICAgICAg
ICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDEsIDApOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRp
c3BsYXkoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmRpc3BsYXkoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAg
ICAgICAgdGVzdCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHNldFRpbWVvdXQodGVz
dCwgNTAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9vdXRlckhUTUwtbm8tZWxl
bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9vdXRlckhU
TUwtbm8tZWxlbWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2R5bmFtaWMvb3V0ZXJIVE1MLW5vLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4
ICs1LDggQEAKIDxkaXYgaWQ9InRlc3QiPlRoaXMgdGVzdCBmYWlsZWQuPC9kaXY+CiAKIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwogdmFyIG91dGVyU3RyID0gIjxkaXYgaWQ9J3Rlc3Qy
Jz5UaGlzIHRlc3QgZmFpbGVkITwvZGl2PiI7CiB0Lm91dGVySFRNTCA9IG91dGVyU3RyOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL3BhdXNlZC1ldmVudC1kaXNwYXRjaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9wYXVzZWQtZXZlbnQtZGlzcGF0
Y2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL3Bh
dXNlZC1ldmVudC1kaXNwYXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAog
CiAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRv
cDsKICAgICAgICAgdmFyIGJvdHRvbUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib3R0
b21Cb3giKTsKQEAgLTE5LDggKzE5LDggQEAKICAgICBmdW5jdGlvbiBpZnJhbWVSZXNpemVkKCkK
ICAgICB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IikpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CiAgICAgfQpAQCAtMjgsOCAr
MjgsOCBAQAogICAgIGZ1bmN0aW9uIGZpbmlzaCgpCiAgICAgewogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFsbEJveCIpLnN0eWxlLmhlaWdodCA9ICI1MHB4IjsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8
cD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9wb3NpdGlvbi1hYnNvbHV0ZS10by1m
aXhlZC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9w
b3NpdGlvbi1hYnNvbHV0ZS10by1maXhlZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvcG9zaXRpb24tYWJzb2x1dGUtdG8tZml4ZWQtY3Jh
c2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIO+7vzxoZWFkPgogICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL3Bvc2l0
aW9uLWNoYW5nZS1sYXlvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5
bmFtaWMvcG9zaXRpb24tY2hhbmdlLWxheW91dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvcG9zaXRpb24tY2hhbmdlLWxheW91dC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIHZhciB0YWJsZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpOwogICAgICAgICAgICAgdGFibGUub2Zmc2V0SGVpZ2h0
OyAvLyBUcmlnZ2VyIGxheW91dC4KICAgICAgICAgICAgIHRhYmxlLmNyZWF0ZUNhcHRpb24oKTsg
Ly8gQWRkIGEgY2FwdGlvbiBhbmQgbWFyayB0aGUgdGFibGUgYXMgbmVlZGluZyBsYXlvdXQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvcmVjdXJzaXZlLWxheW91dC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9yZWN1cnNpdmUtbGF5b3V0Lmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9yZWN1cnNpdmUt
bGF5b3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgPHNjcmlwdD4K
ICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICB2
YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwogICAgICAgICAg
ICAgZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0YXJnZXQsIDAsIHRhcmdldCwgMCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvc3R5bGUtYWNjZXNzLWxhdGUtc3R5bGVz
aGVldC1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL3N0
eWxlLWFjY2Vzcy1sYXRlLXN0eWxlc2hlZXQtbG9hZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvc3R5bGUtYWNjZXNzLWxhdGUtc3R5bGVzaGVldC1s
b2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdD4gIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzdHlsZT4KICN0ZXN0IHsgcG9z
aXRpb246IGFic29sdXRlOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHggfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9keW5hbWljL3N1YnRyZWUtY29tbW9uLXJvb3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvc3VidHJlZS1jb21tb24tcm9vdC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvc3VidHJlZS1jb21t
b24tcm9vdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogICAgIDwvZGl2Pgog
PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2R5bmFt
aWMvc3VidHJlZS10YWJsZS1jZWxsLWhlaWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZHluYW1pYy9zdWJ0cmVlLXRhYmxlLWNlbGwtaGVpZ2h0Lmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZHluYW1pYy9zdWJ0cmVlLXRhYmxlLWNlbGwt
aGVpZ2h0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTQgKzIsMTQgQEAKICAgICA8ZGl2IGlk
PSJ0YXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47Ij48L2Rpdj4KIDwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIAogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKQogICAgICAgICB7
CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iikuc3R5bGUuaGVp
Z2h0ID0gIjEwMHB4IjsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9LAogICAgICAwKTsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9keW5hbWljL3N1YnRyZWUtdW5yb290ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvc3VidHJlZS11bnJvb3RlZC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2R5bmFtaWMvc3VidHJlZS11bnJv
b3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw4ICsxNiw4IEBACiAgICAgICAgIFRoZSB0
ZXN0IHBhc3NlcyBpZiwgaW4gYSBkZWJ1ZyBidWlsZCwgaXQgZG9lcyBub3QgY2F1c2UgYW4gYXNz
ZXJ0aW9uIGZhaWx1cmUuCiAgICAgPC9wPgogICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNl
dFRvcDsKICAgICA8L3NjcmlwdD4KICAgICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9haHJhbS1vcmctZWcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2FocmFtLW9yZy1lZy5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2FocmFtLW9yZy1lZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBACiA8Ym9keT4KIDxwPlRlc3QgYSBwYXJ0aWN1
bGFyIGV4YW1wbGUgb2YgYnJva2VuIG1hcmt1cCB0aGF0IHdhcyBtYWtpbmcgdXMgaWdub3JlIGEg
Y2hhcnNldCBkZWNsYXJhdGlvbi48L3A+CiA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
IHZhciBjaGFyc2V0ID0gZG9jdW1lbnQuY2hhcmFjdGVyU2V0OwogICBpZiAoIWNoYXJzZXQpCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JhbmRhaS1jby1qcC1yZWxlYXNlcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYmFuZGFpLWNvLWpwLXJl
bGVhc2VzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2Rp
bmcvYmFuZGFpLWNvLWpwLXJlbGVhc2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4
IEBACiA8Ym9keT4KIDxwPlRlc3QgYSBwYXJ0aWN1bGFyIGV4YW1wbGUgb2YgYnJva2VuIG1hcmt1
cCB0aGF0IHdhcyBtYWtpbmcgdXMgaWdub3JlIGEgY2hhcnNldCBkZWNsYXJhdGlvbi48L3A+CiA8
c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIHZhciBjaGFyc2V0ID0gZG9jdW1lbnQuY2hh
cmFjdGVyU2V0OwogICBpZiAoIWNoYXJzZXQpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2JvbS1pbi1jb250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
bmNvZGluZy9ib20taW4tY29udGVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL2JvbS1pbi1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTYsOCArNiw4IEBACiBCT00gY2hhcmFjdGVycyBzaG91bGQgbm90IGJlIHJlbW92ZWQgZnJvbSBp
bnB1dCBzdHJlYW0uPHA+CiA8ZGl2IGlkPUJPTXM+77u/PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKIGRvY3VtZW50LndyaXRlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCT01zIiku
aW5uZXJIVE1MLmxlbmd0aCA9PSAxID8gIlBBU1MiIDogIkZBSUwiKTsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9icmFja2V0LWluLXNjcmlwdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYnJhY2tldC1pbi1zY3JpcHQuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9icmFja2V0
LWluLXNjcmlwdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBAIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lclRl
eHQgKz0gbWVzc2FnZSArICJcbiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBpZiAoZG9jdW1lbnQu
aW5wdXRFbmNvZGluZyA9PSAid2luZG93cy0xMjU1IikKICAgICBsb2coIlBBU1M6ICIgKyBkb2N1
bWVudC5pbnB1dEVuY29kaW5nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYnJh
Y2tldC1pbi10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5n
L2JyYWNrZXQtaW4tdGFnLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZW5jb2RpbmcvYnJhY2tldC1pbi10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwogfQogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogaWYgKGRvY3VtZW50LmlucHV0RW5jb2RpbmcgPT0gIndpbmRvd3MtMTI1NSIpCiAgICAgbG9n
KCJGQUlMOiAiICsgZG9jdW1lbnQuaW5wdXRFbmNvZGluZyk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctbWFjLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWVuY29kaW5nLW1hYy5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctbWFjLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAgdGVzdEVuY29kZSgnbWFjLWN5cmlsbGlj
JywgJ1UrMDQxMCcsICclOAogdGVzdEVuY29kZSgneC1tYWMtY2VudHJhbGV1cnJvbWFuJywgJ1Ur
MDEwMCcsICclODEnKTsKIHRlc3RFbmNvZGUoJ3gtbWFjLXR1cmtpc2gnLCAnVSswMEM1JywgJyU4
MScpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIHJ1blRlc3QoKTsKIAogPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmcuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWVuY29kaW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgdGVzdEVuY29kZSgnR0JLJywgJ1Ur
MzAxQycsICclQTElQUInKTsKIC8vIFR1cm5pbmcgb24gdGhpcyB0ZXN0IGNhdXNlcyBhIGRvd25s
b2FkIHRvIG9jY3VyLiBGSVhNRTogQSBidWc/CiAvLyB0ZXN0RW5jb2RlKCdVVEYtOCcsICdVKzIy
MUEnLCAnJUUyJTg4JTlBJyk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogcnVuVGVzdCgpOwogCiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1jcDEyNTEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtY3Ax
MjUxLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcv
Y2hhcnNldC1jcDEyNTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDwvaGVh
ZD4KIDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0J
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiDK4Oog4ujk7e4sIO/w6Ljs
PwogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWludmFs
aWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQt
aW52YWxpZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2NoYXJzZXQtaW52YWxpZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAog
PC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBkb2N1bWVudC53cml0ZSgiPHA+U2hv
dWxkIGJlIHlvdXIgYnJvd3NlciBkZWZhdWx0IGVuY29kaW5nOiAiICsgZG9jdW1lbnQuY2hhcmFj
dGVyU2V0ICsgIjwvcD4iKTsKIGRvY3VtZW50LndyaXRlKCI8cD5JZiBpdCdzIGxhdGluLTEgKElT
Ty04ODU5LTEpLCB0aGlzIHNob3VsZCBiZSBhY2NlbnRlZCBlOiDpPC9wPiIpOwogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQta29pOC11Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWtvaTgtdS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQt
a29pOC11Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8L2hlYWQ+CiA8Ym9k
eT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UZXN0IGZv
ciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE5NSI+
IGJ1ZyA0MTk1PC9hPiAtIAogUkVHUkVTU0lPTjogS09JOC1VIGVuY29kaW5nIG5vIGxvbmdlciBz
dXBwb3J0ZWQuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXVu
aWNvZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJz
ZXQtdW5pY29kZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2NoYXJzZXQtdW5pY29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNiBA
QAogPC9oZWFkPgogPGJvZHk+CiBBY2NlbnRlZCBlOiDigJzDqeKAnS4KLTxzY3JpcHQ+aWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOzwvc2NyaXB0PgorPHNjcmlwdD5pZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOzwvc2NyaXB0PgogPC9ib2R5PgogPGh0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtdXRmMTYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtdXRmMTYuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXV0ZjE2Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTUsNyArNSw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KIFRoaXMgc2hvdWxkIGxvb2sg
bGlrZSBhIFJvbWFuIOKAmELigJk6IOKAmNCS4oCZLgotPHNjcmlwdD5pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7PC9zY3Jp
cHQ+Cis8c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CiA8IS0tIE1TSUUgdHJlYXRzIHV0Zi0xNiBp
biBtZXRhIGFzIHV0Zi04IC0tPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFy
c2V0LXh1c2VyLWRlZmluZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2NoYXJzZXQteHVzZXItZGVmaW5lZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQteHVzZXItZGVmaW5lZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRlc3QgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzAiPmJ1Z3ppbGxhIGJ1ZyAxODI3MDwvYT4gKEludGVy
cHJldGluZyB4LXVzZXItZGVmaW5lZCBhcyB3aW5kb3dzLTEyNTIgd2hlbgogZGVjbGFyZWQgaW4g
bWV0YSB0YWcpLiBUd28gbGluZXMgYmVsb3cgc2hvdWxkIGJlIGlkZW50aWNhbC48L3A+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9t
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzEsMTMgQEAKIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogZnVuY3Rpb24gZnJhbWVMb2FkZWQoKSB7
CiAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuY29udGVudERvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnNlbGVjdG9yVGV4dCA9PSAiI3N1Y2Nlc3M6OmJlZm9y
ZSIpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwg
PSAiU1VDQ0VTUyI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4K
IDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9cmVzb3VyY2VzL3V0Zi0xNi1saXR0bGUtZW5kaWFu
LmNzcz4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVs
dC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFy
c2V0LWRlZmF1bHQueGh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OCArMjQsOCBAQCBFeHRlcm5hbCBDU1MgaXMgcGFyc2VkIGFzIGlzby04ODU5LTEgZXZlCiA8cCBp
ZD0icmVzNSI+U3R5bGVzaGVldCA1IChpbmhlcml0IGRvY3VtZW50IGNoYXJzZXQgdXNpbmcgbGlu
ayBhZnRlciBkb2N1bWVudC5jaGFyc2V0IHdhcyBzZXQpOiA8L3A+CiAKIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiB0ZXN0KCkgewogICB0
cnkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kb20uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRv
bS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nz
cy1jaGFyc2V0LWRvbS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8cCBp
ZD0icmVzdWx0Ij48L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVz
dCgpIHsKICAgdHJ5IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJz
ZXQtZXZpbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3Nz
LWNoYXJzZXQtZXZpbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWV2aWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCAr
MTMsOCBAQCBidXQgRmlyZWZveCBhbmQgSUUgYWxsb3cgZXh0cmEgc3BhY2VzIGFuCiA8cCBpZD0i
cmVzdWx0Ij48L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgp
IHsKICAgdHJ5IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3Nz
LWNoYXJzZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQCBhbiBJRS1zcGVj
aWZpYyA8Y29kZT5ydWxlczwvY29kZT4gcHJvcGVyCiA8cCBpZD0icmVzdWx0Ij48L3A+CiAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpIHsKICAgdHJ5IHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNo
YXJzZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKIDxwIGlkPSJyZXN1bHQi
PjwvcD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIHRyeSB7CiAgICAgICAgIHRleHQgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1sw
XS5ydWxlc1swXS5zdHlsZS5jc3NUZXh0OwogICAgICAgICBpZiAodGV4dC5tYXRjaCgnLipTVdHR
xVNTLionKSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVjb2Rlci1hbGxvdy1u
dWxsLWNoYXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9k
ZWNvZGVyLWFsbG93LW51bGwtY2hhcnMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9lbmNvZGluZy9kZWNvZGVyLWFsbG93LW51bGwtY2hhcnMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxkaXYgaWQ9InJlcyI+VGVzdCBQYXNzZWQ8L2Rpdj4K
IDxicj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0K
ICAgICB2YXIgbWVzc2FnZSA9ICJUZXN0IEZhaWxlZCI7CiAgICAgdmFyIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXMnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2Rp
bmcvZGVmYXVsdC14aHRtbC1lbmNvZGluZy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL2RlZmF1bHQteGh0bWwtZW5jb2RpbmcueGh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVmYXVsdC14aHRtbC1lbmNvZGlu
Zy54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxwIGlkPSJyZXN1bHQiIC8+
CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCA9ICJDaGFyc2V0OiAiICsgCiAgICAgKGRvY3VtZW50LmNoYXJzZXQg
PyBkb2N1bWVudC5jaGFyc2V0IDogZG9jdW1lbnQuY2hhcmFjdGVyU2V0KSArICIgKHNob3VsZCBi
ZSBVVEYtOCkiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9lc2NhcGVkLWJyYWNr
ZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2VzY2FwZWQt
YnJhY2tldC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2VzY2FwZWQtYnJhY2tldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBA
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ci
KS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBpZiAo
ZG9jdW1lbnQuaW5wdXRFbmNvZGluZyA9PSAiS09JOC1SIikKICAgICBsb2coIlBBU1M6ICIgKyBk
b2N1bWVudC5pbnB1dEVuY29kaW5nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcv
ZXVja3ItbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcv
ZXVja3ItbmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2V1Y2tyLW5hbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxC
T0RZPgogPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjU0ODciPmJ1ZyAyNTQ4NzwvYT4uIEV2ZW4gdGhvdWdoIHdlIHRyZWF0IEVVQy1L
UiBhcyB3aW5kb3dzLTk0OSwgdGhlIG5hbWUgZXhwb3NlZCB2aWEgRE9NIEFQSXMgc2hvdWxkIHN0
aWxsIGJlIEVVQy1LUi48L3A+ICAKIDxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgdmFy
IGVuY29kaW5nRWxlbXMgPSBbImNoYXJhY3RlclNldCIsICJjaGFyc2V0IiwgImlucHV0RW5jb2Rp
bmciXTsKICAgZm9yICh2YXIgaSBpbiBlbmNvZGluZ0VsZW1zKSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL2V4dGVybmFsLXNjcmlwdC1jaGFyc2V0LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZXh0ZXJuYWwtc2NyaXB0LWNoYXJzZXQuanMJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZXh0ZXJuYWwtc2Ny
aXB0LWNoYXJzZXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDEiKS5pbm5lckhUTUwgKz0gKCLQ
ryIgPT0gIlx1MDQyRiIpID8gIlBBU1MiIDogIkZBSUwiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9mbG9yYWV4cHJlc3MtcnUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL2Zsb3JhZXhwcmVzcy1ydS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Zsb3JhZXhwcmVzcy1ydS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiAKIDxwPlRlc3QgYSBwYXJ0aWN1bGFyIGV4YW1wbGUg
b2YgYnJva2VuIG1hcmt1cCB0aGF0IHdhcyBtYWtpbmcgdXMgaWdub3JlIGEgY2hhcnNldCBkZWNs
YXJhdGlvbi48L3A+CiA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIHZhciBjaGFyc2V0
ID0gZG9jdW1lbnQuY2hhcmFjdGVyU2V0OwogICBpZiAoIWNoYXJzZXQpCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL2ZyYW1lLWRlZmF1bHQtZW5jLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ZyYW1lLWRlZmF1bHQtZW5j
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8bWV0YSBodHRwLWVxdWl2PSJj
b250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD14LW1hYy1jeXJpbGxpYyI+
CiA8dGl0bGU+RnJhbWVzIGFuZCBlbmNvZGluZ3M8L3RpdGxlPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHdpbmRvdy5kb25lID0gZnVuY3Rpb24o
Y2hhcnNldCkgewpAQCAtMTUsOCArMTUsOCBAQCB3aW5kb3cuZG9uZSA9IGZ1bmN0aW9uKGNoYXJz
ZXQpIHsKIAogICAgIGRvY3VtZW50LmNsb3NlKCk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNv
ZGluZy9oYW5hcmVpLWJsb2czMi1mYzItY29tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9lbmNvZGluZy9oYW5hcmVpLWJsb2czMi1mYzItY29tLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGFuYXJlaS1ibG9nMzItZmMyLWNv
bS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBAIHZhciBGUkFNRT0wOwogCiA8
cD5UZXN0IGEgcGFydGljdWxhciBleGFtcGxlIG9mIGJyb2tlbiBtYXJrdXAgdGhhdCB3YXMgbWFr
aW5nIHVzIGlnbm9yZSBhIGNoYXJzZXQgZGVjbGFyYXRpb24uPC9wPgogPHNjcmlwdD4KLSAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICB2YXIgY2hhcnNldCA9IGRvY3VtZW50LmNoYXJhY3RlclNldDsKICAg
aWYgKCFjaGFyc2V0KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oaWdoLWJpdC1s
YXRpbjEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hpZ2gt
Yml0LWxhdGluMS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2hpZ2gtYml0LWxhdGluMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBA
QAogICAgIDxhIGlkPSJ0IiDgPjwvYT4KICAgICA8cD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgICAgICBkb2N1bWVudC53cml0ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidCIpLmF0
dHJpYnV0ZXNbMV0ubmFtZSA9PSAiXHUwMGUwIiA/ICJQQVNTIiA6ICJGQUlMIik7CiAgICAgPC9z
Y3JpcHQ+CiAgICAgPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pZG4tc2Vj
dXJpdHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2lkbi1z
ZWN1cml0eS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2lkbi1zZWN1cml0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQAogZnVu
Y3Rpb24gdGVzdElETkVuY29kZShjaGFyQ29kZSkKIHsKICAgICB2YXIgc3RyID0gU3RyaW5nLmZy
b21DaGFyQ29kZShjaGFyQ29kZSk7Ci0gICAgc3RyID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZW5j
b2RlSG9zdE5hbWUoc3RyKTsKKyAgICBzdHIgPSB0ZXN0UnVubmVyLmVuY29kZUhvc3ROYW1lKHN0
cik7CiAgICAgaWYgKHN0ci5zdWJzdHIoMCwgNCkgPT0gInhuLS0iKQogICAgICAgICByZXR1cm4g
InB1bnljb2RlIjsKICAgICByZXR1cm4gZXNjYXBlKHN0cik7CkBAIC0xOCw3ICsxOCw3IEBAIGZ1
bmN0aW9uIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigKIHsKICAgICB2YXIgc3RyID0g
U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7CiAgICAgc3RyID0gImEiICsgc3RyOwotICAg
IHN0ciA9IGxheW91dFRlc3RDb250cm9sbGVyLmVuY29kZUhvc3ROYW1lKHN0cik7CisgICAgc3Ry
ID0gdGVzdFJ1bm5lci5lbmNvZGVIb3N0TmFtZShzdHIpOwogICAgIGlmIChzdHIuc3Vic3RyKDAs
IDQpID09ICJ4bi0tIikKICAgICAgICAgcmV0dXJuICJwdW55Y29kZSI7CiAgICAgaWYgKHN0ci5z
dWJzdHIoMCwgMSkgPT0gImEiKQpAQCAtMjksOCArMjksOCBAQCBmdW5jdGlvbiB0ZXN0SURORW5j
b2RlTm90Rmlyc3RDaGFyYWN0ZXIoCiBmdW5jdGlvbiB0ZXN0SUROUm91bmRUcmlwKGNoYXJDb2Rl
KQogewogICAgIHZhciBzdHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKTsKLSAgICBz
dHIgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5lbmNvZGVIb3N0TmFtZShzdHIpOwotICAgIHN0ciA9
IGxheW91dFRlc3RDb250cm9sbGVyLmRlY29kZUhvc3ROYW1lKHN0cik7CisgICAgc3RyID0gdGVz
dFJ1bm5lci5lbmNvZGVIb3N0TmFtZShzdHIpOworICAgIHN0ciA9IHRlc3RSdW5uZXIuZGVjb2Rl
SG9zdE5hbWUoc3RyKTsKICAgICBpZiAoc3RyLnN1YnN0cigwLCA0KSA9PSAieG4tLSIpCiAgICAg
ICAgIHJldHVybiAicHVueWNvZGUiOwogICAgIHJldHVybiBlc2NhcGUoc3RyKTsKQEAgLTQwLDgg
KzQwLDggQEAgZnVuY3Rpb24gdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdAogewogICAg
IHZhciBzdHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKTsKICAgICBzdHIgPSAiYSIg
KyBzdHI7Ci0gICAgc3RyID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZW5jb2RlSG9zdE5hbWUoc3Ry
KTsKLSAgICBzdHIgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5kZWNvZGVIb3N0TmFtZShzdHIpOwor
ICAgIHN0ciA9IHRlc3RSdW5uZXIuZW5jb2RlSG9zdE5hbWUoc3RyKTsKKyAgICBzdHIgPSB0ZXN0
UnVubmVyLmRlY29kZUhvc3ROYW1lKHN0cik7CiAgICAgaWYgKHN0ci5zdWJzdHIoMCwgNCkgPT0g
InhuLS0iKQogICAgICAgICByZXR1cm4gInB1bnljb2RlIjsKICAgICBpZiAoc3RyLnN1YnN0cigw
LCAxKSA9PSAiYSIpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtVVRG
LTgtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxp
ZC1VVEYtOC0yLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvaW52YWxpZC1VVEYtOC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDgg
QEAKIDwvaGVhZD4KIDxib2R5PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIDwvc2NyaXB0PgogPHA+VGhpcyB0ZXN0cyB0aGUgZGVjb2Rpbmcgb2YgaW52YWxpZCBVVEYt
OCBzZXF1ZW5jZXMuPC9wPgogVGhlIGZvbGxvd2luZyBzaG91bGQgYmU6ICLRgu+/ve+/vdGCIO+/
ve+/ve+/vSIgb3IgItGC77+977+90YIg77+977+977+977+977+977+977+977+9IjoKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC1tdWx0aS1ieXRlLW92ZXItY29uc3Vt
cHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFs
aWQtbXVsdGktYnl0ZS1vdmVyLWNvbnN1bXB0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC1tdWx0aS1ieXRlLW92ZXItY29uc3Vt
cHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9U2hp
ZnRfSklTIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHRlc3QgPSAiUGFzc2VkIjsK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXgu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2phcGFuZXNlLWVu
Y29kaW5nLW1peC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2phcGFuZXNlLWVuY29kaW5nLW1peC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDYg
KzQsNiBAQAogPHA+U29tZSB0ZXh0IGhlcmUgaXMgZW5jb2RlZCBhcyBFVUMtSlAsIGFuZCBzb21l
IChpbiBjb21tZW50KSBhcyBTaGlmdF9KSVMuIFNpbmNlIHRoZXJlIGlzIGFuIGV4cGxpY2l0IGVu
Y29kaW5nIGRlY2xhcmF0aW9uLCBhdXRvLWRldGVjdGlvbiBzaG91bGRuJ3QgY2hhbmdlIHRoZSBl
bmNvZGluZy48L3A+PHA+pculw6XdpfOlxqXspdM8L3A+CiA8IS0tiUWDSoOJg4CDUoOBg5ODZ4NB
g0WDZyCCsYKxgqmC5yAtLT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIGRvY3VtZW50LndyaXRl
KCJTaG91bGQgYmUgRVVDLUpQOiAiICsgKGRvY3VtZW50LmNoYXJzZXQgPyBkb2N1bWVudC5jaGFy
c2V0IDogZG9jdW1lbnQuY2hhcmFjdGVyU2V0KSk7PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL2xhdGluMS13aW5sYXRpbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbGF0aW4xLXdpbmxhdGluLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbGF0aW4xLXdpbmxhdGluLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQ+Ci0g
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPldlIG5lZWQgdG8gdHJlYXQgTGF0aW4tMSBh
cyBpZiBpdCB3ZXJlIHdpbmRvd3MtMTI1Miwgc2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyIj5idWcgNzYwMjwvYT4uPC9wPgogPHA+QXMgZW50
aXRpZXM6IDxzcGFuIGlkPSdlbnRpdGllcyc+JiN4ODA7JiN4ODE7JiN4ODM7JiN4ODY7JiN4ODc7
PC9zcGFuPjwvcD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5
cy11dGYtOC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWFp
bHRvLWFsd2F5cy11dGYtOC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTMsOSArMTMsOSBAQAogCiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpIHsKLSAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0Rm9yUG9saWN5RGVsZWdhdGUo
KTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICB2YXIgYSA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07CiAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oYS5vZmZzZXRMZWZ0ICsgNSwgYS5vZmZzZXRUb3AgKyA1KTsKICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0
YS1jaGFyc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9t
ZXRhLWNoYXJzZXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
bmNvZGluZy9tZXRhLWNoYXJzZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAK
IDxCT0RZPgogPHA+U2hvdWxkIHNlZSBIZWJyZXcgbGV0dGVyIEFsZXBoIHR3aWNlOiDgJiMxNDg4
OzwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQu
aW5wdXRFbmNvZGluZyk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2Rp
bmcvbWV0YS1pbi1ib2R5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNv
ZGluZy9tZXRhLWluLWJvZHkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9lbmNvZGluZy9tZXRhLWluLWJvZHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwogfQogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogaWYgKGRvY3VtZW50LmlucHV0RW5jb2RpbmcgPT0gIklTTy0yMDIyLUpQIikKICAgICBsb2co
IlBBU1M6ICIgKyBkb2N1bWVudC5pbnB1dEVuY29kaW5nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZW5jb2RpbmcvbWV0YS1pbi1zY3JpcHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL21ldGEtaW4tc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1pbi1zY3JpcHQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTMsOCArMTMsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwogfQog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogaWYgKGRvY3VtZW50LmlucHV0RW5jb2RpbmcgPT0gIndpbmRvd3Mt
MTI1NSIpCiAgICAgbG9nKCJQQVNTOiAiICsgZG9jdW1lbnQuaW5wdXRFbmNvZGluZyk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21ldGEtaW4tdGl0bGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21ldGEtaW4tdGl0bGUuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWluLXRpdGxlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVyVGV4dCArPSBtZXNzYWdl
ICsgIlxuIjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmIChkb2N1bWVudC5pbnB1dEVuY29kaW5n
ID09ICJLT0k4LVIiKQogICAgIGxvZygiUEFTUzogIiArIGRvY3VtZW50LmlucHV0RW5jb2Rpbmcp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWluLXhodG1sLnhodG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1pbi14aHRtbC54aHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWlu
LXhodG1sLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBAIFNob3VsZCBvbmx5
IGhvbm9yIGVuY29kaW5nIGZyb20gJmx0O21ldGEKIDxwIGlkPSJyZXN1bHQiIC8+CiAKIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCA9ICJDaGFyc2V0OiAiICsgCiAgICAgKGRvY3VtZW50LmNoYXJzZXQgPyBkb2N1bWVu
dC5jaGFyc2V0IDogZG9jdW1lbnQuY2hhcmFjdGVyU2V0KSArICIgKHNob3VsZCBiZSBVVEYtOCki
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9taXNtYXRjaGVkLWVuZC10YWcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21pc21hdGNoZWQtZW5k
LXRhZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5n
L21pc21hdGNoZWQtZW5kLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBA
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ci
KS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBpZiAo
ZG9jdW1lbnQuaW5wdXRFbmNvZGluZyA9PSAid2luZG93cy0xMjU1IikKICAgICBsb2coIlBBU1M6
ICIgKyBkb2N1bWVudC5pbnB1dEVuY29kaW5nKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvbWlzcGxhY2VkLXhtbC1kZWNsYXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWlzcGxhY2VkLXhtbC1kZWNsYXJhdGlvbi5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21pc3BsYWNlZC14bWwt
ZGVjbGFyYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxib2R5Pgog
U2hvdWxkIGJlIHlvdXIgYnJvd3NlciBkZWZhdWx0IGVuY29kaW5nOiAKIDxzY3JpcHQ+Ci0gIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgIGRvY3VtZW50LndyaXRlKGRvY3VtZW50LmNoYXJhY3RlclNldCkKIDwv
c2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9taXNwb3Np
dGlvbmVkLW1ldGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5n
L21pc3Bvc2l0aW9uZWQtbWV0YS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL21pc3Bvc2l0aW9uZWQtbWV0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDggKzMsOCBAQAogICA8dGl0bGU+58/CzMnOLCBHb2JsaW4sINPBytQg58/CzMnOwTwvdGl0
bGU+CiAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiB0eXBl
PSJpbWFnZS94LWljb24iPgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICA8L3NjcmlwdD4KICA8L2hlYWQ+CiAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9S09JOC1SIj4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLW1ldGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL25hbWVzcGFjZS1tZXRhLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLW1ldGEuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4iOwog
fQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogaWYgKGRvY3VtZW50LmlucHV0RW5jb2RpbmcgPT0gIklTTy0y
MDIyLUpQIikKICAgICBsb2coIlBBU1M6ICIgKyBkb2N1bWVudC5pbnB1dEVuY29kaW5nKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLXRvbGVyYW5jZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLXRvbGVyYW5j
ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25h
bWVzcGFjZS10b2xlcmFuY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNSArMTEsNSBAQCBU
aGlzIHRlc3QgZW5zdXJlcyBhIFVURi04IGVuY29kaW5nIGlzIHByCiA8YnI+CiBJZiB0aGlzIHRl
c3QgcGFzc2VzLCB0aGUgVVRGLTggY2hhcmFjdGVyIGJlbG93IHNob3VsZCBleGFjdGx5IG1hdGNo
IHRoZSBjaGFyYWN0ZXIgdGhlIGNoYXJhY3RlciBpbiBuYW1lc3BhY2UtdG9sZXJhbmNlLWV4cGVj
dGVkLnR4dC4KIOazlQotPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7PC9zY3JpcHQ+Cis8c2NyaXB0PmlmICh3
aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7PC9zY3JpcHQ+CiA8aHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvbm8tY2hhcnNldC1vbi1keW5hbWlj
LXNjcmlwdC1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGlu
Zy9uby1jaGFyc2V0LW9uLWR5bmFtaWMtc2NyaXB0LWxvYWQuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9uby1jaGFyc2V0LW9uLWR5bmFtaWMtc2Ny
aXB0LWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDkgQEAKICAgICAgICAgCiAg
ICAgICAgIDxkaXYgaWQ9InRhcmdldCI+PC9kaXY+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAg
ICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LnRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva3lvID0gJ+OBqOOB
huOBjeOCh+OBhic7CiAgICAgICAgICAgICBvRElWUmVzdWx0cz1kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzY3JpcHQnKTsgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25vc2NyaXB0
LWluLWhlYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25v
c2NyaXB0LWluLWhlYWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9ub3NjcmlwdC1pbi1oZWFkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAgQ2hpbmVzZSBkZWNvZGluZyBlcnJvciBhdCBoay5hbnRpc3BhbS55YQogPHA+JiMz
ODU5NzsmIzM0MzgyOyYjMzkzMjE7JiMyODIwNzs8L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL25vdC1odHRwLWVxdWl2LWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL25vdC1odHRwLWVxdWl2LWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ub3QtaHR0cC1lcXVpdi1jb250ZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAgZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVyVGV4dCArPSBtZXNz
YWdlICsgIlxuIjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmIChkb2N1bWVudC5pbnB1dEVuY29k
aW5nID09ICJ3aW5kb3dzLTEyNTUiKQogICAgIGxvZygiUEFTUzogIiArIGRvY3VtZW50LmlucHV0
RW5jb2RpbmcpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wZXJjZW50LWVzY2Fw
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wZXJjZW50
LWVzY2FwaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvcGVyY2VudC1lc2NhcGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSw5
IEBAIEtVUkw6OmFwcGVuZEVzY2FwaW5nQmFkQ2hhcnMoKSBzaG91bGQgbmUKIDwvZm9ybT4KIDxz
Y3JpcHQ+CiAKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICB9CiAK
ICAgZG9jdW1lbnQuZi5zdWJtaXQoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcv
cHJlbG9hZC1lbmNvZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvcHJlbG9hZC1lbmNvZGluZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL3ByZWxvYWQtZW5jb2RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDggQEAKIDxtZXRhIGNoYXJzZXQ9ImdiMjMxMiI+CiA8Ym9keSBvbmxvYWQ9InRl
c3RTdHlsZXNoZWV0cygpIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogCiA8
IS0tCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby10YWdzLWluLWF0dHJp
YnV0ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVk
by10YWdzLWluLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8tdGFncy1pbi1hdHRyaWJ1dGVzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEzLDggKzEzLDggQEAKICAgCiAgIDxTQ1JJUFQ+CiAgIGRvY3VtZW50LndyaXRl
KCI8cD5DaGFyc2V0OiAiICsgZG9jdW1lbnQuaW5wdXRFbmNvZGluZyArICI8L3A+Iik7Ci0gIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgIDwvU0NSSVBUPgogICA8L0JPRFk+CiA8L0hUTUw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby14bWwtMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC0yLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC0yLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTcsOCArNyw4IEBAIEFuIFhNTCBkZWNsYXJhdGlvbiB3aXRob3V0IGFuIGV4
cGxpY2l0IGUKIDxwIGlkPSJyZXN1bHQiIC8+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJDaGFyc2V0OiAi
ICsgCiAgICAgKGRvY3VtZW50LmNoYXJzZXQgPyBkb2N1bWVudC5jaGFyc2V0IDogZG9jdW1lbnQu
Y2hhcmFjdGVyU2V0KSArICIgKHNob3VsZCBiZSBLT0k4LVIpIjsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTIsOCArMTIsOCBAQCBBbiBYTUwgZGVjbGFyYXRpb24gd2l0aG91dCBhbiBleHBsaWNp
dCBlCiA8cCBpZD0icmVzdWx0IiAvPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiQ2hhcnNldDogIiArIAog
ICAgIChkb2N1bWVudC5jaGFyc2V0ID8gZG9jdW1lbnQuY2hhcnNldCA6IGRvY3VtZW50LmNoYXJh
Y3RlclNldCkgKyAiIChzaG91bGQgYmUgS09JOC1SKSI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2VuY29kaW5nL3BzZXVkby14bWwtNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZW5jb2RpbmcvcHNldWRvLXhtbC00Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC00Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEyLDggKzEyLDggQEAgQW4gWE1MIGRlY2xhcmF0aW9uIHdpdGhvdXQgYW4gZXhwbGljaXQgZQog
PHAgaWQ9InJlc3VsdCIgLz4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIkNoYXJzZXQ6ICIgKyAKICAgICAo
ZG9jdW1lbnQuY2hhcnNldCA/IGRvY3VtZW50LmNoYXJzZXQgOiBkb2N1bWVudC5jaGFyYWN0ZXJT
ZXQpICsgIiAoc2hvdWxkIGJlIHdpbmRvd3MtMTI1MSkiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9wc2V1ZG8teG1sLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9wc2V1ZG8teG1sLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDgg
KzksOCBAQCBBbiBYTUwgZGVjbGFyYXRpb24gd2l0aG91dCBhbiBleHBsaWNpdCBlCiA8cCBpZD0i
cmVzdWx0IiAvPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiQ2hhcnNldDogIiArIAogICAgIChkb2N1bWVu
dC5jaGFyc2V0ID8gZG9jdW1lbnQuY2hhcnNldCA6IGRvY3VtZW50LmNoYXJhY3RlclNldCkgKyAi
IChzaG91bGQgYmUgeW91ciBicm93c2VyIGRlZmF1bHQgb25lKSI7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2VuY29kaW5nL3F1b3Rlcy1pbi10aXRsZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcXVvdGVzLWluLXRpdGxlLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcXVvdGVzLWluLXRpdGxlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVyVGV4dCArPSBtZXNzYWdlICsgIlxu
IjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmIChkb2N1bWVudC5pbnB1dEVuY29kaW5nID09ICJL
T0k4LVIiKQogICAgIGxvZygiUEFTUzogIiArIGRvY3VtZW50LmlucHV0RW5jb2RpbmcpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvRVVDLUNOLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvRVVDLUNOLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL0VVQy1DTi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD1FVUMtQ04iIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgogPC9oZWFkPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5l
cyBzaG91bGQgbG9vayBpZGVudGljYWxseTo8L3A+CiA8cD7Su7lQgOlGPC9wPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2hpbmVzZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NoaW5lc2UuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2hpbmVzZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDggKzIsOCBAQAogICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1jaGluZXNlIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KIDwvaGVhZD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMg
c2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6PC9wPgogPHA+0ru5UIDpRjwvcD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2Nsb3NlLWdiay1jb252ZXJ0ZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbG9zZS1nYmstY29udmVydGVy
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JL
L2Nsb3NlLWdiay1jb252ZXJ0ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAK
IDxtZXRhIGNoYXJzZXQ9ImdiayI+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rp
b24gdGVzdCgpIHsKICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY24tZ2IuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbi1nYi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbi1nYi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDggKzIsOCBAQAogICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1j
bi1nYiIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+CiA8L2hlYWQ+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBs
b29rIGlkZW50aWNhbGx5OjwvcD4KIDxwPtK7uVCA6UY8L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWNz
Z2IyMzEyIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KIDwvaGVhZD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxk
IGxvb2sgaWRlbnRpY2FsbHk6PC9wPgogPHA+0ru5UIDpRjwvcD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyODAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMjgwLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyODAuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKICAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9Y3NnYjIzMTI4MCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+CiA8L2hlYWQ+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRoZSBmb2xsb3dpbmcgdHdvIGxp
bmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OjwvcD4KIDxwPtK7uVCA6UY8L3A+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYjIzMTIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYjIzMTIuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2IyMzEyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsOCArMiw4IEBACiAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PWdiMjMxMiIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+CiA8L2hlYWQ+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNo
b3VsZCBsb29rIGlkZW50aWNhbGx5OjwvcD4KIDxwPtK7uVCA6UY8L3A+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYl8yMzEyLTgwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2JfMjMxMi04MC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYl8yMzEyLTgwLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PWdiXzIzMTItODAiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgogPC9oZWFk
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UaGUgZm9sbG93aW5nIHR3
byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseTo8L3A+CiA8cD7Su7lQgOlGPC9wPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2JrLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2JrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diay5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDggKzIsOCBAQAogICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1n
YmsiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgogPC9oZWFkPgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9v
ayBpZGVudGljYWxseTo8L3A+CiA8cD7Su7lQgOlGPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9HQksvaXNvLWlyLTU4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9lbmNvZGluZy9HQksvaXNvLWlyLTU4Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2lzby1pci01OC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDggKzIsOCBAQAogICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1p
c28taXItNTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgogPC9oZWFkPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91
bGQgbG9vayBpZGVudGljYWxseTo8L3A+CiA8cD7Su7lQgOlGPC9wPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9lbmNvZGluZy9HQksveC1ldWMtY24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWV1Yy1jbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWV1Yy1jbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDggKzIsOCBAQAogICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD14LWV1Yy1jbiIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+CiA8L2hlYWQ+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNo
b3VsZCBsb29rIGlkZW50aWNhbGx5OjwvcD4KIDxwPtK7uVCA6UY8L3A+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWdiay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZW5jb2RpbmcvR0JLL3gtZ2JrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL3gtZ2JrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTIsOCArMiw4IEBACiAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXgtZ2Jr
IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KIDwvaGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIDwvc2NyaXB0PgogPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sg
aWRlbnRpY2FsbHk6PC9wPgogPHA+0ru5UIDpRjwvcD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZW5jb2RpbmcvaGVicmV3Lzg4NTktOC1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04LWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04LWUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMgQEAKIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTgtRSIgLz48Ym9keT48cCBpZD1wPgot
7+Xr8CDk5jwvcD48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK+/l6/Ag5OY8L3A+PHNjcmlwdD5pZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogZG9jdW1lbnQud3JpdGUo
KGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInAiKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1ydGwtb3JkZXJpbmci
KSA9PSAidmlzdWFsIikgPyAiUEFTUyIgOiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVi
cmV3Lzg4NTktOC1pLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGlu
Zy9oZWJyZXcvODg1OS04LWkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04LWkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMgQEAKIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PWlzby04ODU5LTgtaSIgLz48Ym9keT48cCBpZD1wPgot5uQg8Ovl7zwvcD48
c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK+bkIPDr5e88L3A+PHNjcmlwdD5pZiAod2luZG93LnRlc3RSdW5u
ZXIpIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogZG9jdW1lbnQud3JpdGUoKGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAiKSwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1ydGwtb3JkZXJpbmciKSA9PSAibG9naWNh
bCIpID8gIlBBU1MiIDogIkZBSUwiKTwvc2NyaXB0PjwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5
LTguaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9o
ZWJyZXcvODg1OS04Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiA8bWV0YSBo
dHRwLWVxdWl2PSJjb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28t
ODg1OS04IiAvPjxib2R5PjxwIGlkPXA+Ci3v5evwIOTmPC9wPjxzY3JpcHQ+aWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
7+Xr8CDk5jwvcD48c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiBkb2N1bWVudC53cml0ZSgoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicCIpLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCItd2Via2l0LXJ0bC1vcmRlcmluZyIpID09ICJ2aXN1YWwiKSA/ICJQQVNTIiA6ICJGQUlM
Iik8L3NjcmlwdD48L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvY3NJU084ODU5OEkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9jc0lTTzg4NTk4SS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9jc0lT
Tzg4NTk4SS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogPG1ldGEgaHR0cC1l
cXVpdj0iY29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Y3NJU084ODU5
OEkiIC8+PGJvZHk+PHAgaWQ9cD4KLebkIPDr5e88L3A+PHNjcmlwdD5pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Civm5CDw
6+XvPC9wPjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIGRvY3VtZW50LndyaXRlKChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwIiksIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
Ii13ZWJraXQtcnRsLW9yZGVyaW5nIikgPT0gImxvZ2ljYWwiKSA/ICJQQVNTIiA6ICJGQUlMIik8
L3NjcmlwdD48L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvaGVicmV3Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvaGVicmV3Lmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2hlYnJldy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktOCIgLz48Ym9keT48cCBpZD1w
Pgot7+Xr8CDk5jwvcD48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK+/l6/Ag5OY8L3A+PHNjcmlwdD5pZiAo
d2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogZG9jdW1lbnQud3Jp
dGUoKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInAiKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1ydGwtb3JkZXJp
bmciKSA9PSAidmlzdWFsIikgPyAiUEFTUyIgOiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcv
aGVicmV3L2lzby1pci0xMzguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2hlYnJldy9pc28taXItMTM4Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2lzby1pci0xMzguaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMgQEAKIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby1pci0xMzgiIC8+PGJvZHk+PHAgaWQ9cD4KLe/l6/Ag
5OY8L3A+PHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Civv5evwIOTmPC9wPjxzY3JpcHQ+aWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIGRvY3VtZW50LndyaXRlKChkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwIiksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtcnRsLW9yZGVyaW5nIikgPT0g
InZpc3VhbCIpID8gIlBBU1MiIDogIkZBSUwiKTwvc2NyaXB0PjwvYm9keT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9s
b2dpY2FsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJy
ZXcvbG9naWNhbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL2hlYnJldy9sb2dpY2FsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBA
CiA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1sb2dpY2FsIiAvPjxib2R5PjxwIGlkPXA+Ci3m5CDw6+XvPC9wPjxzY3JpcHQ+aWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwor5uQg8Ovl7zwvcD48c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiBkb2N1bWVudC53cml0ZSgoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicCIpLCBudWxsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCItd2Via2l0LXJ0bC1vcmRlcmluZyIpID09ICJsb2dpY2FsIikgPyAiUEFTUyIg
OiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzLzUwNTY2MTkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy81MDU2NjE5Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzLzUwNTY2MTkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTAsMTAgKzEwLDEwIEBAIGZ1bmN0aW9uIGZvY3VzSGFuZGxlcigpIHsKIH0KIAogZnVuY3Rpb24g
cnVuVGVzdCgpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBp
ZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAgIHRlc3RSdW5uZXIuZHVtcEVk
aXRpbmdDYWxsYmFja3MoKTsKICAgICAKICAgICB2YXIgeCwgeTsKICAgICB2YXIgc3BhbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1Y3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1Y3QuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYWNjZXNzLWtleS1zZWxmLWRlc3Ry
dWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBAIGZ1bmN0aW9uIHJlcGxhY2Uo
KQogfQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8p
ICE9IC0xKQogICAgICAgICAgICAgbW9kaWZpZXJzID0gWyJjdHJsS2V5IiwgImFsdEtleSJdOwog
ICAgICAgICBlbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hZGQtZXZlbnQtd2l0
aG91dC1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2FkZC1ldmVudC13aXRob3V0LWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2FkZC1ldmVudC13aXRob3V0LWRvY3VtZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBvbkNsaWNr
KCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSAiUEFT
UyI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIAogZnVuY3Rp
b24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgdmFyIGRvY3R5cGUgPSBkb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hbmNob3ItZW1wdHktZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9hbmNob3ItZW1wdHktZm9jdXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYW5jaG9yLWVtcHR5LWZvY3VzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOCArNCw4IEBACiAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
IHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbmNoIikuZm9jdXMoKTsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdzJyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hbmNo
b3ItaW1hZ2Utc2Nyb2xsZWQteC15Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvYW5jaG9yLWltYWdlLXNjcm9sbGVkLXgteS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hbmNob3ItaW1hZ2Utc2Nyb2xsZWQteC15Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGlm
IChxdWVyeUluZGV4ID09IC0xKSB7CiAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyg1MDAsIDUwMCk7
CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKDE4LCAxOCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKQEAgLTE4LDggKzE4LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRvY3VtZW50Lndy
aXRlKCI8ZGl2PkZvcm0gZGF0YTogIiArIGRvY3VtZW50LlVSTC5zdWJzdHJpbmcocXVlcnlJbmRl
eCArIDEpICsgIjwvZGl2PiIpOwogICAgICAgICBkb2N1bWVudC53cml0ZSgiPGRpdj5YIGFuZCBZ
IHNob3VsZCBib3RoIGJlIGFib3V0IDEwLjwvZGl2PiIpOwogCi0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvYXJyb3cta2V5cy1vbi1ib2R5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXJyb3cta2V5cy1vbi1ib2R5Lmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Fycm93LWtleXMtb24tYm9k
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBAIGxvZygidGFyZ2V0IC0gdHlw
ZSAtICIgKyBbImN0cmxLZXkiLCAiYWwKICAgICAgICAgKyAnIC0gJyArICJrZXlDb2RlIgogICAg
ICAgICArICcgLSAnICsgImNoYXJDb2RlIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJsZWZ0QXJyb3ciLCBbXSk7CiB9CiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2Fycm93LW5hdmlnYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hcnJvdy1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Fycm93LW5hdmlnYXRpb24uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICAgICAgICAgICAgICAgICB2YXIgdGYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGYnKTsKICAgICAgICAgICAgICAgICB0Zi5mb2N1cygpOwogICAg
ICAgICAgICAgICAgIHRmLnNldFNlbGVjdGlvblJhbmdlKDAsIDApOwotICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRB
cnJvdyIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodGYuc2VsZWN0
aW9uU3RhcnQgPT0gMSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dGVtcHQtc2Ny
b2xsLXdpdGgtbm8tc2Nyb2xsYmFycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2F0dGVtcHQtc2Nyb2xsLXdpdGgtbm8tc2Nyb2xsYmFycy5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRlbXB0LXNjcm9sbC13aXRo
LW5vLXNjcm9sbGJhcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMCBAQCB2YXIg
dGhlV2lucmVmOwogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5X
aW5kb3dzKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgICB9CiAgICAgdGhlV2lucmVmID0gd2luZG93Lm9wZW4oJycsJ19i
bGFuaycsJ3Njcm9sbGJhcnM9bm8nKTsKICAgICBzZXRUaW1lb3V0KGRvTmV3V2luZG93LCAyNTAp
OwpAQCAtMzUsOSArMzUsOSBAQCBmdW5jdGlvbiBwcmludFJlc3VsdCgpCiAKIGZ1bmN0aW9uIGVu
ZFRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgaWYgKHRoZVdpbnJlZi5jbG9zZWQpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2V0
VGltZW91dCgiZW5kVGVzdCgpIiwgMTApOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2F0dGVtcHQtc2VsZWN0LWFsbC13aXRoLXdyb25nLW1vZGlmaWVyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0ZW1wdC1zZWxlY3QtYWxsLXdpdGgt
d3JvbmctbW9kaWZpZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvYXR0ZW1wdC1zZWxlY3QtYWxsLXdpdGgtd3JvbmctbW9kaWZpZXIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgaWYgKG5hdmln
YXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKICAgICAgICAgb25N
YWNQbGF0Zm9ybSA9IHRydWU7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgfQogCiAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29u
dGV4dC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmli
dXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0
ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDkgKzIsOSBAQAogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgogPGlmcmFtZSBzcmM9
J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIjIiBvbmNsaWNrPSJkb2N1bWVudC53cml0
ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNT
PC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwvYT4nPjwvaWZyYW1lPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3Qo
KQpAQCAtMjQsOCArMjQsOCBAQCBmdW5jdGlvbiB0ZXN0MigpCiAgICAgdmFyIGV2ZW50ID0gdG9w
LmRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7CiAgICAgZXZlbnQuaW5pdEV2ZW50
KCdjbGljaycsIHRydWUsIHRydWUpOwogICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnYScpWzBdLmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxp
c3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xv
bmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OSArMiw5IEBACiA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CiA8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0
L2h0bWwsPGEgaWQ9ImEiIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAh
PSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7
KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkBAIC0xOSw4
ICsxOSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGV2ZW50LmluaXRFdmVudCgnY2xpY2snLCB0
cnVlLCB0cnVlKTsKICAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVsw
XS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRy
aWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy54aHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZy
b20tZnJhbWVsZXNzLWRvYy54aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2Mu
eGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8cD5UZXN0IHRoYXQgYW4gZWxl
bWVudCB0aGF0IHdhcyBpbXBvcnRlZCBmcm9tIGEgZnJhbWVsZXNzIGRvY3VtZW50IGhhcyBmdW5j
dGlvbmFsIGF0dHJpYnV0ZSBldmVudCBsaXN0ZW5lcnMuIFNob3VsZCBhbGVydCAiU1VDQ0VTUyIu
PC9wPgogPHNjcmlwdD4KIDwhW0NEQVRBWwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgdmFyIGRvYyA9IChuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoJzxodG1sIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48YSBpZD0iYSIgaHJlZj0iamF2YXNj
cmlwdDphbGVydChcJ0ZBSUxcJykiIG9uY2xpY2s9ImFsZXJ0KFwnU1VDQ0VTU1wnKTsgcmV0dXJu
IGZhbHNlIj5MaW5rIChjbGlja2VkIGF1dG9tYXRpY2FsbHkpLjwvYT48L2h0bWw+JywgImFwcGxp
Y2F0aW9uL3hodG1sK3htbCIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRy
aWJ1dGUtbGlzdGVuZXItZGVsZXRpb24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZGVsZXRpb24tY3Jhc2guaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxp
c3RlbmVyLWRlbGV0aW9uLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAg
QEAKIDxoZWFkPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gIGlmICghd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgIHJl
dHVybjsKIAotICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICB3
aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgdmFyIHNwYW4gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicm9vdCIpOwogICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzcGFuLm9m
ZnNldExlZnQgKyAxMCwgc3Bhbi5vZmZzZXRUb3AgKyBzcGFuLm9mZnNldEhlaWdodCAvIDIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3Rl
ZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1l
bGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3Mt
ZG9jLWNvbnRleHQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgogPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBo
cmVmPSIjIiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+
RkFJTDwvcD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+
bGluazwvYT4nPjwvaWZyYW1lPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMjQsOCArMjQsOCBAQCBmdW5jdGlv
biB0ZXN0MigpCiAgICAgdmFyIGV2ZW50ID0gdG9wLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3Vz
ZUV2ZW50Jyk7CiAgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpOwogICAg
IHRvcC5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpWzBdLmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0
cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZy
YW1lbGVzcy1kb2MtY29udGV4dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNz
LWRvYy1jb250ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+CiA8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEgaWQ9ImEiIGhy
ZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5G
QUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5s
aW5rPC9hPic+PC9pZnJhbWU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkBAIC0xOSw4ICsxOSw4IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIGV2ZW50LmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKICAgICB0
b3AuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVswXS5kaXNwYXRjaEV2ZW50KGV2
ZW50KTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLWluLXRleHRmaWVs
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwt
aW4tdGV4dGZpZWxkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2F1dG9zY3JvbGwtaW4tdGV4dGZpZWxkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgs
OSArOCw5IEBACiAKICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICB7Ci0gICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChhdXRvc2Nyb2xsVGVzdFBhcnQxLCAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KQEAg
LTQxLDggKzQxLDggQEAKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbG9nKCJQQVNT
RUQiKTsKICAgICAgICAgICAgCi0gICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgIH0gICAgICAgCiAgICAgICAgIDwvc2NyaXB0Pgog
ICAgIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtbm9u
c2Nyb2xsYWJsZS1pZnJhbWUtaW4tc2Nyb2xsYWJsZS1kaXYuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdXRvc2Nyb2xsLW5vbnNjcm9sbGFibGUtaWZyYW1lLWlu
LXNjcm9sbGFibGUtZGl2Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2F1dG9zY3JvbGwtbm9uc2Nyb2xsYWJsZS1pZnJhbWUtaW4tc2Nyb2xsYWJsZS1k
aXYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAKIAogICAgICAgIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgIHsKLSAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGF1dG9zY3JvbGxUZXN0UGFydDEsIDAp
OwogICAgICAgICAgICB9CiAgICAgICAgfQpAQCAtNDEsOCArNDEsOCBAQAogICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICBsb2coIkZBSUxFRCA6IHRoZSBhdXRvc2Nyb2xsIGhhcyBub3Qg
d29ya2VkIDotKCIpOwogICAgICAgICAgICAKLSAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgfSAgICAgICAKICAgICAgICAgPC9z
Y3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXV0b3Nj
cm9sbC13aXRoLW5vbi1zY3JvbGxhYmxlLXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9zY3JvbGwtd2l0aC1ub24tc2Nyb2xsYWJsZS1wYXJlbnQu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXV0b3Nj
cm9sbC13aXRoLW5vbi1zY3JvbGxhYmxlLXBhcmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04
LDkgKzgsOSBAQAogCiAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgewotICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoYXV0b3Njcm9sbFRlc3RQYXJ0MSwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CkBA
IC00NCw4ICs0NCw4IEBACiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGxvZygiRkFJ
TEVEIDogIiArIGlmcmFtZURvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCArICIgcGl4ZWxzIGhhdmUg
YmVlbiBzY3JvbGxlZCIpOwogICAgICAgICAgICAKLSAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgfSAgICAgICAKICAgICAgICAg
PC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXV0
b3Njcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F1dG9z
Y3JvbGwuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
YXV0b3Njcm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogICAgICAgICA8
c2NyaXB0PgogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGF1dG9zY3JvbGxUZXN0UGFydDEsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTI2LDggKzI2LDggQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBm
dW5jdGlvbiBsb2cobXNnKQogICAgICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvYmFja3NwYWNlLW5hdmlnYXRlcy1iYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvYmFja3NwYWNlLW5hdmlnYXRlcy1iYWNrLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JhY2tzcGFjZS1uYXZpZ2F0ZXMt
YmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBmdW5jdGlvbiBleHBlY3Qo
dGVzdCwgbXNnKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgbG9nLmlubmVyVGV4dCA9
ICdGQUlMOiBleHBlY3RlZCAnICsgbXNnOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTc5LDIyICs3OSwyMiBAQCBmdW5jdGlvbiBkb1N0ZXAoc3RlcCwgbG9jYXRpb24p
IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbG9nLmlubmVyVGV4dCArPSAnUEFTUzog
dGVzdCBjb21wbGV0ZSc7CiAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0ZXAn
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKIHdpbmRvdy5vbnBhZ2VzaG93ID0g
ZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdp
bmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93LmludGVybmFscykgeworICAgIGlmICghd2luZG93
LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93LmludGVybmFscykg
ewogICAgICAgICBsb2cuaW5uZXJUZXh0ID0KLSAgICAgICAgICAgICdUaGlzIHRlc3QgcmVxdWly
ZXMgZXZlbnRTZW5kZXIsIGxheW91dFRlc3RDb250cm9sbGVyIGFuZCB3aW5kb3cuaW50ZXJuYWxz
LiAnICsKKyAgICAgICAgICAgICdUaGlzIHRlc3QgcmVxdWlyZXMgZXZlbnRTZW5kZXIsIHRlc3RS
dW5uZXIgYW5kIHdpbmRvdy5pbnRlcm5hbHMuICcgKwogICAgICAgICAgICAgJ0l0IGNhbm5vdCBi
ZSBydW4gbWFudWFsbHkuJzsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIWxvY2F0
aW9uLnNlYXJjaCkgewogICAgICAgICBzZXNzaW9uU3RvcmFnZS5zdGVwID0gMDsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLWFkb3B0LXN1
YmZyYW1lLXRvLW91dHNpZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9iZWZvcmUtdW5sb2FkLWFkb3B0LXN1YmZyYW1lLXRvLW91dHNpZGUuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1hZG9w
dC1zdWJmcmFtZS10by1vdXRzaWRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSw5IEBA
CiA8cHJlIGlkPSJsb2ciPjwvcHJlPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gY3JlYXRlRnJhbWUoaWQsIHBhcmVudCkgewpA
QCAtNTgsOCArNTgsOCBAQCBjb250YWluZXIub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAg
ICBsb2coJ0RPTkUnKTsKICAgICBlbHNlCiAgICAgICAgIGxvZygnUmVjZWl2ZWQgJyArIGkgKyAn
IGV2ZW50cyBidXQgZXhwZWN0ZWQgJyArIGV4cGVjdGVkT3JkZXIubGVuZ3RoKTsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIGNvbnRhaW5lci5zcmMgPSAncmVzb3VyY2VzL2JlZm9y
ZS11bmxvYWQtaW4tc3ViZnJhbWUtZGVzdGluYXRpb24uaHRtbCc7CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtYWRvcHQtd2l0aGluLXN1YmZyYW1lcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtYWRv
cHQtd2l0aGluLXN1YmZyYW1lcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLWFkb3B0LXdpdGhpbi1zdWJmcmFtZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8c2Ny
aXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlv
biBjcmVhdGVGcmFtZShpZCwgcGFyZW50KSB7CkBAIC01Niw4ICs1Niw4IEBAIGNvbnRhaW5lci5v
bmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGxvZygnRE9ORScpOwogICAgIGVsc2UKICAg
ICAgICAgbG9nKCdSZWNlaXZlZCAnICsgaSArICcgZXZlbnRzIGJ1dCBleHBlY3RlZCAnICsgZXhw
ZWN0ZWRPcmRlci5sZW5ndGgpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogY29u
dGFpbmVyLnNyYyA9ICdyZXNvdXJjZXMvYmVmb3JlLXVubG9hZC1pbi1zdWJmcmFtZS1kZXN0aW5h
dGlvbi5odG1sJzsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9h
ZC1mb3JiaWRkZW4tbmF2aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtZm9yYmlkZGVuLW5hdmlnYXRpb24uaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1mb3Ji
aWRkZW4tbmF2aWdhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEwICs1LDEwIEBACiA8
cHJlIGlkPSJsb2ciPkZBSUw8L3ByZT4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAog
dmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtaW4tbXVsdGlwbGUtc3ViZnJhbWVzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1pbi1t
dWx0aXBsZS1zdWJmcmFtZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1pbi1tdWx0aXBsZS1zdWJmcmFtZXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8c2NyaXB0
PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgbG9nID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwpAQCAtMzIsOCArMzIsOCBAQCBmdW5jdGlv
biBmaXJlZChjb250ZW50V2luZG93KSB7CiAgICAgbnVtYmVyT2ZCZWZvcmVVbmxvYWRJblN1YmZy
YW1lcysrOwogICAgIGlmIChudW1iZXJPZkJlZm9yZVVubG9hZEluU3ViZnJhbWVzID09IG51bWJl
ck9mRnJhbWVzKSB7CiAgICAgICAgIGxvZy5pbm5lckhUTUwgPSAnUEFTUyc7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICBlbHNlCiAgICAg
ICAgIGxvZ0Vycm9yKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5s
b2FkLWluLXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvYmVmb3JlLXVubG9hZC1pbi1zdWJmcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLWluLXN1YmZyYW1lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTUsMTAgKzUsMTAgQEAKIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8c2Ny
aXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbG9nJyk7CkBAIC0xOSw4ICsxOSw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAg
IC8vIGxvZydzIG5vdCBoYXZpbmcgYW55IGNvbnRlbnQgaW1wbGllcyB0aGF0IGxvYWQgZXZlbnQg
d2FzIGRpc3BhdGNoZWQgZm9yIHRoZSBzZWNvbmQgdGltZSBiZWZvcmUgYmVmb3JldW5sb2FkIGlz
IGRpc3BhdGNoZWQuCiAgICAgICAgIGlmICghbG9nLmlubmVySFRNTC5sZW5ndGgpCiAgICAgICAg
ICAgICBsb2cuaW5uZXJIVE1MID0gJ0ZBSUw6IGJlZm9yZXVubG9hZCBldmVudCB3YXMgbmV2ZXIg
ZGlzcGF0Y2hlZC5cbic7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRvbmUgPSB0cnVlOwpAQCAtMzIsOCAr
MzIsOCBAQCBmdW5jdGlvbiBmaXJlZCgpIHsKICAgICAgICAgbG9nLmlubmVySFRNTCA9ICdQQVNT
XG4nOwogICAgIGVsc2UKICAgICAgICAgbG9nLmlubmVySFRNTCA9ICdGQUlMOiBiZWZvcmV1bmxv
YWQgZXZlbnQgd2FzIGRpc3BhdGNoZWQgYWZ0ZXIgdGhlIHNlY29uZCBsb2FkIGV2ZW50LicKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLWphdmFzY3JpcHQtbmF2aWdhdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtamF2
YXNjcmlwdC1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtamF2YXNjcmlwdC1uYXZpZ2F0aW9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTUsOSArNSw5IEBACiA8cHJlIGlkPSJsb2ciPkZBSUw8L3ByZT4KIDxz
Y3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBs
b2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CkBAIC0yMSw4ICsyMSw4IEBAIGZ1
bmN0aW9uIHRlc3QoaWZyYW1lKSB7CiAKIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgbG9nLmlubmVy
SFRNTCA9ICdQQVNTJzsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rp
b24gZmlyZWQoY29udGVudFdpbmRvdykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
YmVmb3JlLXVubG9hZC1yZW1vdmUtYW5kLWFkZC1zdWJmcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS11bmxvYWQtcmVtb3ZlLWFuZC1hZGQtc3Vi
ZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
YmVmb3JlLXVubG9hZC1yZW1vdmUtYW5kLWFkZC1zdWJmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC01LDkgKzUsOSBAQAogPHByZSBpZD0ibG9nIj48L3ByZT4KIDxzY3JpcHQ+CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUZyYW1l
KGlkLCBwYXJlbnQpIHsKQEAgLTU4LDggKzU4LDggQEAgY29udGFpbmVyLm9ubG9hZCA9IGZ1bmN0
aW9uICgpIHsKICAgICAgICAgbG9nKCdET05FJyk7CiAgICAgZWxzZQogICAgICAgICBsb2coJ1Jl
Y2VpdmVkICcgKyBpICsgJyBldmVudHMgYnV0IGV4cGVjdGVkICcgKyBleHBlY3RlZE9yZGVyLmxl
bmd0aCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiBjb250YWluZXIuc3JjID0g
J3Jlc291cmNlcy9iZWZvcmUtdW5sb2FkLWluLXN1YmZyYW1lLWRlc3RpbmF0aW9uLmh0bWwnOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5sb2FkLXJlbW92ZS1pdHNl
bGYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtdW5s
b2FkLXJlbW92ZS1pdHNlbGYuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC1yZW1vdmUtaXRzZWxmLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTUsMTAgKzUsMTAgQEAKIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8c2NyaXB0PgogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9n
Jyk7CkBAIC0yMSw4ICsyMSw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICBsb2cu
aW5uZXJIVE1MID0gJ0ZBSUw6IGJlZm9yZXVubG9hZCBldmVudCB3YXMgbmV2ZXIgZGlzcGF0Y2hl
ZC5cbic7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvZy5pbm5lckhUTUwgPSAnRkFJTDog
YmVmb3JldW5sb2FkIGV2ZW50IGhhbmRsZXIgZGlkIG5vdCByZW1vdmUgdGhlIGZyYW1lLlxuJzsK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgZG9uZSA9IHRydWU7CkBAIC0zMiw4ICszMiw4IEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiBmdW5jdGlvbiBmaXJlZCgpIHsKICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdKTsKICAg
ICBsb2cuaW5uZXJIVE1MID0gJ1BBU1Ncbic7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVu
bG9hZC13aXRoLXN1YmZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2JlZm9yZS11bmxvYWQtd2l0aC1zdWJmcmFtZXMuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLXVubG9hZC13aXRoLXN1YmZyYW1l
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEwICs1LDEwIEBACiA8cHJlIGlkPSJsb2ciPjwv
cHJlPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgbG9nID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2xvZycpOwpAQCAtMTgsNyArMTgsNyBAQCB2YXIgbnVtYmVyT2ZGcmFt
ZXMgPSAzOwogZnVuY3Rpb24gdGVzdChpZnJhbWUpIHsKICAgICBpZiAoaWZyYW1lLmRvbmUpIHsK
ICAgICAgICAgaWYgKG51bWJlck9mQmVmb3JlVW5sb2FkSW5TdWJmcmFtZXMgPT0gbnVtYmVyT2ZG
cmFtZXMpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZnJhbWUuZG9uZSA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9ib2d1cy1kcm9wRWZmZWN0LWVmZmVjdEFsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9ib2d1cy1kcm9wRWZmZWN0LWVmZmVjdEFsbG93ZWQuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYm9ndXMtZHJvcEVm
ZmVjdC1lZmZlY3RBbGxvd2VkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsOCBA
QAogICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICAgICAgICAgIAogICAgICAgICB2YXIgc3RhcnRYID0gZHJhZ01lLm9mZnNldExlZnQg
KyAxMDsKICAgICAgICAgdmFyIHN0YXJ0WSA9IGRyYWdNZS5vZmZzZXRUb3AgKyBkcmFnTWUub2Zm
c2V0SGVpZ2h0IC8gMjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JvZ3VzLWV2ZW50
LWxpc3RlbmVyLWludmFsaWRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2JvZ3VzLWV2ZW50LWxpc3RlbmVyLWludmFsaWRhdGlvbi5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ib2d1cy1ldmVudC1saXN0ZW5l
ci1pbnZhbGlkYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQCBmdW5j
dGlvbiBhbGxvY2F0ZSgpIHsKIH0KIAogKGZ1bmN0aW9uICgpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgIAog
ICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICJjbGljayI7IH07CkBAIC01
OSw3ICs1OSw3IEBAIGZ1bmN0aW9uIGFsbG9jYXRlKCkgewogICAgIC8vIFNlZSBpZiB0aGUgbGlz
dGVuZXIgaXMgc3RpbGwgcmVnaXN0ZXJlZC4KICAgICBzaG91bGRCZSgiZGl2Lm9uY2xpY2siLCBk
aXYub25jbGljaywgbGlzdGVuZXIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
KSgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jYXB0dXJlLW9u
LXRhcmdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NhcHR1
cmUtb24tdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2NhcHR1cmUtb24tdGFyZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5
IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiBmdW5jdGlvbiB0ZXN0KCkKIHsKQEAgLTMwLDggKzMwLDggQEAgZnVuY3Rpb24gZmlu
aXNoKCkKICAgICAgICAgbG9nKCJ0ZXN0IHBhc3NlZCIpOwogICAgIGVsc2UKICAgICAgICAgbG9n
KCJ0ZXN0IGZhaWxlZCIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogICAgICAg
ICAKIGZ1bmN0aW9uIGxvZyh0ZXh0KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9j
aGFuZ2UtZnJhbWUtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9jaGFuZ2UtZnJhbWUtZm9jdXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvY2hhbmdlLWZyYW1lLWZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw4ICsxNTMsOCBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNldEZyYW1lSGFuZGxlcigi
Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jaGFuZ2Utb3ZlcmZsb3ctb24tb3Zl
cmZsb3ctY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
Y2hhbmdlLW92ZXJmbG93LW9uLW92ZXJmbG93LWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jaGFuZ2Utb3ZlcmZsb3ctb24tb3ZlcmZsb3ct
Y2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiAgICAgPGRpdiBpZD0i
dGFyZ2V0IiBzdHlsZT0iaGVpZ2h0OiA3NSU7IGJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2
PgogPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICB3aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24gKCkgewpAQCAtMjQsMTUgKzI0LDE1IEBACiAgICAgZnVuY3Rpb24gcGFzcygpCiAgICAg
ewogICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZmFp
bCgpCiAgICAgewogICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUwiOwotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biB0b2dnbGVPdmVyZmxvdygpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jaGVjay1k
ZWZvY3VzLWV2ZW50LW9yZGVyLXdoZW4tdHJpZ2dlcmVkLWJ5LW1vdXNlLWNsaWNrLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2hlY2stZGVmb2N1cy1ldmVudC1v
cmRlci13aGVuLXRyaWdnZXJlZC1ieS1tb3VzZS1jbGljay5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jaGVjay1kZWZvY3VzLWV2ZW50LW9yZGVyLXdo
ZW4tdHJpZ2dlcmVkLWJ5LW1vdXNlLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCAr
Myw4IEBACiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVjb3JkLWV2ZW50cy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jaGVjay1kZWZvY3VzLWV2ZW50LW9yZGVyLXdo
ZW4tdHJpZ2dlcmVkLWJ5LXRhYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2NoZWNrLWRlZm9jdXMtZXZlbnQtb3JkZXItd2hlbi10cmlnZ2VyZWQtYnktdGFiLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NoZWNrLWRl
Zm9jdXMtZXZlbnQtb3JkZXItd2hlbi10cmlnZ2VyZWQtYnktdGFiLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOCArMyw4IEBACiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVjb3JkLWV2ZW50cy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHdpbmRvdy5vbmxvYWQgPSBy
dW5UZXN0OwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGVhci1kcmFnLXN0YXRl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xlYXItZHJhZy1z
dGF0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9j
bGVhci1kcmFnLXN0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgZnVu
Y3Rpb24gZHJhZ1NwYW4oKSB7CiB9CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICAgZHJhZ1NwYW4oKTsKICAgICB2YXIgZmlyc3RMb2cgPSBzZXRMb2coJycpOwog
ICAgIGRyYWdTcGFuKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGVhci1lZGl0
LWRyYWctc3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9j
bGVhci1lZGl0LWRyYWctc3RhdGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvY2xlYXItZWRpdC1kcmFnLXN0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAgZnVuY3Rpb24gZHJhZ1NwYW4oKSB7CiB9CiAKIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZ2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxs
Q2hpbGRyZW4oc3Bhbik7CiAgICAgZHJhZ1NwYW4oKTsKICAgICB2YXIgZmlyc3RMb2cgPSBzZXRM
b2coJycpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xpY2stY291bnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGljay1jb3VudC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGljay1jb3VudC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBAIGZ1bmN0aW9uIG1vdXNlRG91Ymxl
Q2xpY2soZXZ0KQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgdmFyIHRlc3RFbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdERpdiIpOwpAQCAtNTAsNyArNTAsNyBAQCBmdW5jdGlvbiB0ZXN0Q2xpY2so
KQogICAgICAgICAvLyBTa2lwIGZvcndhcmQgMSBzZWNvbmQgc28gdGhhdCB0aGUgY2xpY2tzIGFy
ZSBjb3VudGVkIGFzIGRpc3RpbmN0LgogICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgx
MDAwKTsKICAgICB9Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2NsaWNrLWZvY3VzLWFuY2hvci5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NsaWNrLWZvY3VzLWFuY2hvci5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGljay1mb2N1cy1hbmNob3IuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBAIGZ1bmN0aW9uIGhhbmRsZUZvY3Vz
KGUpCiAgICAgbG9nKGVsLmlkICsgJyByZWNlaXZlZCBmb2N1cyAoJyArIGVsLnRpdGxlICsgJykn
KTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KQogewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodmFyIGkgPSAxOyBp
IDw9IDY7IGkrKykgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xpY2stZm9jdXMt
Y29udHJvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NsaWNr
LWZvY3VzLWNvbnRyb2wuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvY2xpY2stZm9jdXMtY29udHJvbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDcg
KzgsNyBAQAogICAgICAgICB2YXIgbnVtYmVyT2ZGb2N1c2VkRWxlbWVudHMgPSAwOwogICAgICAg
ICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkg
PD0gNTsgaSsrKSB7CkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgICAgICBudW1iZXJPZkZvY3Vz
ZWRFbGVtZW50cyA9IG51bWJlck9mRm9jdXNlZEVsZW1lbnRzICsgMTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
fQogCiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGllbnRY
WS1pbi16b29tLWFuZC1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9jbGllbnRYWS1pbi16b29tLWFuZC1zY3JvbGwuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xpZW50WFktaW4tem9vbS1hbmQtc2Nyb2xs
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAKICAgICAgICAgd2luZG93LnNj
cm9sbFRvKHgsIHkpOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICAvLyBEZWZhdWx0LgpAQCAt
MTE3LDExICsxMTcsMTEgQEAKICAgICBzY3JvbGxQYWdlKDAsIDApOwogICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJjbGljayIsIHpvb21lZEFuZFNjcm9sbGVkLCBmYWxzZSk7CiAKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CiAgICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3RBcmVhJyk7CiAgICAgICAgIGFyZWEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhcmVhKTsKIAot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvY2xpcGJvYXJkLWRhdGFUcmFuc2Zlckl0ZW1MaXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xpcGJvYXJkLWRhdGFUcmFuc2Zlckl0ZW1M
aXN0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ns
aXBib2FyZC1kYXRhVHJhbnNmZXJJdGVtTGlzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIs
MjEgKzEzMiwyMSBAQCB2YXIgdGVzdENhc2VzID0gWwogXTsKIGZ1bmN0aW9uIHJ1bk5leHQoKQog
ewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93
LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKICAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2Fz
ZXMuc2hpZnQoKTsKICAgICBpZiAodGVzdENhc2UpCiAgICAgICAgIHJ1blRlc3QuYXBwbHkobnVs
bCwgdGVzdENhc2UpOwogICAgIGVsc2UKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogd2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIHJ1bk5leHQoKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnRlbnQtY2hhbmdlZC1kdXJpbmctZHJvcC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnRlbnQtY2hhbmdlZC1kdXJp
bmctZHJvcC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9jb250ZW50LWNoYW5nZWQtZHVyaW5nLWRyb3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAs
OCArMTAsOCBAQAogCiAgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50VG9EcmFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVs
ZW1lbnRUb0RyYWciKTsKICAgICAgICAgICAgICAgICAgICAgeDEgPSBlbGVtZW50VG9EcmFnLm9m
ZnNldExlZnQgKyBlbGVtZW50VG9EcmFnLm9mZnNldFdpZHRoIC8gMjsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2NvbnRleHQtbm8tZGVzZWxlY3QuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jb250ZXh0LW5vLWRlc2VsZWN0Lmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnRleHQtbm8tZGVzZWxlY3Qu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQCB2YXIgaW5wdXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGV4CiBpbnB1dC5zZWxlY3Rpb25TdGFydCA9IDU7CiBpbnB1dC5z
ZWxlY3Rpb25FbmQgPSAxNTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdmFyIHgsIHk7CiAgICAgeCA9IGlucHV0Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdp
ZHRoIC8gMjsKICAgICB5ID0gaW5wdXQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGlucHV0Lm9m
ZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAvIDI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9jb250ZXh0LW9ubW91c2Vkb3duLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvY29udGV4dC1vbm1vdXNlZG93bi1ldmVudC5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jb250ZXh0LW9ubW91c2Vk
b3duLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMTQgQEAKIAogCiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CiAgICAgIHZhciBib3gsIHgsIHk7CiAgICAgIGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJib3giKTsKICAgICAgeCA9IGJveC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCAr
IGJveC5vZmZzZXRMZWZ0ICsgYm94Lm9mZnNldFdpZHRoIC8gMjsKICAgICAgeSA9IGJveC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgYm94Lm9mZnNldFRvcCArIGJveC5vZmZzZXRIZWlnaHQgLyAy
OwogICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKICAgICAgZXZlbnRTZW5kZXIu
Y29udGV4dENsaWNrKCk7Ci0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIDwvc2NyaXB0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnRleHRt
ZW51LXNjcm9sbGVkLXBhZ2Utd2l0aC1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2NvbnRleHRtZW51LXNjcm9sbGVkLXBhZ2Utd2l0aC1mcmFtZS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jb250ZXh0bWVu
dS1zY3JvbGxlZC1wYWdlLXdpdGgtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCAr
MTIsOCBAQCBmcmFtZXMuPC9wPgogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9n
JykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwogICAg
IH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdOwogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9jb250aW51b3VzLXBsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Nyb2xs
aW5nLWRpdi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnRp
bnVvdXMtcGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnRpbnVvdXMtcGxhdGZvcm0t
d2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCAr
Nyw4IEBACiAgICAgICAgICAgICB2YXIgZXZlbnQ7CiAgICAgICAgICAgICB2YXIgZGl2OwogCi0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpc3Bh
dGNoV2hlZWxFdmVudCgpCkBAIC0zMSw4ICszMSw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoImRpdi5zY3JvbGxUb3AiLCAid2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wIik7CiAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImRpdi5zY3JvbGxMZWZ0IiwgIndpbmRvdy5leHBlY3RlZFNjcm9s
bExlZnQiKTsKIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jcmFzaC1vbi1tdXRhdGUtZHVyaW5nLWRyb3AuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jcmFzaC1vbi1tdXRhdGUtZHVy
aW5nLWRyb3AuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvY3Jhc2gtb24tbXV0YXRlLWR1cmluZy1kcm9wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcs
MTAgKzcsMTAgQEAgZnVuY3Rpb24gZm9vKCkgewogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewot
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIpCiAgICAgICByZXR1cm47CiAKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIGZ1bmN0aW9u
KCkgeyBmb28oKSB9LCB0cnVlKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY3Vz
dG9tLWV2ZW50LXVuaW5pdGlhbGl6ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9jdXN0b20tZXZlbnQtdW5pbml0aWFsaXplZC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jdXN0b20tZXZlbnQtdW5pbml0aWFsaXpl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHA+VGhpcyB0ZXN0IHBhc3Nl
cyBpZiBpdCBkb2VzIG5vdCBjcmFzaC4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Mzg4NSk8L3A+CiAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICBTdHJpbmcoZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50IikuZGV0
YWlsKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY3VzdG9tLWV2
ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY3VzdG9tLWV2
ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2N1
c3RvbS1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
bG9nKG0pCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kYmxjbGljay1hZGRFdmVudExp
c3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGJsY2xp
Y2stYWRkRXZlbnRMaXN0ZW5lci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kYmxjbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDggQEAKIAkJCXZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNsaWNrX2FyZWEiKTsKICAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcignZGJs
Y2xpY2snLCBoYW5kbGVyLCBmYWxzZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCw1MCk7CiAgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGVmYXVsdHByZXZlbnRlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RlZmF1bHRwcmV2ZW50
ZWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGVm
YXVsdHByZXZlbnRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IG9ubG9hZD0iZG9jdW1lbnQuZm9ybXNbMF0ucmVzZXQoKSI+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kZWxheWVkLXN0eWxlLW11dGF0aW9uLWV2ZW50LWNyYXNo
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGVsYXllZC1zdHls
ZS1tdXRhdGlvbi1ldmVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kZWxheWVkLXN0eWxlLW11dGF0aW9uLWV2ZW50LWNyYXNoLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxkaXYgaWQ9ImZvbyI+PHAg
aWQ9ImJhciI+RkFJTFVSRTwvcD48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHZhciBi
YXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmFyIik7CiB2YXIgZm9vID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImZvbyIpOwogYmFyLnN0eWxlLmNvbG9yID0gImdyZWVuIjsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rlc3Ryb3llZC1hdG9taWMtc3RyaW5nLmh0bWwtZGlz
YWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGVzdHJveWVkLWF0
b21pYy1zdHJpbmcuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZGVzdHJveWVkLWF0b21pYy1zdHJpbmcuaHRtbC1kaXNhYmxlZAkod29y
a2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJy
PiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgbGlzdGVuZXJDYWxsQ291bnQgPSAwOwogdmFy
IGV4cGVjdGVkTGlzdGVuZXJDYWxsQ291bnQgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvZGV2aWNlLW9yaWVudGF0aW9uLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvZGV2aWNlLW9yaWVudGF0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RldmljZS1vcmllbnRhdGlvbi1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBAIGlmICghd2luZG93Lmdj
KSB7DQogDQogZnVuY3Rpb24gZG9uZSgpIHsNCiAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwg
PSAnUEFTUzogaGFuZGxlciBub3Qgc3VwcG9ydGVkIG9yIGRpZCBub3QgY3Jhc2ggd2hlbiByZW1v
dmluZyBXaW5kb3dzIGR1cmluZyBvbmRldmljZW9yaWVudGF0aW9uIGV2ZW50JzsNCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7DQogfQ0KIA0KIGZ1bmN0aW9uIHJlbW92ZSgpIHsNCkBA
IC0yNiw5ICsyNiw5IEBAIGZ1bmN0aW9uIHJlbW92ZSgpIHsNCiB9DQogDQogZnVuY3Rpb24gY3Jh
c2goKSB7DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
DQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOw0KICAgICB9DQogDQogICAgIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJyk7DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGlzcGF0
Y2gtZXZlbnQtYmVpbmctZGlzcGF0Y2hlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2Rpc3BhdGNoLWV2ZW50LWJlaW5nLWRpc3BhdGNoZWQuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGlzcGF0Y2gtZXZlbnQtYmVp
bmctZGlzcGF0Y2hlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBAIGJlaW5n
IGRpc3BhdGNoZWQgaXMgYWxyZWFkeSBiZWluZyBkaXNwYXQKIDxwcmUgaWQ9ImNvbnNvbGUiPgog
PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGpzVGVzdElzQXN5bmMgPSB0cnVlOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kaXNwYXRjaC1ldmVudC1uby1kb2N1bWVu
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rpc3BhdGNoLWV2
ZW50LW5vLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2Rpc3BhdGNoLWV2ZW50LW5vLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQsOCArNCw4IEBAIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KG1lc3NhZ2UpIHsKIH0KIAogZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgfQog
CiAgICAgdmFyIGRvY3R5cGUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVu
dFR5cGUoCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kaXNwYXRjaC1tZXNzYWdlLXN0
cmluZy1kYXRhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGlz
cGF0Y2gtbWVzc2FnZS1zdHJpbmctZGF0YS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kaXNwYXRjaC1tZXNzYWdlLXN0cmluZy1kYXRhLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAgZnVuY3Rpb24gSGFuZGxlTWVzc2FnZShtZXNz
YWdlX2V2ZW50KSB7CiAgICAgICAgIGxvZygiRXhwZWN0ZWQgJyIgKyBudW0gKyAiJywgR290OiAn
IiArIG1lc3NhZ2VfZXZlbnQuZGF0YSArICInIik7CiAgICAgfQogICAgIGlmIChudW0gPT0gZW5k
TnVtKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAr
K251bTsKQEAgLTUzLDkgKzUzLDkgQEAgZnVuY3Rpb24gQWRkTGlzdGVuZXIoKSB7CiB9CiBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgQWRkTGlzdGVuZXIsIGZh
bHNlKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGxvZygiRE9O
RSIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kaXNwYXRjaC10by1oYW5kbGUt
ZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kaXNwYXRj
aC10by1oYW5kbGUtZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZGlzcGF0Y2gtdG8taGFuZGxlLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTgsOCArOCw4IEBAIGhhbmRsZXIuaGFuZGxlRXZlbnQgPSBmdW5jdGlvbiAoZXZlbnQpIHsK
IH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImV2ZW50IiwgaGFuZGxlciwgZmFsc2UpOwog
ICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZGlzcGF0Y2hFdmVudC1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rpc3BhdGNoRXZlbnQtY3Jhc2guaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGlzcGF0Y2hFdmVudC1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHA+VGhpcyBpcyBhIHRl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MyAoTlVM
TCBwb2ludGVyIGNyYXNoIGluIGRpc3BhdGNoRXZlbnQobnVsbCkpLiAgSXQgcGFzc2VzIGlmIGl0
IGRvZXMgbm90IGNyYXNoLjwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYWxzbyB0ZXN0IFdvcmtlckNvbnRleHQg
YW5kIE1lc3NhZ2VQb3J0LgogICAgIHZhciBldmVudFRhcmdldHMgPSBbbmV3IFhNTEh0dHBSZXF1
ZXN0LCAobmV3IFhNTEh0dHBSZXF1ZXN0KS51cGxvYWQsIHdpbmRvdy5hcHBsaWNhdGlvbkNhY2hl
LCBuZXcgV29ya2VyKCJhYm91dDpibGFuayIpLCBkb2N1bWVudC5ib2R5XTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2Rpdi1mb2N1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2Rpdi1mb2N1cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kaXYtZm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4
ICs3LDggQEAgc2hvdyB1cCBvbmNlIGVhY2ggYmVsb3cuCiA8L2Rpdj4KIAogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2coc3RyKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZG9jdW1lbnQtZWxlbWVudEZyb21Qb2ludC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RvY3VtZW50LWVsZW1lbnRGcm9tUG9pbnQuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZG9jdW1lbnQtZWxlbWVu
dEZyb21Qb2ludC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdGggeyBo
ZWlnaHQ6IDMwcHg7IH0KIDxkaXYgaWQ9InN1YnBpeGVsLXRlc3QiPjwvZGl2PgogPHNjcmlwdD4K
IC8vIERlYnVnIG1vZGUuCi1pZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYg
KCF3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIGRvY3VtZW50LmJvZHkub25tb3VzZW1vdmUgPSBm
dW5jdGlvbihlKSB7CiAgICAgICAgIHZhciByZXN1bHRCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbW91c2UtcG9zaXRpb24nKTsKICAgICAgICAgdmFyIG9mZnNldHMgPSAnZWxlbWVudCBp
ZDogJyArIGUudGFyZ2V0LmlkICsgJzxicj4gY2xpZW50WDogJyArIGUuY2xpZW50WCArICcgY2xp
ZW50WTogJyArIGUuY2xpZW50WSArICc8YnI+JzsKQEAgLTI0NSw5ICsyNDUsOSBAQCBmdW5jdGlv
biBjbGlja2VkKGV2ZW50KSB7CiAgICAgbG9nKHJlc3VsdCk7CiB9CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiAv
LyBTdGFydCB0aGUgdGVzdC4KQEAgLTI3NSw4ICsyNzUsOCBAQCB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIGZ1bmN0aW9uCiAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KDM4OCwgODgs
ICdmaXhlZCcsIDE4OCwgMzgpOwogCiAgICAgICAgICAgICAvLyBFbmQgYXN5bmNocm9ub3VzIHRl
c3QuCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAgICAgICAgIAogICAgICAgICB9
LCAwKTsKICAgICB9LCAwKTsKIH0sIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2RvbS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC10ZXh0YXJlYS1jcmFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RvbS1jaGFyYWN0ZXItZGF0YS1tb2Rp
ZmllZC10ZXh0YXJlYS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kb20tY2hhcmFjdGVyLWRhdGEtbW9kaWZpZWQtdGV4dGFyZWEtY3Jhc2gu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIC8vIElmIHdlIGFkZCBhIG5ldy1s
aW5lIGF0IEVPRiBvciBhZGQgb3RoZXIgdGFncyBpbiA8Ym9keT4gcGFydCwgdGhlIGNyYXNoIHdp
bGwgYmUgdW5saWtlbHkgdG8gaGFwcGVuLgogLy8gRm9yIGV4YW1wbGUsIGlmIHdlIG1vdmUgdGhp
cyBjb21tZW50IHRvIHRoZSBhY3R1YWwgSFRNTCBvciB0cnkgdG8gbG9hZCAnanMtdGVzdC1wcmUu
anMnLCB0aGUgY3Jhc2ggd29uJ3QgaGFwcGVuLgogLy8gTXV0YXRpb24gZXZlbnRzIHNob3VsZCBu
b3QgYmUgZGlzcGF0Y2hlZCBvbiB0aGlzIGNhc2UuIFRoaXMgYnVnIGlzIGJlaW5nIHRyYWNrZWQg
Ynkgd2Via2l0IGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcz
NzIKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01DaGFyYWN0
ZXJEYXRhTW9kaWZpZWQiLCBmdW5jdGlvbigpIHsKICAgICBkb2N1bWVudC5kZXNpZ25Nb2RlID0g
Im9uIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RvbWFjdGl2YXRlLXNldHMtdW5k
ZXJseWluZy1jbGljay1ldmVudC1hcy1oYW5kbGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvZG9tYWN0aXZhdGUtc2V0cy11bmRlcmx5aW5nLWNsaWNrLWV2ZW50
LWFzLWhhbmRsZWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvZG9tYWN0aXZhdGUtc2V0cy11bmRlcmx5aW5nLWNsaWNrLWV2ZW50LWFzLWhhbmRsZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQCBlbGVtZW50LiBUaGUgYW5jaG9y
IHNob3VsZG4ndCBiZSBhY3RpdmF0CiA8L3ByZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJwcmUiKS5p
bm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7IH0KIGZ1bmN0aW9uIGZvcm1TdWJtaXR0ZWQoKSB7
IGxvZygiZm9ybSBzdWJtaXR0ZWRcbiIpOyB9CkBAIC02Nyw2ICs2Nyw2IEBAIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKICAgICBsb2coIlxuVGhlIGRldGFpbHMgZWxlbWVudCB3YXMgIiArIChk
ZXRhaWxzLm9wZW4gPyAiIiA6ICJub3QgIikgKyAib3BlbmVkIik7CiB9CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCitpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiYSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RvbW5vZGVpbnNlcnRlZGludG9kb2N1bWVu
dC1kaXNwYXRjaGVkLXBvc3QtcmVuZGVyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZG9tbm9kZWluc2VydGVkaW50b2RvY3VtZW50LWRpc3BhdGNoZWQtcG9z
dC1yZW5kZXJpbmcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvZG9tbm9kZWluc2VydGVkaW50b2RvY3VtZW50LWRpc3BhdGNoZWQtcG9zdC1yZW5kZXJp
bmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogICA8cCBpZD0ib3JpZ2lu
YWwtbWVzc2FnZSI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KICAgPHNjcmlwdD4KIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RvbnQtbG9vc2UtbGFzdC1ldmVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RvbnQtbG9vc2UtbGFz
dC1ldmVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9kb250LWxvb3NlLWxhc3QtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjks
OCBAQAogICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
ICAgICB2YXIgc3RhcnRYID0gc3RhcnRFbGVtLm9mZnNldExlZnQgKyAxMDsKICAgICAgICAgdmFy
IHN0YXJ0WSA9IHN0YXJ0RWxlbS5vZmZzZXRUb3AgKyBzdGFydEVsZW0ub2Zmc2V0SGVpZ2h0IC8g
MjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZGF0YVRyYW5z
ZmVyLXR5cGVzLW5vY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9kcmFnLWFuZC1kcm9wLWRhdGFUcmFuc2Zlci10eXBlcy1ub2NyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZGF0
YVRyYW5zZmVyLXR5cGVzLW5vY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDggKzEw
MCw4IEBACiAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHZhciBzdGFydFggPSBkcmFnTWUub2Zmc2V0
TGVmdCArIDEwOwogICAgICAgICB2YXIgc3RhcnRZID0gZHJhZ01lLm9mZnNldFRvcCArIGRyYWdN
ZS5vZmZzZXRIZWlnaHQgLyAyOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1h
bmQtZHJvcC1maXJlLWRyYWctZHJhZ292ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWZpcmUtZHJhZy1kcmFnb3Zlci5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWZp
cmUtZHJhZy1kcmFnb3Zlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOCArMTIxLDggQEAK
ICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgICAgICAgICAKICAgICAgICAgdmFyIHN0YXJ0WCA9IGRyYWdNZS5vZmZzZXRMZWZ0ICsg
MTA7CiAgICAgICAgIHZhciBzdGFydFkgPSBkcmFnTWUub2Zmc2V0VG9wICsgZHJhZ01lLm9mZnNl
dEhlaWdodCAvIDI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9w
LXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc3ViZnJhbWUtZGF0YVRyYW5zZmVyLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc3Vi
ZnJhbWUtZGF0YVRyYW5zZmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDEyICsxMSwxMiBA
QCBmdW5jdGlvbiBvbkRyb3AoZXZ0KSB7CiAJCQlkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICdG
QUlMJzsKIAl9CiAJZXZ0LnByZXZlbnREZWZhdWx0KCk7Ci0Jd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKwl3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0Jd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLQl3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCXdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl3aW5kb3cudGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAJdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhZycp
OwogCXZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3AnKTsKIAlldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhkLm9mZnNldExlZnQgKyBkLm9mZnNldFdpZHRoIC8gMiwgZC5vZmZzZXRU
b3AgKyBkLm9mZnNldEhlaWdodCAvIDIpOwpAQCAtMzYsNyArMzYsNyBAQCB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CiAJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgZnVu
Y3Rpb24oeCkgeyB4LnByZXZlbnREZWZhdWx0KCkgfSwgdHJ1ZSk7CiAJd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGZ1bmN0aW9uKHgpIHsgd2luZG93LmZvY3VzKCkgfSwgdHJ1
ZSk7CiAKLQlpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorCWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKIAkJcnVuVGVzdCgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw4ICsxNTIsOCBAQAogICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIAogICAgICAgICB2YXIgc3RhcnRYID0gZHJh
Z01lLm9mZnNldExlZnQgKyAxMDsKICAgICAgICAgdmFyIHN0YXJ0WSA9IGRyYWdNZS5vZmZzZXRU
b3AgKyBkcmFnTWUub2Zmc2V0SGVpZ2h0IC8gMjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2RyYWctY3VzdG9tRGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2RyYWctY3VzdG9tRGF0YS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWN1c3RvbURhdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MzksMTUgKzM5LDE1IEBAIGZ1bmN0aW9uIGRyb3AoZXZlbnQpIHsKICAgICAgICAgfHwgZXZlbnQu
ZGF0YVRyYW5zZmVyLmdldERhdGEoJ2N1c3RvbS1kYXRhJykgIT0gJ2hlbGxvIHdvcmxkJykKICAg
ICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICBsb2coZmFpbGVkID8gJ0ZBSUxVUkUnIDogJ1NVQ0NF
U1MnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAKICAgICB2YXIgZHJhZ0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZHJhZycpOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGRyYWdFbGVtZW50
Lm9mZnNldExlZnQgKyBkcmFnRWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRhdGFUcmFuc2Zlckl0ZW1MaXN0LWZpbGUtaGFuZGxpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRhdGFUcmFu
c2Zlckl0ZW1MaXN0LWZpbGUtaGFuZGxpbmcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kYXRhVHJhbnNmZXJJdGVtTGlzdC1maWxlLWhhbmRs
aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgZnVuY3Rpb24gZHJvcChl
dmVudCkKICAgICBhc3NlcnRFcSgxLCBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoKTsK
ICAgICBhc3NlcnRFcSgnZmlsZScsIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtc1swXS5raW5kKTsK
ICAgICBhc3NlcnRFcSgndGV4dC9wbGFpbicsIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtc1swXS50
eXBlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQpAQCAtNzYsMTAgKzc2
LDEwIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQog
ewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93
LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogCiAgICAgcnVuVGVzdCgpOwogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZHJhZy1kYXRhVHJhbnNmZXJJdGVtTGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2RyYWctZGF0YVRyYW5zZmVySXRlbUxpc3QuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kYXRhVHJhbnNmZXJJdGVtTGlz
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsMjEgKzE2MSwyMSBAQCB2YXIgdGVzdENhc2Vz
ID0gWwogXTsKIGZ1bmN0aW9uIHJ1bk5leHQoKQogewotICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2FzZXMuc2hpZnQoKTsKICAgICBpZiAodGVzdENh
c2UpCiAgICAgICAgIHJ1blRlc3QuYXBwbHkobnVsbCwgdGVzdENhc2UpOwogICAgIGVsc2UKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKQogICAgICAgICByZXR1cm47Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IAogICAgIHJ1bk5leHQoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWct
ZmlsZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ry
YWctZmlsZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9kcmFnLWZpbGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDgg
QEAKICAgICB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgIGZ1bmN0aW9uIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCiAg
ICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1pbWFnZS1maWxlbmFtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctaW1hZ2UtZmls
ZW5hbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZHJhZy1pbWFnZS1maWxlbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAog
PGhlYWQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHJldHVybjsKICAgICAKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gZHJhZ0VudGVy
T3JPdmVyKGV2ZW50KSB7CiBmdW5jdGlvbiBkcm9wKGV2ZW50KSB7CiAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKICAgICBldmVudFNlbmRlci5kdW1wRmlsZW5hbWVCZWluZ0RyYWdnZWQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDxzdHlsZT4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2RyYWctaW4tZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZy1pbi1mcmFtZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1pbi1mcmFtZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOCw5ICs4LDkgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVz
dCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiAKICAgICAgICAgLy8gRmluZCB0aGUgZWxlbWVudCB0byBkcmFnCiAgICAgICAg
IGVsZW1lbnRUb0RyYWcgPSBmcmFtZXNbMF0uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1l
bnRUb0RyYWciKTsKQEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAg
ICAgICI8cD5UaGVzZSByZXN1bHRzIGFyZSBqdXN0IFwic2Vuc2libGVcIiBhdCB0aGUgbW9tZW50
LCBtZWFuaW5nIHRoYXQgIiArCiAgICAgICAgICAgICAiYWxsIHRoZSBldmVudHMgZmlyZSBvbiB0
aGUgcmlnaHQgZWxlbWVudHMsIG5vdGhpbmcgbW9yZS4gVGhlIG9yZGVyIGluIHBhcnRpY3VsYXIg
IisKICAgICAgICAgICAgICJjYW4gcmlnaHRmdWxseSBjaGFuZ2UuPC9wPiIgKwotICAgICAgICAg
ICAgIjxzY3IiICsgImlwdD5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7PC9zY3Ii
ICsgImlwdD4iICsgCisgICAgICAgICAgICAiPHNjciIgKyAiaXB0PnRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOzwvc2NyIiArICJpcHQ+IiArIAogICAgICAgICAgICAgIjwvYm9keT4iKTsKICAgICB9
CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWxpbmsuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWxpbmsuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1saW5rLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAgZnVuY3Rpb24gZHJhZ0VsZW1lbnQoc3JjRWxlbWVu
dCwgZGVzdEVsZQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSAiUEFTUyI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgZWRpdGFibGVEaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFibGVEaXYnKTsKIGVkaXRhYmxlRGl2LmZvY3VzKCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLXBhcmVudC1ub2RlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1wYXJlbnQtbm9kZS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLXBhcmVu
dC1ub2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDcgKzE3LDcgQEAgd2luZG93Lm9uZHJh
Z3N0YXJ0ID0gZnVuY3Rpb24oKSB7CiB9CiAKIHdpbmRvdy5vbmRyYWdlbmQgPSBmdW5jdGlvbigp
IHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZHJhZ1N0YXJ0ZWQpIHsK
QEAgLTI2LDcgKzI2LDcgQEAgd2luZG93Lm9uZHJhZ2VuZCA9IGZ1bmN0aW9uKCkgewogfQogCiBm
dW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
d2luZG93LmV2ZW50U2VuZGVyKQpAQCAtMzQsOCArMzQsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewog
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5pbm5lckhUTUwgPSAnVGVz
dCBmYWlsZWQuJzsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICB2YXIg
dGVzdEJvb2ttYXJrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RCb29rbWFyaycpOwog
ICAgIHZhciB4ID0gdGVzdEJvb2ttYXJrLm9mZnNldExlZnQgKyB0ZXN0Qm9va21hcmsub2Zmc2V0
V2lkdGggLyAyOwpAQCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHggKyAxMDAsIHkgKyAxMDApOwogICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kcmFnLXNlbGVjdHMtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLXNlbGVjdHMtaW1hZ2UuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1zZWxlY3RzLWltYWdlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDkgKzE5LDkgQEAKICAgICB9CiAgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGxvZygnU3RhcnRpbmcgdGVzdC4u
LicpOwogICAgICAgICBsb2cod2luZG93LmdldFNlbGVjdGlvbigpLnJhbmdlQ291bnQgKyAnIHJh
bmdlKHMpIHNlbGVjdGVkJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLXRl
eHQtd2l0aC1jbGVhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2RyYWctdGV4dC13aXRoLWNsZWFyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2RyYWctdGV4dC13aXRoLWNsZWFyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYsOCArNiw4IEBACiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0T2JqZWN0IiB2YWx1
ZT0idGVzdCI+CiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im91dHB1dE9iamVjdCI+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dE9iamVjdCIp
Lm9uZHJhZ2VudGVyID0gZnVuY3Rpb24oKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImlucHV0T2JqZWN0IikudmFsdWUgPSAiIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2RyYWctdG8tbmF2aWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9kcmFnLXRvLW5hdmlnYXRlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2RyYWctdG8tbmF2aWdhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDcgQEAKIDxkaXY+RkFJTDwvZGl2PgogPHNjcmlwdD4KIGZ1bmN0aW9uIGRvVGVzdCgp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWyJy
ZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1uYXZpZ2F0ZS5odG1sIl0pOwogICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiBkb1Rlc3Qo
KSB7CiB9CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAg
ICAgLy8gVGhlIGxvYWQgc2VlbXMgdG8gZmFpbCBpZiB3ZSB0cnkgdG8ga2ljayBvZiBhCiAgICAg
Ly8gbmV3IGxvYWQgYmVmb3JlIHRoaXMgb25lIGlzIGZpbmlzaGVkLiAgU28gd2Ugd2FpdC4KICAg
ICB3aW5kb3cub25sb2FkID0gZG9UZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9kcmFnZ2luZy1tb3VzZS1tb3Zlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2RyYWdnaW5nLW1vdXNlLW1vdmVzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWdnaW5nLW1vdXNlLW1vdmVzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTExLDEyICsxMSwxMiBAQCBmdW5jdGlvbiBsb2cobXNnKQogCiBmdW5jdGlv
biB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHRlc3REcmFnQW5kTW92ZSgpOwogICAgIH0gZWxzZQot
ICAgICAgICBsb2coImxheW91dFRlc3RDb250cm9sbGVyIGlzIG5vdCBhdmFpbGFibGUiKTsKKyAg
ICAgICAgbG9nKCJ0ZXN0UnVubmVyIGlzIG5vdCBhdmFpbGFibGUiKTsKIAogfQogCkBAIC0zOCw3
ICszOCw3IEBAIGZ1bmN0aW9uIHRlc3REcmFnQW5kTW92ZSgpCiAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iikuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKICAgICBsb2coIlBBU1MiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgfQogICAgICAgICA8
L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcm9w
LWhhbmRsZXItc2hvdWxkLW5vdC1zdG9wLW5hdmlnYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJvcC1oYW5kbGVyLXNob3VsZC1ub3Qtc3RvcC1uYXZpZ2F0
ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcm9w
LWhhbmRsZXItc2hvdWxkLW5vdC1zdG9wLW5hdmlnYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE0LDcgKzE0LDcgQEAgZnVuY3Rpb24gbG9nKHRleHQpCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignYmVmb3JldW5sb2FkJywgZnVuY3Rpb24gKCkKIHsKICAgICBsb2coJ1BBU1MnKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9KTsKIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywg
ZnVuY3Rpb24gKGV2ZW50KQogewpAQCAtMzAsMTAgKzMwLDEwIEBAIGRvY3VtZW50LmJvZHkuYWRk
RXZlbnRMaXN0ZW5lcignZHJvcCcsIGYKIH0pOwogKGZ1bmN0aW9uICgpCiB7Ci0gICAgaWYgKCF3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikK
ICAgICAgICAgcmV0dXJuOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgbG9n
KCdTdGFydGluZyB0ZXN0Jyk7CiAgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKFsn
RFJURmFrZUZpbGUnXSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZG9jdW1lbnQuYm9k
eS5vZmZzZXRMZWZ0ICsgMTAsIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wICsgMTApOwpAQCAtNDIs
NyArNDIsNyBAQCBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBmCiAgICAg
ewogICAgICAgICAvLyBEZWFkbWFuJ3Mgc3dpdGNoIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBm
b3IgdGhlIHRlc3QgdG8gdGltZW91dCB0byBmYWlsLgogICAgICAgICBsb2coJ0ZBSUwnKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKIH0pKCk7CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ryb3Atd2l0aC1maWxlLXBhdGhzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJvcC13aXRoLWZpbGUtcGF0aHMuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJvcC13aXRoLWZp
bGUtcGF0aHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMywxMCBAQAogPHNjcmlwdD4K
IAogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy50
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhG
aWxlcyhbJ3Jlc291cmNlcy9maWxlLWZvci1kcm9wLXdpdGgtZmlsZS1wYXRocy5odG1sJ10pOwog
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9kcm9wem9uZS0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9kcm9wem9uZS0wMDEuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDggKzU3LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgICAgIAogICAgIHZhciBzdGFydFggPSBkcmFnTWUub2Zmc2V0TGVmdCArIDEwOwog
ICAgIHZhciBzdGFydFkgPSBkcmFnTWUub2Zmc2V0VG9wICsgZHJhZ01lLm9mZnNldEhlaWdodCAv
IDI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcm9wem9uZS0wMDIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcm9wem9uZS0wMDIuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJvcHpvbmUtMDAyLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIHZhciBzdGFydFggPSBk
cmFnTWUub2Zmc2V0TGVmdCArIDEwOwogICAgIHZhciBzdGFydFkgPSBkcmFnTWUub2Zmc2V0VG9w
ICsgZHJhZ01lLm9mZnNldEhlaWdodCAvIDI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9kcm9wem9uZS0wMDMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZHJvcHpvbmUtMDAzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDgg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgIAogICAgIHZhciBzdGFydFggPSBkcmFnTWUub2Zmc2V0TGVmdCArIDEwOwogICAgIHZhciBz
dGFydFkgPSBkcmFnTWUub2Zmc2V0VG9wICsgZHJhZ01lLm9mZnNldEhlaWdodCAvIDI7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcm9wem9uZS0wMDQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcm9wem9uZS0wMDQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJvcHpvbmUtMDA0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaWYgKCF3
aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIHZhciBlbmRYID0gZHJvcFRhcmdldC5v
ZmZzZXRMZWZ0ICsgMTA7CiAgICAgdmFyIGVuZFkgPSBkcm9wVGFyZ2V0Lm9mZnNldFRvcCArIGRy
b3BUYXJnZXQub2Zmc2V0SGVpZ2h0IC8gMgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZHJvcHpvbmUtMDA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZHJvcHpvbmUtMDA1Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2Ryb3B6b25lLTAwNS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAg
ICAKICAgICB2YXIgc3RhcnRYID0gZHJhZ01lLm9mZnNldExlZnQgKyAxMDsKICAgICB2YXIgc3Rh
cnRZID0gZHJhZ01lLm9mZnNldFRvcCArIGRyYWdNZS5vZmZzZXRIZWlnaHQgLyAyOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtYXR0cmlidXRlcy1hZnRlci1leGNlcHRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1hdHRyaWJ1
dGVzLWFmdGVyLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9ldmVudC1hdHRyaWJ1dGVzLWFmdGVyLWV4Y2VwdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbG9nKHMpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1maXJlLW9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtZmlyZS1vcmRlci5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1maXJlLW9yZGVyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8ZGl2IGlkPSJkaXYiPjwvZGl2PgogCiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZXZlbnQtZmlyZWQtYWZ0ZXItcmVtb3ZhbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWZpcmVkLWFmdGVyLXJlbW92YWwuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtZmly
ZWQtYWZ0ZXItcmVtb3ZhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogPGRp
diBpZD0iZGl2Ij48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBs
b2cocykKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWxpc3RlbmVyLWh0
bWwtbm9uLWh0bWwtY29uZnVzaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZXZlbnQtbGlzdGVuZXItaHRtbC1ub24taHRtbC1jb25mdXNpb24uaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtbGlzdGVuZXIt
aHRtbC1ub24taHRtbC1jb25mdXNpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDgg
QEAgZmlyc3QgYXMgYSBub24tSFRNTCBhbmQgdGhlbiBhcyBhbiBIVE1MIAogCiA8c2NyaXB0Pgog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbGlzdGVuZXIoZXZlbnQpCiB7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXItbW91c2UtbW92ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1zZW5kZXItbW91c2UtbW92ZWQu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQt
c2VuZGVyLW1vdXNlLW1vdmVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBp
ZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVu
bmVyKQogICAgICAgICByZXR1cm47Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0VG9wOyAgICAvLyBGb3JjZSBsYXlvdXQuIFRoZSBtb3VzZSBpcyBub3QgdHJhY2tlZCBiZWZv
cmUgZmlyc3QgbGF5b3V0LgogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIwLCAyMCk7CiB9
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC10YXJnZXRzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtdGFyZ2V0cy5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC10YXJnZXRzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8SEVBRD4KIDxUSVRMRT5UZXN0IG9u
dW5sb2FkIGFuZCBvbmxvYWQgZXZlbnRzIGZvciBib2R5LXR5cGUgZG9jdW1lbnQ8L1RJVExFPgog
PFNDUklQVD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiByZW1vdmVFbGVtZW50QnlJZCh2aWN0
aW1JRCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LXRyYWNlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtdHJhY2UuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtdHJhY2Uu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogPC9kaXY+CiAKIDxzY3JpcHQ+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobXNnKQog
ICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LXZpZXctdG9TdHJpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC12aWV3LXRv
U3RyaW5nLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2V2ZW50LXZpZXctdG9TdHJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAK
IDxoZWFkPgogICAgIDx0aXRsZT5UZXN0IGZvciBidWcgNDIzMzU1ODwvdGl0bGU+CiA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBjbGlja0JvZHkoZXZlbnQpIHsKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAg
Y2F0Y2goZSkgewogICAgICAgICAgICAgcmVzdWx0c0Rpdi5pbm5lckhUTUwgKz0gICIgRVJST1Ig
KCIgKyBlICsgIikgZ2V0dGluZyB2YWx1ZSE8YnIvPiI7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9maWxlLWlucHV0LWhpZGRlbi1pbi1vbmRy
b3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9maWxlLWlucHV0
LWhpZGRlbi1pbi1vbmRyb3AuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZmlsZS1pbnB1dC1oaWRkZW4taW4tb25kcm9wLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOSArMyw5IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdmFyIGRyb3BUYXJn
ZXQ7CkBAIC0xNyw4ICsxNyw4IEBACiAgICAgICAgICAgICAgICAgZHJvcFRhcmdldC5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHJvcFRhcmdldC52
YWx1ZSIsICJDOlxcZmFrZXBhdGhcXGFiZS5wbmciKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAgICB9LCBmYWxz
ZSk7CiAgICAgICAgICAgICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZvY3VzLWNo
YW5nZS1jcmFzaDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9m
b2N1cy1jaGFuZ2UtY3Jhc2gyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2ZvY3VzLWNoYW5nZS1jcmFzaDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw3ICs4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAKICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5u
ZXJIVE1MID0gIlBBU1NFRCI7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAg
fSwgMCk7CiAgICAgfSwgZmFsc2UpOwogCkBAIC0yMCw5ICsyMCw5IEBAIGZ1bmN0aW9uIHJ1blRl
c3QoKQogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjEiKS5mb2N1cygpOwogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJhIikKICAgICB9CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9mb2N1cy1jaGFuZ2UtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mb2N1cy1jaGFuZ2UtY3Jhc2guaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZm9jdXMtY2hhbmdlLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDkgKzE0LDkgQEAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImEiKS5hZGRFdmVudExpcwogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImEiKS5mb2N1cygpOwotICAgIGlmICghd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigieCIpCiAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigiXHQiKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIp
LmlubmVyVGV4dCA9ICJQQVNTRUQiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZm9j
dXMtcmVtb3ZlLWZvY3Vlc2VkLW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9mb2N1cy1yZW1vdmUtZm9jdWVzZWQtbm9kZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mb2N1cy1yZW1vdmUtZm9jdWVzZWQtbm9k
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIGZ1bmN0aW9uIGZvY3VzaW5M
aXN0ZW5lcihldnQpIHsKIH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2luZG93
LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
IikuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGZvY3VzaW5MaXN0ZW5lciAsIGZhbHNlKTsK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYSIpLmZvY3VzKCk7CiB9CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9mb2N1c2luZ1VubG9hZGVkRnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mb2N1c2luZ1VubG9hZGVkRnJhbWUuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZm9jdXNpbmdVbmxv
YWRlZEZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTEgKzYsMTEgQEAKIAogPHNjcmlw
dD4KIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogICAgIAogICAg
IHZhciBtb2RpZmllcnMgPSBbImFsdEtleSJdOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlx0
IiwgbW9kaWZpZXJzKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZvY3VzaW5vdXQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mb2N1c2lub3V0Lmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZvY3VzaW5v
dXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sIG9uZm9jdXNpbj0i
d3JpdGVQYXNzKCdyZXN1bHQ1JykiIG9uZm9jdXNvdXQ9IndyaXRlUGFzcygncmVzdWx0NicpIj4K
IDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9u
IHdyaXRlUGFzcyhpZCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Zvcm0taWZy
YW1lLXRhcmdldC1iZWZvcmUtbG9hZC1jcmFzaDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9mb3JtLWlmcmFtZS10YXJnZXQtYmVmb3JlLWxvYWQtY3Jhc2gyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Zvcm0taWZy
YW1lLXRhcmdldC1iZWZvcmUtbG9hZC1jcmFzaDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwx
OCArNCwxOCBAQAogICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCiAgICAgICAgIDxm
b3JtIGlkPSJmb3JtMSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdGFyZ2V0PSJ0ZXN0IiBhY3Rpb249
ImFib3V0OmJsYW5rIj48L2Zvcm0+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQ0KICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7DQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOw0KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAg
ICAgICAgICAgICB9DQogICAgICAgICANCiAgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkN
CiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdmb3JtMScpLnN1Ym1pdCgpOw0KICAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7DQogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuaW5uZXJIVE1MID0gJ1BBU1MnOw0KICAgICAgICAgICAgIH0NCiANCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9mb3JtLWlmcmFtZS10YXJnZXQtYmVmb3JlLWxvYWQtY3Jhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mb3JtLWlmcmFtZS10YXJn
ZXQtYmVmb3JlLWxvYWQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZm9ybS1pZnJhbWUtdGFyZ2V0LWJlZm9yZS1sb2FkLWNyYXNoLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTQsMTggKzQsMTggQEAKICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+DQogICAgICAgICA8Zm9ybSBpZD0iZm9ybTEiIHN0eWxlPSJkaXNwbGF5Om5vbmUi
IG1ldGhvZD0icG9zdCIgdGFyZ2V0PSJ0ZXN0IiBhY3Rpb249Imh0dHA6Ly9hbnl0aGluZy5jb20i
PjwvZm9ybT4NCiAgICAgICAgIDxzY3JpcHQ+DQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikNCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQog
ICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7DQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsNCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0KICAgICAgICAgICAgIH0N
CiAgICAgICAgIA0KICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQ0KICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0xJykuc3Vi
bWl0KCk7DQogICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpDQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSAnUEFTUyc7DQogICAgICAgICAgICAgfQ0KIA0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2ZyYW1lLWNsaWNrLWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZnJhbWUtY2xpY2stZm9jdXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZnJhbWUtY2xpY2stZm9jdXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiw4ICs2LDggQEAKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7
Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHdpbmRvdy5vbmZvY3VzID0g
ZnVuY3Rpb24oKSB7IGxvZygnbWFpbiBmcmFtZSBmb2N1c2VkJyk7IH0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2ZyYW1lLWRldGFjaGVkLWluLW1vdXNlZG93bi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZyYW1lLWRldGFjaGVkLWluLW1vdXNlZG93
bi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mcmFt
ZS1kZXRhY2hlZC1pbi1tb3VzZWRvd24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkg
QEAgU2V0dGluZyBkaXNwbGF5Om5vbmUgb24gYW4gaWZyYW1lIGNhdXNlcwogPGEgaWQ9Zm9vIGhy
ZWY9ImphdmFzY3JpcHQ6cGFzcygpIj48L2E+CiA8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwv
aWZyYW1lPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9
CiAKIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilb
MF07CkBAIC01MCw4ICs1MCw4IEBAIGZ1bmN0aW9uIHBhc3MoKQogICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSAiUEFTUyI7CiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZvbyIpLmlubmVySFRNTCA9ICIiOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZnJh
bWUtcHJvZ3JhbW1hdGljLWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZnJhbWUtcHJvZ3JhbW1hdGljLWZvY3VzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZyYW1lLXByb2dyYW1tYXRpYy1mb2N1cy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2lu
ZG93Lm9uZm9jdXMgPSBmdW5jdGlvbigpIHsgbG9nKCdtYWluIGZyYW1lIGZvY3VzZWQnKTsgfQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZnJhbWUtc2Nyb2xsLWZha2UtbW91c2UtbW92
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZyYW1lLXNjcm9s
bC1mYWtlLW1vdXNlLW1vdmUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZnJhbWUtc2Nyb2xsLWZha2UtbW91c2UtbW92ZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMiwxMiArMTIsMTIgQEAKICAgICBmdW5jdGlvbiBmaW5pc2goKQogICAgIHsKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IHBhc3Nl
ZCA/ICJQQVNTIiA6ICJGQUlMIjsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAK
ICAgICAgICAgLy8gV2ViS2l0IHNjaGVkdWxlcyBhIGZha2UgbW91c2UgbW92ZSBldmVudCBhcyBw
YXJ0IG9mIGluc3RhbGxpbmcgdGhlIFdlYlZpZXcgaW4KICAgICAgICAgLy8gYSB3aW5kb3cuIEZv
ciB0aGUgdGVzdCB0byBiZSB2YWxpZCwgaXQgbXVzdCBiZWdpbiBvbmx5IGFmdGVyIHRoYXQgZXZl
bnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZyYW1lLXRhYi1mb2N1cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ZyYW1lLXRhYi1mb2N1cy5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9mcmFtZS10YWIt
Zm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBmdW5jdGlvbiBkaXNw
YXRjaFRhYlByZXNzKGVsZW1lbnQsIHNoaWZ0CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAKICAgICBsb2coJ1RhYmJpbmcgZm9y
d2FyZC4uLlxuJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9nYy1mcmVlemUtd2l0
aC1hdHRyaWJ1dGUtbGlzdGVuZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZ2MtZnJlZXplLXdpdGgtYXR0cmlidXRlLWxpc3RlbmVycy5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9nYy1mcmVlemUtd2l0aC1hdHRy
aWJ1dGUtbGlzdGVuZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAgZnVu
Y3Rpb24gZ2V0U3RyaW5nKGkpCiAgICAgICAgICc8L2Rpdj4nOwogfQogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogdmFyIHN0cmluZyA9ICIiOwogZm9yIChpID0gMDsgaSA8IDEwMDAwOyArK2kpCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pZnJhbWUtb2JqZWN0LW9ubG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lmcmFtZS1vYmplY3Qtb25sb2FkLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lmcmFtZS1vYmpl
Y3Qtb25sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBAIHRocmVlLWxpbmUg
bWVzc2FnZSB0aGF0IGVuZHMgaW4gZmFsc2UuCiA8ZGl2IGlkPSJjb25zb2xlIj4KIDwvZGl2Pgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cocykKIHsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2lmcmFtZS1vbm1vdXNlbW92ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lmcmFtZS1vbm1vdXNlbW92ZS5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pZnJhbWUtb25tb3VzZW1vdmUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAKIHZhciB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKIApAQCAtMTQsOCAr
MTQsOCBAQCBmdW5jdGlvbiBkb25lKCkKICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwogICAgIHRl
c3RQYXNzZWQoInJlY2VpdmVkIG1vdXNlbW92ZSBldmVudC4iKTsKICAgICBkZWJ1ZygnPGJyIC8+
PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29t
cG9zaXRpb24tZXZlbnRzLTAwMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBA
IGZ1bmN0aW9uIGxvZ0V2ZW50KGUpIHsKIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Rlc3QnKTsKIHRlc3QuZm9jdXMoKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgLy8g
QWRkIGV2ZW50IGxpc3RlbmVycyB0byB0aGUgPGlucHV0PiBub2RlLgogICAgIHRlc3QuYWRkRXZl
bnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsIGxvZ0V2ZW50LCBmYWxzZSk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0LWV2ZW50LWFmdGVyLWRpc3BhdGNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5pdC1ldmVudC1hZnRlci1kaXNw
YXRjaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9p
bml0LWV2ZW50LWFmdGVyLWRpc3BhdGNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4
IEBAIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpCiB9CiBmdW5jdGlvbiB0ZXN0KGV2ZW50KQogewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgcHJpbnQoIlJlY2VpdmVkIGFuIGV2
ZW50LCB0eXBlIGlzICIgKyBldmVudC50eXBlKTsKICAgICBwcmludCgiVGFyZ2V0IGlzICIgKyBl
dmVudC50YXJnZXQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5pdC1ldmVudC1u
dWxsLXZpZXcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0
LWV2ZW50LW51bGwtdmlldy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pbml0LWV2ZW50LW51bGwtdmlldy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04
LDggKzgsOCBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlKQogfQogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgZXYgPSBkb2N1bWVudC5j
cmVhdGVFdmVudCgiTW91c2VFdmVudCIpOwogICAgIGV2LmluaXRNb3VzZUV2ZW50KCJjbGljayIs
IHRydWUsIHRydWUsIG51bGwsIDEsIDEsIDEsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAwLCBkb2N1bWVudCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0a2V5
Ym9hcmRldmVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2luaXRrZXlib2FyZGV2ZW50LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2luaXRrZXlib2FyZGV2ZW50LWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTQsOCArNCw4IEBAIG5vdCBjcmFzaC48L3A+CiAKIDxpbnB1dCBpZD0iMSI+
IAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZl
bnQoIktleWJvYXJkRXZlbnQiKTsKIGV2dC5pbml0S2V5Ym9hcmRFdmVudCgia2V5ZG93biIsIHRy
dWUsIHRydWUsIHdpbmRvdywgMCwgMCwgMCwgMCwgMCwgMCwgImEiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2lucHV0LWVsZW1lbnQtZGlzcGxheS1ub25lLWluLWRyYWdsZWF2ZS1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWVs
ZW1lbnQtZGlzcGxheS1ub25lLWluLWRyYWdsZWF2ZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1lbGVtZW50LWRpc3BsYXktbm9u
ZS1pbi1kcmFnbGVhdmUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAK
IDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKQEAgLTMwLDggKzMwLDggQEAK
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1mb2N1cy1uby1kdXBsaWNhdGUtZXZlbnRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZm9jdXMt
bm8tZHVwbGljYXRlLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pbnB1dC1mb2N1cy1uby1kdXBsaWNhdGUtZXZlbnRzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgQWN0dWFsOgogPC9wcmU+CiAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93
LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cocykgewogICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShzKyJcbiIpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWltYWdl
LXNjcm9sbGVkLXgteS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lucHV0LWltYWdlLXNjcm9sbGVkLXgteS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1pbWFnZS1zY3JvbGxlZC14LXkuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgaWYgKHF1ZXJ5SW5k
ZXggPT0gLTEpIHsKICAgICAgICAgd2luZG93LnNjcm9sbFRvKDUwMCwgNTAwKTsKIAotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oMTgsIDE4KTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwpAQCAtMTgs
OCArMTgsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxkaXY+
Rm9ybSBkYXRhOiAiICsgZG9jdW1lbnQuVVJMLnN1YnN0cmluZyhxdWVyeUluZGV4ICsgMSkgKyAi
PC9kaXY+Iik7CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2PlggYW5kIFkgc2hvdWxkIGJv
dGggYmUgYWJvdXQgMTAuPC9kaXY+Iik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pbnB1dC10YWItZm9jdXMtbm8tZHVwbGljYXRlLWV2ZW50cy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LXRhYi1mb2N1cy1uby1kdXBs
aWNhdGUtZXZlbnRzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LXRhYi1mb2N1cy1uby1kdXBsaWNhdGUtZXZlbnRzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTExLDggKzExLDggQEAgQWN0dWFsOgogPC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cocykgewogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShzKyJcbiIpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2pzLWtleWJvYXJkLWV2
ZW50LWNyZWF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
anMta2V5Ym9hcmQtZXZlbnQtY3JlYXRpb24uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvanMta2V5Ym9hcmQtZXZlbnQtY3JlYXRpb24uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQCBmdW5jdGlvbiBpbml0KCkgewogICAgIGlucHV0
LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIiwga2V5ZXZlbnQsIHRydWUpOwogICAgIGlucHV0
LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwga2V5ZXZlbnQsIHRydWUpOwogICAgCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgaW5wdXQuZm9jdXMoKTsKICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXkt
ZXZlbnRzLWluLWZyYW1lLmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMva2V5LWV2ZW50cy1pbi1mcmFtZS5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWZyYW1lLmh0
bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgb25rZXlkb3duPWZ1
bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudAogb25rZXlwcmVzcz1mdW5jdGlvbigpe2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gJ0ZBSUw6IG91dGVyRnJhbWUg
cmVjZWl2ZWQga2V5cHJlc3Ncbic7IH07CiBvbmtleXVwPWZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSAnRkFJTDogb3V0ZXJGcmFtZSByZWNlaXZl
ZCBrZXl1cFxuJzsgfTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRGcmFtZSIpLmZv
Y3VzKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiYSIpOwog
fQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXktZXZlbnRzLWlu
LWlucHV0LWJ1dHRvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2tleS1ldmVudHMtaW4taW5wdXQtYnV0dG9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleS1ldmVudHMtaW4taW5wdXQtYnV0dG9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJpbnB1dAogCiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVsw
XS5mb2N1cygpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgbG9nKCJTcGFjZToiKTsKICAgICBl
dmVudFNlbmRlci5rZXlEb3duKCIgIiwgW10pOwogICAgIGxvZygiRW50ZXI6Iik7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXktZXZlbnRzLWluLWlucHV0LXRl
eHQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5
LWV2ZW50cy1pbi1pbnB1dC10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDgg
QEAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dAogCiBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXS5mb2N1cygpOwogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgbG9nKCJTcGFjZToiKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCIgIiwgW10p
OwogICAgIGxvZygiQmFja3NwYWNlOiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
a2V5Ym9hcmRldmVudC1tb3VzZWRvd24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LW1vdXNlZG93bi1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlib2FyZGV2ZW50LW1v
dXNlZG93bi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEwIEBACiAgICAg
ICAgIDxkaXYgaWQ9InRlc3QiPjwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2
PiAKICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZlbnQnKTsKQEAgLTE0
LDggKzE0LDggQEAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyku
ZGlzcGF0Y2hFdmVudChldmVudCk7CiAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgPC9zY3JpcHQ+
IAogICAgIDwvYm9keT4gCiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9r
ZXlkb3duLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlk
b3duLTEuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
a2V5ZG93bi0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgZmFsc2UpOwog
ZnVuY3Rpb24gc3RlcDIoKSB7CiAgICAgYWRkRXZlbnRMaXN0ZW5lcnMoKTsKICAgICAKLSAgICBp
ZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVu
bmVyKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHZhciBpZnJhbWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lIik7CkBAIC00NiwxMyArNDYsMTMgQEAgZnVuY3Rpb24g
c3RlcDIoKSB7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZGVsZXRlIik7CiAKICAgICBsb2co
d2luZG93LmZyYW1lc1swXS5kb2N1bWVudC5ib2R5LmlubmVyVGV4dCk7Ci0gICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgfQogICAgIHdpbmRvdy5zZXRUaW1lb3V0KHN0ZXAyLCAyMDApOwogfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5ZG93bi1mdW5jdGlvbi1rZXlzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5ZG93bi1mdW5jdGlvbi1rZXlzLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleWRvd24tZnVu
Y3Rpb24ta2V5cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBAIGZ1bmN0aW9u
IG9uS2V5RXZlbnQoZXYpIHsKIDx0ZXh0YXJlYSBpZD0idGVzdCIgcm93cz0iMSIgY29scz0iNDAi
IG9ua2V5ZG93bj0icmV0dXJuIG9uS2V5RXZlbnQoZXZlbnQpOyIgb25rZXl1cD0icmV0dXJuIG9u
S2V5RXZlbnQoZXZlbnQpOyI+PC90ZXh0YXJlYT4KIDx1bCBpZD0iY29uc29sZSI+PC91bD4KIDxz
Y3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QiKTsKIHRleHRhcmVhLmZvY3VzKCk7CiBldmVudFNlbmRlci5rZXlEb3duKCJG
MSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5ZG93bi1rZXlwcmVzcy1mb2N1
cy1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlk
b3duLWtleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlkb3duLWtleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE3ICsxLDE3IEBACiA8aHRtbD4NCiA8c2NyaXB0Pg0KICAgICBm
dW5jdGlvbiB0ZXN0KCkgew0KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgew0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsNCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAg
ICAgIH0NCiAgICAgICAgIHNldFRpbWVvdXQodGVzdDIsIDApOw0KICAgICB9DQogICAgIGZ1bmN0
aW9uIHRlc3QyKCkgew0KICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmMCcpLmZv
Y3VzKCk7DQogICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdhJyk7DQotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAgICAgfQ0KICAgICBmdW5jdGlv
biBsb2cobXNnKSB7DQogICAgICAgICB2YXIgcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3JlcycpOw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleWRvd24ta2V5cHJlc3Mt
cHJldmVudERlZmF1bHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9rZXlkb3duLWtleXByZXNzLXByZXZlbnREZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleWRvd24ta2V5cHJlc3MtcHJldmVudERlZmF1
bHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAgICBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB2YXIgdGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGYnKTsKICAg
ICAgICAgdGYuZm9jdXMoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignRicpOwogICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignQScpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bignSScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5ZG93bi1yZW1v
dmUtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlk
b3duLXJlbW92ZS1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9rZXlkb3duLXJlbW92ZS1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02
LDggKzYsOCBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lIikuZm9jdXMoKTsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigieCIpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMva2V5ZXZlbnQtaWZyYW1lLXJlbW92ZWQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlldmVudC1pZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlldmVudC1p
ZnJhbWUtcmVtb3ZlZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxNyArMTQsMTcg
QEAKIAogICAgICAgICBmci5mb2N1cygpOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgewot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgICAgIHNldFRpbWVvdXQobnVrZSwgMCk7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBmdW5jdGlvbiBudWtlKCkgewogICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJ4
IikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLWZvY3VzLWNoYW5nZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLWZvY3VzLWNoYW5nZS5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVz
cy1mb2N1cy1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAKICAgICAg
ICAgdmFyIGZyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyJyk7CiAgICAgICAgIHZhciB0
ZjEgPSBmci5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmMScpOwogICAgICAgICB0
ZjAuZm9jdXMoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiMSIpOwogICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiMiIpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiMyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtaW5zZXJ0LXRh
Yi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLWlu
c2VydC10YWIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMva2V5cHJlc3MtaW5zZXJ0LXRhYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4
IEBACiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0YScpOwogCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgICAgIGlmIChlbC52YWx1ZSAh
PSAiIikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGFiS2V5
Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGZhbHNlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVu
dHMoZmFsc2UpOwogCiAgICAgICAgIC8vIFRlc3QgdGhhdCBhY3RpdmF0aW5nIHRoZSBzZXR0aW5n
IGNhdXNlcyBhIHRhYiBjaGFyYWN0ZXIgaW5zZXJ0aW9uLgogICAgICAgICBmb2N1c0VsZW1lbnRB
bmRQcmVzc1RhYktleShlbCk7CkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgLy8gU2V0IHRoaXMgcHJlZmVyZW5jZSBzbyB0aGUgdGFiIGtleSB3aWxsIGFj
dHVhbGx5IGluc2VydCBhIHRhYiBjaGFyYWN0ZXItIGxpa2UgaW4gTWFpbC4KLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyh0cnVlKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRUYWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHModHJ1ZSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGF0IGRlYWN0aXZh
dGluZyB0aGUgc2V0dGluZyBwcmV2ZW50cyBhIHRhYiBpbnNlcnRpb24uCiAgICAgICAgIGVsLnZh
bHVlID0gIiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVk
LW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVz
cy1yZW1vdmVkLW5vZGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OCArNSw4IEBAIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00uPC9wPgogPHByZSBpZD0iY29uc29s
ZSI+UEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuPC9wcmU+CiAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAKIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2lucHV0JylbMF07CiBpbnB1dC5mb2N1cygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbGFiZWwtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9sYWJlbC1mb2N1cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9sYWJlbC1mb2N1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAog
PGh0bWw+CiAgICAgPGJvZHk+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgPC9zY3Jp
cHQ+CiAgICAgICAgIDxsYWJlbCBpZD0ibGFiZWwiPkxhYmVsOiA8aW5wdXQgdHlwZT10ZXh0IG9u
Zm9jdXM9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXRwdXQnKS5pbm5lckhUTUwgPSAnVEhJ
UyBURVNUIEhBUyBQQVNTRUQnIj48L2xhYmVsPgogICAgICAgICA8ZGl2IGlkPSJvdXRwdXQiPlRI
SVMgVEVTVCBIQVMgRkFJTEVEPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZWRpYS1lbGVtZW50LWZvY3VzLXRhYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lZGlhLWVsZW1lbnQtZm9jdXMtdGFiLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lZGlhLWVsZW1lbnQtZm9jdXMtdGFiLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKIAogICAgIDxzY3JpcHQ+CiAKLSAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgIGZ1bmN0aW9uIHRlc3QobWVkaWFJ
ZCwgZmllbGRJZCwgc2hvdWxiZWZvY3Vzc2VkKQogICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVudS1rZXlkb3duLW9uLWhpZGRlbi1lbGVtZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVudS1rZXlkb3duLW9uLWhpZGRlbi1lbGVt
ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21l
bnUta2V5ZG93bi1vbi1oaWRkZW4tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkg
KzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIHRlc3QoKQpAQCAtMTgsNyArMTgsNyBAQAogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIm1lbnUiKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVs
LWdjLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOSArMTYsOSBAQCBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwpAQCAtMzUsOCArMzUs
OCBAQCBnYygpOwogc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICBsb2coIkRPTkUiKTsKICAg
ICBnYygpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfSwgMCk7CiBjaGFubmVsID0g
bmV3IE1lc3NhZ2VDaGFubmVsOwogZ2MoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtY2hhbm5lbC1nYy0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsOSArMTgsOSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9u
IHRlc3QxKCkKQEAgLTQzLDggKzQzLDggQEAgZnVuY3Rpb24gdGVzdDIoKQogICAgIGNoYW5uZWwg
PSAwOwogICAgIGdjKCk7CiAgICAgbG9nKCJQQVNTOiBwb3J0IGNsb3NlZC4iKTsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogdGVzdDEoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSArMTgsOSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2Ug
KyAiPGJyPiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAK
IGZ1bmN0aW9uIHRlc3QxKCkKQEAgLTM5LDggKzM5LDggQEAgZnVuY3Rpb24gdGVzdDEoKQogICAg
ICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJtc2cyIikgewogICAgICAgICAgICAg
ICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIGNsb25lZCBwb3J0LiIpOwogICAg
ICAgICAgICAgICAgIGdjKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGxvZygiRkFJTDogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdl
OiAiICsgZXZlbnQuZGF0YSk7CiAgICAgICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDEzICsyNSwxMyBAQCBmdW5jdGlvbiBkb25lKCkKICAgICBnYygpOwog
CiAgICAgbG9nKCJET05FIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1j
aGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1v
d25lcnNoaXAuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBAIGZ1bmN0aW9uIGdjKCkKICAgICB9CiB9CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1j
bG9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw5IEBAIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIAogdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CkBAIC0xMjMsOCArMTIz
LDggQEAgZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgbG9nKCJET05FIik7CiAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb3NlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb3NlLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9zZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC04LDkgKzgsOSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGxv
ZygiU1RBUlQiKTsKQEAgLTI3LDggKzI3LDggQEAgZnVuY3Rpb24gZG9uZSgpIHsKICAgICAvLyBX
YWl0IGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUgdG8gZW5zdXJlIG5vIG1lc3NhZ2VzIGNvbWUgaW4g
ZnJvbSBwcmV2aW91cyB0ZXN0cy4KICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAg
ICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfSwgMTAwKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZv
ci1kZWxldGVkLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNyw5IEBAIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogdmFyIGNvbnN0cnVjdG9yOwpAQCAtNDYsOCArNDYsOCBAQCBmdW5jdGlvbiB0ZXN0Migp
CiAKICAgICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOwogCi0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWNvbnRleHQtZGVzdHJveWVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnRleHQtZGVzdHJveWVkLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1jb250ZXh0LWRlc3Ryb3llZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBw
b3J0OwpAQCAtMjMsOCArMjMsOCBAQCBnY19hbmRfY3Jhc2ggPSBmdW5jdGlvbigpIHsKICAgICBw
b3J0LnN0YXJ0KCk7CiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJU
ZXh0ID0gIlBBU1MiOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlv
biB0ZXN0KCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRl
bGV0ZWQtZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNyw5IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2Fn
ZSArICI8YnI+IjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0K
IAogdmFyIG1haW5Qb3J0OwpAQCAtNjIsOCArNjIsOCBAQCBmdW5jdGlvbiB0ZXN0NCgpCiAKICAg
ICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw5ICsxNyw5IEBAIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogdmFyIG1haW5Qb3J0OwpAQCAtNjIsOCArNjIsOCBAQCBmdW5jdGlvbiB0ZXN0NCgpCiB7
CiAgICAgbG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKIAotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
aW5hY3RpdmUtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsOSArMTcsOSBAQCBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBvdGhlckRvY3VtZW50OwpAQCAtNjMsOCArNjMsOCBA
QCBmdW5jdGlvbiB0ZXN0NCgpCiAKICAgICBsb2coIkRpZG4ndCBjcmFzaCwgZnJlZXplIG9yIHJl
c3BvbmQ6IFNVQ0NFU1MiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1uby13
cmFwcGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LW5vLXdyYXBwZXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTgsOSArMTgsOSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CiB9CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwpAQCAtMjksNyArMjksNyBAQCBjaGFubmVsLnBvcnQxLnN0YXJ0KCk7
CiBjaGFubmVsID0gMDsKIGdjKCk7CiAKLXNldFRpbWVvdXQoImxvZygnUEFTUycpOyBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCkiLCAxMDApOworc2V0VGltZW91dCgibG9nKCdQQVNTJyk7IGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiLCAxMDApOwogCiA8L3NjcmlwdD4KIDwvYm9keT4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxi
cj4iOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIg
bWFpblBvcnQ7CkBAIC0xMTksOCArMTE5LDggQEAgZnVuY3Rpb24gZG9uZSgpIHsKICAgICAvLyBX
YWl0IGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUgdG8gZW5zdXJlIG5vIG1lc3NhZ2VzIGNvbWUgaW4g
ZnJvbSBwcmV2aW91cyB0ZXN0cy4KICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAg
ICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfSwgMTAwKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91
c2UtZHJhZy1mcm9tLWZyYW1lLXRvLW90aGVyLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtZHJhZy1mcm9tLWZyYW1lLXRvLW90aGVyLWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNl
LWRyYWctZnJvbS1mcmFtZS10by1vdGhlci1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDkgKzIsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBsb2cobXNnKSB7CkBAIC0yNSw3ICsyNSw3
IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGxvZygiV2luZG93
Lm9ubG9hZCBmaXJlZCBiZWZvcmUgc3ViZnJhbWUgY29tcGxldGVkIGxvYWQuIik7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIGxvZygiVGhp
cyB0ZXN0IG5lZWRzIHRvIGJlIHJ1biBpbiBEUlQuICBUbyB0ZXN0IG1hbnVhbGx5IGRyYWcgZnJv
bSB0aGUgdGV4dCAnRHJhZyBNZSEnIG91dCBpbnRvIHRoZSBwYXJlbnQgZnJhbWUuIik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQxLDggKzQxLDggQEAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4MSwgeTEp
OwogICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAgfSBmaW5hbGx5IHsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1kcmFnLWZyb20tZnJhbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1kcmFnLWZy
b20tZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbW91c2UtZHJhZy1mcm9tLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5
IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKQEAgLTUwLDcgKzUwLDcgQEAgd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbG9nKCJXaW5kb3cub25sb2Fk
IGZpcmVkIGJlZm9yZSBzdWJmcmFtZSBjb21wbGV0ZWQgbG9hZC4iKTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgbG9nKCJUaGlzIHRlc3Qg
bmVlZHMgdG8gYmUgcnVuIGluIERSVC4gIFRvIHRlc3QgbWFudWFsbHkgZHJhZyBmcm9tIHRoZSB0
ZXh0ICdEcmFnIE1lIScgb3V0IGludG8gdGhlIHBhcmVudCBmcmFtZS4iKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNjMsOCArNjMsOCBAQCB3aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEyMCwgMTIwKTsKICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAgIH0gZmluYWxseSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtbW92ZWQtcmVtb3ZlLWZyYW1lLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtbW92
ZWQtcmVtb3ZlLWZyYW1lLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlLW1vdmVkLXJlbW92ZS1mcmFtZS1jcmFzaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE3ICsxLDE3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9u
IG9uTW91c2VNb3ZlKCkKIHsKICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsK
IAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlY2xpY2stdGFyZ2V0LWFuZC1wb3Np
dGlvbmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNl
Y2xpY2stdGFyZ2V0LWFuZC1wb3NpdGlvbmluZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZWNsaWNrLXRhcmdldC1hbmQtcG9zaXRpb25pbmcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsOSBAQCBmdW5jdGlvbiBsaXN0ZW5lcihl
dmVudCkKIH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGxpc3RlbmVy
LCBmYWxzZSk7CkBAIC03Niw4ICs3Niw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlZG93bi1pbi1zdWJmcmFtZS1zY3JvbGxiYXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZWRvd24taW4tc3ViZnJhbWUtc2Nyb2xsYmFyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlZG93
bi1pbi1zdWJmcmFtZS1zY3JvbGxiYXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDgg
QEAKIDwvYm9keT4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmciIpOwogICAgIGlmcmFtZS5jb250ZW50V2luZG93LmZvY3VzQW5kU2VsZWN0VGV4dCgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2Vkb3duX2luX3Njcm9sbGJhci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlZG93bl9pbl9zY3Jv
bGxiYXIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bW91c2Vkb3duX2luX3Njcm9sbGJhci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogICAgICAgICAgICAgICAgIGR2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAwLCA1MCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZW1vdmUtYWZ0ZXItZHJhZy1vdmVyLXNjcm9sbGJhci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlbW92ZS1hZnRlci1kcmFnLW92ZXIt
c2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlbW92ZS1hZnRlci1kcmFnLW92ZXItc2Nyb2xsYmFyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOCArNiw4IEBACiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgdmFy
IGQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2QxJyk7CiAgICAgICAgICAgICAgICAgICAg
IHZhciBkMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkMicpOwogICAgICAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbW91c2VvdXQtZGVhZC1ub2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbW91c2VvdXQtZGVhZC1ub2RlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3V0LWRlYWQtbm9kZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBAIG1vdXNlIG92ZXIgbWUKIDxzY3JpcHQ+CiBkZXNj
cmlwdGlvbigiVGVzdCB0aGF0IGlmIG5vZGUgZGllcyB1bmRlciBtb3VzZSBpdCByZWNlaXZlcyBt
b3VzZW91dCBldmVudCBidXQgdGhhdCB0aGUgZXZlbnQgZG9lcyBub3QgcHJvcGFnYXRlLiIpOwog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIHZhciBlbCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQxJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tb3VzZW91dC1kZWFkLXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdXQtZGVhZC1zdWJmcmFtZS5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW91dC1kZWFkLXN1YmZy
YW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAKIGZ1bmN0aW9uIG1vdXNlT3ZlcigpCiB7CkBAIC0zNiw4ICszNiw4IEBA
IGZ1bmN0aW9uIHByaW50UmVzdWx0cyhyZXN1bHQpCiAgICAgY29uc29sZS5pbm5lckhUTUwgPSBy
ZXN1bHQ7CiAgICAgY29uc29sZS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicGFyZW50Tm9kZSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tb3VzZW91dC1vbi13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW91dC1vbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdXQtb24td2luZG93Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBt
b3VzZSBvdXQgZXZlbnRzIAogRkFJTDogTm8gbW91c2VvdXQgd2FzIHNlbnQuCiA8L2Rpdj4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAvLyBJ
bml0aWFsIG1vdmUgb24gd2luZG93cyBpcyB1c2VkIHRvIGZvcmNlIHRoZSB3ZWJ2aWV3IHRvIAog
ICAgIC8vIGluaXRpYWxpc2UgdGhlIHdpbmRvd3MgbW91c2UgZXZlbnQgdHJhY2tlci4gCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItYnV0dG9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVyLWJ1dHRvbi5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItYnV0dG9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDkgKzE4LDkgQEAgZG9jdW1lbnQuZXZlbnRzID0g
e307CiBkb2N1bWVudC5zYXZlV2hlcmUgPSBudWxsOwogCiBmdW5jdGlvbiBydW5UZXN0KCkgewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIAogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOwogICAgICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKQEAgLTY4LDcgKzY4LDcgQEAgZnVuY3Rpb24gZmluaXNoKCkK
ICAgICBzaG91bGRCZSgiZG9jdW1lbnQuZXZlbnRzWydDLW5vLXByZXNzJ10ud2hpY2giLCAiMCIp
OwogICAgIHNob3VsZEJlKCJkb2N1bWVudC5ldmVudHNbJ0QtbWlkZGxlJ10ud2hpY2giLCAiMiIp
OwogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCisgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCkKIH0KIAogZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHdlIGdldCB0aGUgY29ycmVjdCBidXR0b24gb24gbW91c2VvdmVyIGV2ZW50cyBpbiAud2hpY2gg
d2hlbiBlbnRlcmluZyBhIGRvY3VtZW50LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbW91c2VvdmVyLW1vdXNlb3V0Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVyLW1vdXNlb3V0Mi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw5ICs4OSw5IEBAIE1vdXNlIGV2ZW50cyB2cy4gRE9NIG1hbmlwdWxhdGlv
bi48L3A+CiAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBhdXRvVGVzdCgpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMSwxKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgZnVuY3Rpb24gYXV0b1Rlc3QoKSB7CiAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4NSwgMTI1KTsKIAogICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbygxLCAxKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpCiAgICAgfQogfQogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2Vv
dXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91
c2VvdmVyLW1vdXNlb3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw4ICsxMDcsOCBAQCBN
b3VzZSBldmVudHMgdnMuIERPTSBtYW5pcHVsYXRpb24uPC9wPgogCiA8c2NyaXB0PgogZnVuY3Rp
b24gYXV0b1Rlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAog
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOwogICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNldXAtZnJv
bS1idXR0b24yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91
c2V1cC1mcm9tLWJ1dHRvbjIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbW91c2V1cC1mcm9tLWJ1dHRvbjIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NzUsOCArNzUsOCBAQCBmdW5jdGlvbiBtYWluKCkKICAgdGFyZ2V0Qm94LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgX2NhcHR1cmVNb3VzZUV2ZW50cywgZmFsc2UpOwogICB0YXJnZXRCb3guYWRk
RXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCBfY2FwdHVyZU1vdXNlRXZlbnRzLCBmYWxzZSk7
CiAgICAgCi0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgCiAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKICAgICAgIC8vIENvbmZpcm0gdGhhdCBsZWZ0IGJ1dHRvbiB3b3JrcyBwcm9wZXJs
eSAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZXVwLW91dHNpZGUtYnV0
dG9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2V1cC1v
dXRzaWRlLWJ1dHRvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZXVwLW91dHNpZGUtYnV0dG9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDggKzIwLDggQEAgZnVuY3Rpb24gbWFpbigpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2J1dHRvbicpLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBidXR0b25fbW91c2VVcCwg
ZmFsc2UpOwogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
NDAsIDIwKTsgLy8gaW4gYnV0dG9uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3Vz
ZXVwLW91dHNpZGUtZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZXVwLW91dHNpZGUtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2V1cC1vdXRzaWRlLWRvY3VtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAgZnVuY3Rpb24gbWFpbigpCiB7CiAgICAg
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGRvY3VtZW50X21vdXNlVXAsIGZh
bHNlKTsKICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAKICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIw
LCAyMCk7IC8vIGluIHdpbmRvdwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW92aW5n
LXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdmluZy10ZXh0LXNob3VsZC1maXJlLWRy
b3AtYW5kLWRyYWdlbmQtZXZlbnRzLTIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2Vu
ZC1ldmVudHMtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGF0dGFjaExv
Z2dlcihzb3VyY2UpOwogYXR0YWNoTG9nZ2VyKGRlc3RpbmF0aW9uKTsKIAogaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHNvdXJjZS5mb2N1cygpOwogICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tb3ZpbmctdGV4dC1zaG91bGQtZmlyZS1kcm9wLWFuZC1kcmFn
ZW5kLWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21v
dmluZy10ZXh0LXNob3VsZC1maXJlLWRyb3AtYW5kLWRyYWdlbmQtZXZlbnRzLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdmluZy10ZXh0LXNob3Vs
ZC1maXJlLWRyb3AtYW5kLWRyYWdlbmQtZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDcgQEAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCBsb2dFdmVudAogZGl2
LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBsb2dFdmVudCwgZmFsc2UpOwogCiBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZGl2LmZvY3VzKCk7CiAgICAgZ2V0
U2VsZWN0aW9uKCkuY29sbGFwc2UoZGl2LCAwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL211bHRpbGluZS1saW5rLWFycm93LW5hdmlnYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tdWx0aWxpbmUtbGluay1hcnJvdy1uYXZpZ2F0aW9uLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL211bHRpbGlu
ZS1saW5rLWFycm93LW5hdmlnYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDgg
QEAKIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ij4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rp
b24gcnVuVGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9uZXN0ZWQtZXZlbnQt
cmVtb3ZlLW5vZGUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9uZXN0ZWQtZXZlbnQtcmVtb3ZlLW5vZGUtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbmVzdGVkLWV2ZW50LXJlbW92ZS1ub2RlLWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgZnVuY3Rpb24gY2FsbGJh
Y2socmVzcG9uc2UpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlcGxhY2VNZSIp
LmlubmVySFRNTCA9ICIiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXBsYWNlTWUi
KS5pbm5lckhUTUwgPSByZXNwb25zZTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyICYmIChydW4gPT0gMikpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgKHJ1biA9PSAyKSkKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGhhbmRsZVN0YXRlQ2hhbmdl
KCkKQEAgLTM3LDkgKzM3LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRoZVNlbGVjdCIpLmZvY3VzKCk7CiAgICAgc2VuZFhIUigpOwogICAgIAotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL25lc3RlZC13aW5kb3ct
ZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9uZXN0ZWQt
d2luZG93LWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL25lc3RlZC13aW5kb3ctZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDggQEAKIDxodG1sPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gcnVuX3Rlc3Qo
KSB7CiAgIHZhciBvbGRFdmVudCA9IHdpbmRvdy5ldmVudDsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL25vLWJsdXItb24tZW50ZXItYnV0dG9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbm8tYmx1ci1vbi1lbnRlci1idXR0b24uaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbm8tYmx1ci1vbi1lbnRlci1i
dXR0b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogICAgIHZhciBidXR0
b25CbHVyRmlyZWQgPSBmYWxzZTsKIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIC8vIGhpdCBlbnRl
cgogICAgICAgICB2YXIgYnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaV9idCcpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbm8tYmx1ci1vbi1wYWdlLWxlYXZlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbm8tYmx1ci1vbi1wYWdlLWxlYXZl
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL25vLWJs
dXItb24tcGFnZS1sZWF2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBACiA8
c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW0iKTsKICAgICBlbGVtZW50LmZvY3VzKCk7CkBAIC0x
NSw3ICsxNSw3IEBAIGZ1bmN0aW9uIGZhaWxlZCgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPSAiYmx1ciBldmVudCBmaXJlZCwgRkFJTEVEISI7
CiAgICAgd2luZG93LmxvY2F0aW9uID0gJ3Jlc291cmNlcy9uby1ibHVyLXJlc3VsdC5odG1sLyNG
QUlMRUQnOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9uby13aW5kb3ctbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL25vLXdpbmRvdy1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL25vLXdpbmRvdy1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBidWJibGVDb3Vu
dCA9IDA7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL25vZGUtZXZlbnQtYW5jaG9y
LWxvY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ub2RlLWV2
ZW50LWFuY2hvci1sb2NrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL25vZGUtZXZlbnQtYW5jaG9yLWxvY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTIsOSArMTIsOSBAQCBUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOjwvYnI+DQogPC9kaXY+
DQogPHNjcmlwdD4NCiANCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
DQogfQ0KIA0KIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsNCkBAIC00Miw3ICs0Miw3IEBAIGVs
c2UNCiAgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiRkFJTDog
c2Nyb2xsVG9wIGlzICIgKyBzY3JvbGxUb3ArICJweCwgYnV0IHNob3VsZCBiZSBtb3JlIHRoYW4g
NjAwcHgiKSk7DQogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGls
ZChsaW5lKTsNCiANCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0K
KyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiANCiA8L3NjcmlwdD48L2JvZHk+PC9odG1s
Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29mZnNldFgtb2Zmc2V0WS5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vZmZzZXRYLW9m
ZnNldFkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFkPgogICA8dGl0
bGU+VGVzdCBvZmZzZXRYL29mZnNldFkgb24gdmFyaW91cyB0eXBlcyBvZiBlbGVtZW50czwvdGl0
bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIG1vdXNlbW92ZWQoZSkKQEAgLTMwLDcgKzMwLDcgQEAK
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVyZmxvdycpLnNjcm9sbFRvcCA9IDYw
OwogICAgICAgCiAgICAgICAvLyBJbiBub24tdGVzdCBtb2RlLCBzaG93IHRoZSBtb3VzZSBjb29y
ZHMgZm9yIHRlc3RpbmcKLSAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRF
dmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZW1vdmVkLCBmYWxzZSk7CiAKICAgICAgIGRp
c3BhdGNoRXZlbnQoMTEyLCA2MiwgJ2Ficy1ib3gnLCAzMiwgMzcpOwpAQCAtNDEsOCArNDEsOCBA
QAogICAgICAgZGlzcGF0Y2hFdmVudCg1NjMsIDQxMCwgJ2luc2lkZS1vdmVyZmxvdycsIDcsIDYp
OwogICAgICAgZGlzcGF0Y2hFdmVudCgxMTIsIDM2OSwgJ3RyYW5zZm9ybWVkJywgMTEsIDE2KTsK
ICAgICAgICAgICAgIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAg
ICAgCiAgICAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChjbGllbnRYLCBjbGllbnRZLCBleHBlY3Rl
ZEVsZW1lbnRJRCwgZXhwZWN0ZWRPZmZzZXRYLCBleHBlY3RlZE9mZnNldFkpCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9vbmJlZm9yZXVubG9hZC1mb2N1c2VkLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uYmVmb3JldW5sb2FkLWZvY3Vz
ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL29uYmVmb3JldW5sb2FkLWZvY3VzZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsMTAgKzQsMTAgQEAKICAgICBZb3Ugc2hvdWxkIHNlZSBhbiBhbGVydCB3aXRoICJiZWZvcmVV
bmxvYWQiIGlmIHlvdSB0cnkgdG8gY2xvc2UgdGhlIHdpbmRvdy48YnI+CiAgICAgPGlmcmFtZSBz
cmM9InJlc291cmNlcy9vbmJlZm9yZXVubG9hZC1mb2N1c2VkLWlmcmFtZS1mcmFtZS5odG1sIiBp
ZD0iZm9jdXNlZEZyYW1lIj48L2lmcmFtZT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IGJlZm9y
ZVVubG9hZDsKQEAgLTIwLDExICsyMCwxMSBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHNpbXVsYXRl
Q2xvc2VXaW5kb3coKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgICAgICAgICAvLyBTaW11bGF0ZSBhbiBhdHRlbXB0IHRvIGNsb3NlIHRoZSB3aW5kb3cK
LSAgICAgICAgICAgICAgICBpZiAoIWxheW91dFRlc3RDb250cm9sbGVyLmNhbGxTaG91bGRDbG9z
ZU9uV2ViVmlldygpKQorICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5jYWxsU2hvdWxk
Q2xvc2VPbldlYlZpZXcoKSkKICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIlNob3VsZCBoYXZl
IHJ1biB0aGUgYmVmb3JlVW5sb2FkIGhhbmRsZXIuIik7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmJsdXItcmVtb3ZlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmJsdXItcmVtb3ZlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiAgIDxoZWFkPgogICAgICAgPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAK
ICAgICAgICAgdmFyIG51bUJsdXJzID0gMDsKIApAQCAtMjAsOCArMjAsOCBAQAogICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ09uYmx1ciBoYW5kbGVyIG5vdCBjYWxsZWQuJyk7CiAKICAgICAg
ICAgICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bh
bj4nKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgIDwvaGVhZD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uY2hhbmdlLWNsaWNrLWhhbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmNoYW5nZS1jbGljay1oYW5nLmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uY2hhbmdlLWNsaWNr
LWhhbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAgZnVuY3Rpb24gbG9nKHQp
IHsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICs9IHQgKyc8
YnI+JzsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxib2R5PgogVGhlc2UgY2hlY2ti
b3hlcyBjYWxsIHRoZWlyIG93biBhbmQgZWFjaCBvdGhlcnMgY2xpY2soKSBtZXRob2QgZnJvbSB0
aGVpciBvbmNoYW5nZSBjYWxsYmFja3MuIENsaWNrIHRoZSBmaXJzdCBjaGVja2JveC4gVGhpcyBz
aG91bGQgbm90IGNyYXNoIG9yIGhhbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9v
bmNoYW5nZS1wYXNzd29yZGZpZWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvb25jaGFuZ2UtcGFzc3dvcmRmaWVsZC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmNoYW5nZS1wYXNzd29yZGZpZWxkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAgZnVuY3Rpb24gYmx1ckhhbmRsZXIoKQogICAg
IGxvZyAoJ2JsdXIgZXZlbnQgZmlyZWQuXG4nKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIC8vIGNo
YW5nZSB0aGUgZmllbGQKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpLmZvY3VzKCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmNoYW5nZS1zZWFyY2hmaWVsZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uY2hhbmdlLXNlYXJjaGZp
ZWxkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29u
Y2hhbmdlLXNlYXJjaGZpZWxkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAg
ZnVuY3Rpb24gYmx1ckhhbmRsZXIoKQogICAgIGxvZyAoJ2JsdXIgZXZlbnQgZmlyZWQuXG4nKTsK
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIC8vIGNoYW5nZSB0aGUgZmllbGQKIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbnB1dCcpLmZvY3VzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9vbmNoYW5nZS1zZWxlY3QtcG9wdXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9vbmNoYW5nZS1zZWxlY3QtcG9wdXAuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25jaGFuZ2Utc2VsZWN0LXBvcHVwLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDE0ICsxOCwxNCBAQAogCiAgICAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFRlc3QgZm9yIHNlbGVjdCB0aGF0J3Mgbm90IGluc2lkZSBhIGZvcm0g
ZWxlbWVudAogICAgICAgICB2YXIgbWVudTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVu
dTEnKTsKICAgICAgICAgbWVudTEuZm9jdXMoKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
ICAgICAgICAgLy8gY2hhbmdlIHRoZSBvcHRpb24gc2VsZWN0aW9uCiAgICAgICAgICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCdlJyk7CiAgICAgICAgIH0KQEAgLTM4LDcgKzM4LDcgQEAKICAgICAg
ICAgdmFyIG1lbnUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lbnUyJyk7CiAgICAgICAg
IG1lbnUyLmZvY3VzKCk7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIC8vIGNo
YW5nZSB0aGUgb3B0aW9uIHNlbGVjdGlvbgogICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bignZScpOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmNoYW5n
ZS1zZXR2YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29u
Y2hhbmdlLXNldHZhbHVlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL29uY2hhbmdlLXNldHZhbHVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAKIDwvYm9keT4KIDxzY3JpcHQ+CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgIHZhciBldmVudHMgPSBbXTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvb25jaGFuZ2UtdGV4dGZpZWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvb25jaGFuZ2UtdGV4dGZpZWxkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uY2hhbmdlLXRleHRmaWVsZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSw4ICsxOSw4IEBAIGZ1bmN0aW9uIGJsdXJIYW5kbGVyKCkKICAgICBsb2cgKCdi
bHVyIGV2ZW50IGZpcmVkLlxuJyk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogLy8gY2hhbmdl
IHRoZSBmaWVsZAogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0JykuZm9jdXMoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uY2xpY2stbGlzdC1tYXJrZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmNsaWNrLWxpc3QtbWFya2VyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uY2xpY2st
bGlzdC1tYXJrZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTIgKzIwLDEyIEBAIGZ1bmN0
aW9uIGNsaWNrQ291bnRlcigpIHsKIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAotICAgIGlmICgh
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXRlc3RSdW5uZXIpIHsKICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIkNhbm5vdCBiZSBydW4gaW50ZXJhY3RpdmVseSIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciB1bCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ1bCIpOwogICAgIHZhciBsaSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsaSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25kcmFnZW50ZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmRyYWdlbnRlci5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmRyYWdlbnRl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxMSArMTQsMTEgQEAgZnVuY3Rpb24gZHJhZ0Vu
dGVyKGRpdikKIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgCiAgICAgLy8gRmluZCB0aGUgZWxlbWVudCB0byBkcmFnCiAgICAgdmFyIGVsZW1lbnRUb0Ry
YWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxlbWVudFRvRHJhZyIpOwpAQCAtNDQsNyAr
NDQsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHJ1
blRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1o
dG1sLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29u
ZHJvcC10ZXh0LWh0bWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgZHVyaW5n
IGFuIG9uZHJvcCBldmVudC4gIFRoaXMgdGVzdCByZXF1aQogPGRpdiBpZD0icmVzdWx0cyI+RkFJ
TDwvZGl2PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciB1bmRlZmluZWQ7CiBmdW5j
dGlvbiByZW1vdmVGb250TmFtZSh0ZXh0KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
b25lcnJvci1idWJibGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MywxNiArMTMsMTYgQEAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpIAogCiBmdW5jdGlv
biB0ZXN0KCkgCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
ImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDUwMDApOyAvLyBwcmV2ZW50IGhh
bmcgb24gZmFpbHVyZQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJ0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSIsIDUw
MDApOyAvLyBwcmV2ZW50IGhhbmcgb24gZmFpbHVyZQogICAgIH0KICAgICAgICAgCiAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIGRpdi5zZXRBdHRyaWJ1
dGUoIm9uZXJyb3IiLCAicHJpbnQoJ0ZBSUxFRDogZHluYW1pYyBzY3JpcHQgbG9hZCBlcnJvciBi
dWJibGVkJyk7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Iik7CiAgICAg
CiAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAg
IHNjcmlwdC5zcmM9ImZpbGU6Ly8vR3JlZ1RoZUJ1bm55LmpzIjsKQEAgLTM4LDggKzM4LDggQEAg
ZnVuY3Rpb24gc2NyaXB0T25lcnJvcigpCiAKICAgICAvLyBBbGxvdyBldmVudCBidWJibGluZyBw
aGFzZSB0byBjb21wbGV0ZS4KICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKIH0KIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25sb2FkLWFmdGVyLWRvY3VtZW50LWNsb3NlLW5v
LXN1YnJlc291cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
b25sb2FkLWFmdGVyLWRvY3VtZW50LWNsb3NlLW5vLXN1YnJlc291cmNlLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29ubG9hZC1hZnRlci1kb2N1bWVu
dC1jbG9zZS1uby1zdWJyZXNvdXJjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywyMCArMTMs
MjAgQEAgZnVuY3Rpb24gbG9nKHMpCiBmdW5jdGlvbiBhZnRlck9ubG9hZCgpCiB7CiAgICAgbG9n
KCJQQVNTOiBvbmxvYWQgZmlyZWQiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0K
IAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgICAgIC8vIFF1aXJraWx5LCB0aGUgRnJhbWVMb2FkRGVsZWdhdGUgQVBJIGNvbnNp
ZGVycyBvdXIgPGlmcmFtZT4gZnVsbHkgbG9hZGVkIAogICAgICAgICAvLyBvbmNlIGl0IGhhcyBs
b2FkZWQgaXRzIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQuIFNvLCBpZiB3ZSB3YW50IER1bXBSZW5k
ZXJUcmVlIAogICAgICAgICAvLyB0byB3YWl0IGZvciB0aGUgbG9hZCBldmVudCBjYXVzZWQgYnkg
b3VyIGRvY3VtZW50LmNsb3NlKCkgYmVmb3JlIGR1bXBpbmcsCiAgICAgICAgIC8vIHdlIG5lZWQg
dG8gdGVsbCBpdCBzbyBleHBsaWNpdGx5LgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIAogICAgIHZhciBkb2MgPSBmcmFtZXNbMF0uZG9jdW1lbnQ7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9vbmxvYWQtYWZ0ZXItZG9jdW1lbnQtY2xvc2Utd2l0aC1zdWJyZXNvdXJj
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29ubG9hZC1hZnRl
ci1kb2N1bWVudC1jbG9zZS13aXRoLXN1YnJlc291cmNlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29ubG9hZC1hZnRlci1kb2N1bWVudC1jbG9zZS13
aXRoLXN1YnJlc291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIwICsyNCwyMCBAQCBm
dW5jdGlvbiBiZWZvcmVPbmxvYWQoKQogZnVuY3Rpb24gYWZ0ZXJPbmxvYWQoKQogewogICAgIGxv
ZygiZGltZW5zaW9ucyBkdXJpbmcgb25sb2FkIChzaG91bGQgYmUgeyAyMTUgeCAxNzQgfSwgb3Ro
ZXJ3aXNlIG9ubG9hZCBmaXJlZCB0b28gZWFybHkpOiAiICsgZ2V0RGltZW5zaW9ucygpKTsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIC8vIFF1aXJraWx5LCB0
aGUgRnJhbWVMb2FkRGVsZWdhdGUgQVBJIGNvbnNpZGVycyBvdXIgPGlmcmFtZT4gZnVsbHkgbG9h
ZGVkIAogICAgICAgICAvLyBvbmNlIGl0IGhhcyBsb2FkZWQgaXRzIGluaXRpYWwgZW1wdHkgZG9j
dW1lbnQuIFNvLCBpZiB3ZSB3YW50IER1bXBSZW5kZXJUcmVlIAogICAgICAgICAvLyB0byB3YWl0
IGZvciB0aGUgbG9hZCBldmVudCBjYXVzZWQgYnkgb3VyIGRvY3VtZW50LmNsb3NlKCkgYmVmb3Jl
IGR1bXBpbmcsCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gdGVsbCBpdCBzbyBleHBsaWNpdGx5Lgot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZhciBkb2MgPSBmcmFtZXNb
MF0uZG9jdW1lbnQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmxvYWQtZmlyZXMt
dHdpY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmxvYWQt
ZmlyZXMtdHdpY2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvb25sb2FkLWZpcmVzLXR3aWNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4
IEBACiAgICAgPGFueXRhZz4NCiANCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
Pg0KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkNCisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikNCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQ0KIA0KICAg
ICAgICAgdmFyIGNvdW50ID0gMjsNCiAgICAgICAgIGZ1bmN0aW9uIHRlc3REb3VibGVMb2FkKCkg
ew0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29ubG9hZC1uYW1lLWNvbGxpc2lvbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29ubG9hZC1uYW1lLWNv
bGxpc2lvbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9vbmxvYWQtbmFtZS1jb2xsaXNpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDgg
QEAgWW91IHNob3VsZCBzZWUgIlBBU1MiIGJlbG93LgogCiA8ZGl2IGlkPSdyZXN1bHQnPkZBSUw6
IHRoaXMgdGV4dCBzaG91bGQgYmUgcmVwbGFjZWQgb24gc3VjY2Vzcy48ZGl2PgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiBmdW5jdGlvbiBvbmxvYWQoKSB7CiAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7CiAgIHJlc3VsdC5pbm5lckhUTUw9J1BBU1M6IG9ubG9h
ZCBmdW5jdGlvbiBnZXRzIGNhbGxlZC4nOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
b25sb2FkLXNpbmdsZS1saW5lLWNvbW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9vbmxvYWQtc2luZ2xlLWxpbmUtY29tbWVudC5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmxvYWQtc2luZ2xlLWxpbmUtY29t
bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDEzIEBACiBmdW5jdGlvbiBsb2Fk
ZWQoKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
PSAiUEFTUyI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpICAgIAoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkgICAgCiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29ubG9hZC13ZWJraXQtYmVmb3JlLXdlYmNvcmUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmxvYWQtd2Via2l0
LWJlZm9yZS13ZWJjb3JlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL29ubG9hZC13ZWJraXQtYmVmb3JlLXdlYmNvcmUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLTxzY3JpcHQ+bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpPC9zY3JpcHQ+Cis8c2NyaXB0PnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpPC9zY3JpcHQ+CiA8
Qk9EWSBvbmxvYWQ9ImFsZXJ0KCdUaGlzIHNob3VsZCBiZSB0aGUgZmlyc3QgbGluZS4nKSI+CiBU
aGlzIHNob3VsZCBiZSB0aGUgc2Vjb25kIGxpbmUuIFRoZSBmaXJzdCBsaW5lIHNob3VsZCBiZSBh
biBBTEVSVC4KICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2FGaWxlVGhhdERvZXNOb3RFeGlz
dCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmxvYWRGcmFtZUNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25sb2FkRnJh
bWVDcmFzaC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9vbmxvYWRGcmFtZUNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCk7CiB9CiA8L3NjcmlwdD4KIDwhLS0gVGhpcyB0ZXN0IFBBU1NFRCBpZiB3ZSBkb24ndCBjcmFz
aC4gLS0+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbnNlYXJjaC1lbnRlci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uc2VhcmNoLWVudGVyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uc2VhcmNo
LWVudGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAgICAgICAgIHsKICAg
ICAgICAgICAgIHZhciBzZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZicpOwogICAgICAg
ICAgICAgc2YuZm9jdXMoKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCJcciIsIFtdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvb25zdWJtaXQtYnViYmxpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbnN1Ym1pdC1idWJibGluZy5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbnN1Ym1pdC1idWJibGluZy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBAIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2Us
IGNvbG9yKSAKIAogZnVuY3Rpb24gdGVzdCgpIAogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2MScpLm9uc3VibWl0ID0g
ZnVuY3Rpb24gKCkgeyAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29udW5sb2FkLWNs
ZWFycy1vbmJlZm9yZXVubG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL29udW5sb2FkLWNsZWFycy1vbmJlZm9yZXVubG9hZC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbnVubG9hZC1jbGVhcnMtb25iZWZvcmV1
bmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxoZWFkPgogPHNjcmlw
dD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGJlZm9yZSwgZmFsc2UpOwpAQCAtMjQsNyAr
MjQsNyBAQCBmdW5jdGlvbiB1bmxvYWQoKQogCiBmdW5jdGlvbiBsb2FkKCkKIHsKLSAgICBsb2Nh
dGlvbiA9ICJkYXRhOnRleHQvaHRtbCxJZiB5b3UgZGlkbid0IGhpdCBhbiBhc3NlcnQgeW91IFBB
U1MuPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7IDwvIiArICJzY3JpcHQ+IjsKKyAgICBsb2NhdGlvbiA9ICJk
YXRhOnRleHQvaHRtbCxJZiB5b3UgZGlkbid0IGhpdCBhbiBhc3NlcnQgeW91IFBBU1MuPHNjcmlw
dD5pZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyA8LyIgKyAi
c2NyaXB0PiI7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
b251bmxvYWQtbm90LW9uLWJvZHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9vbnVubG9hZC1ub3Qtb24tYm9keS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbnVubG9hZC1ub3Qtb24tYm9keS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvYWQoKQogewot
ICAgIGxvY2F0aW9uID0gImRhdGE6dGV4dC9odG1sLHlvdSBzaG91bGQgb25seSBzZWUgb25lIHVu
bG9hZCBhbGVydCBhcHBlYXIuPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IDwvIiArICJzY3JpcHQ+IjsKKyAg
ICBsb2NhdGlvbiA9ICJkYXRhOnRleHQvaHRtbCx5b3Ugc2hvdWxkIG9ubHkgc2VlIG9uZSB1bmxv
YWQgYWxlcnQgYXBwZWFyLjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsgPC8iICsgInNjcmlwdD4iOwogfQogCiBmdW5jdGlvbiB1bmxvYWQoKQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb251bmxvYWQtd2luZG93LXByb3BlcnR5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb251bmxvYWQtd2luZG93
LXByb3BlcnR5Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL29udW5sb2FkLXdpbmRvdy1wcm9wZXJ0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkg
KzMsOSBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCiBmdW5jdGlvbiB1bmxvYWQoKQpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlv
biB1bmxvYWQoKQogZnVuY3Rpb24gbG9hZCgpCiB7CiAgICAgd2luZG93Lm9udW5sb2FkID0gdW5s
b2FkOwotICAgIGxvY2F0aW9uID0gImRhdGE6dGV4dC9odG1sLFlvdSBzaG91bGQgaGF2ZSBzZWVu
IGFuIHVubG9hZCBhbGVydCBhcHBlYXIuPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IDwvIiArICJzY3JpcHQ+
IjsKKyAgICBsb2NhdGlvbiA9ICJkYXRhOnRleHQvaHRtbCxZb3Ugc2hvdWxkIGhhdmUgc2VlbiBh
biB1bmxvYWQgYWxlcnQgYXBwZWFyLjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsgPC8iICsgInNjcmlwdD4iOwogfQogCiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29udW5sb2FkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb251bmxvYWQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb251bmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxNCArMSwxNCBAQAogPGh0bWw+CiA8Ym9keSBvbnVubG9hZD0idW5sb2FkKCkiIG9ubG9h
ZD0ibG9hZCgpIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCiBmdW5jdGlvbiBsb2FkKCkKIHsKLSAgICBsb2NhdGlvbiA9ICJkYXRhOnRleHQvaHRt
bCxZb3Ugc2hvdWxkIGhhdmUgc2VlbiBhbiB1bmxvYWQgYWxlcnQgYXBwZWFyLjxzY3JpcHQ+aWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOyA8LyIgKyAic2NyaXB0PiI7CisgICAgbG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0bWws
WW91IHNob3VsZCBoYXZlIHNlZW4gYW4gdW5sb2FkIGFsZXJ0IGFwcGVhci48c2NyaXB0PmlmICh3
aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IDwvIiArICJzY3JpcHQ+
IjsKIH0KIAogZnVuY3Rpb24gdW5sb2FkKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L29wZW4td2luZG93LWZyb20tYW5vdGhlci1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL29wZW4td2luZG93LWZyb20tYW5vdGhlci1mcmFtZS5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vcGVuLXdpbmRvdy1m
cm9tLWFub3RoZXItZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwxMyBAQAog
PGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWlu
aW5nV2luZG93c1doZW5Db21wbGV0ZSgpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5k
b3dzV2hlbkNvbXBsZXRlKCkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKQEAg
LTE1LDcgKzE1LDcgQEAKICAgICAgICAgICAgIHZhciBteUxpbmsgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnbGluaycpOwogICAgICAgICAgICAgdmFyIG15RnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnb3RoZXJGcmFtZScpLmNvbnRlbnRXaW5kb3c7CiAgICAgICAgICAgICBteUxp
bmsub25jbGljayA9IG15RnJhbWUuaGFuZGxlQ2xpY2s7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICAgICAgICAgICAgICB2YXIgeCA9IG15TGluay5vZmZzZXRMZWZ0ICsgMjsKICAg
ICAgICAgICAgICAgICB2YXIgeSA9IG15TGluay5vZmZzZXRUb3AgKyAyOwogICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvb3B0aW9uLXRhYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL29wdGlvbi10YWIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvb3B0aW9uLXRhYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogPC9wcmU+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdChmaWVs
ZElkKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb3ZlcmZsb3ctZXZlbnRzLXdy
aXRpbmctbW9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL292
ZXJmbG93LWV2ZW50cy13cml0aW5nLW1vZGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvb3ZlcmZsb3ctZXZlbnRzLXdyaXRpbmctbW9kZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSByZXN1bHQ7CiAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjaGlsZCcpLmlubmVySFRNTCA9ICIiOwogCi0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIG5leHRU
ZXN0KCkgewpAQCAtNTcsOSArNTcsOSBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgdGVz
dFJlc3VsdHMgPSBbW092ZXJmbG93RXZlbnQuSE9SSVpPTlRBTCwgdHJ1ZSwgZmFsc2VdLApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb3ZlcmZsb3ctZXZlbnRzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb3ZlcmZsb3ctZXZlbnRzLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL292ZXJmbG93LWV2ZW50cy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAgICAgewogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwogCi0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIG5leHRUZXN0KCkgewpAQCAtNTEsOSArNTEsOSBAQAogICAgIH0KIAogICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAK
ICAgICAgICAgdGVzdFJlc3VsdHMgPSBbW092ZXJmbG93RXZlbnQuSE9SSVpPTlRBTCwgdHJ1ZSwg
ZmFsc2VdLApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb3ZlcmZsb3ctc2Nyb2xsLWZh
a2UtbW91c2UtbW92ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L292ZXJmbG93LXNjcm9sbC1mYWtlLW1vdXNlLW1vdmUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb3ZlcmZsb3ctc2Nyb2xsLWZha2UtbW91c2UtbW92
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMiArMTMsMTIgQEAKICAgICBmdW5jdGlvbiBm
aW5pc2goKQogICAgIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmlubmVyVGV4dCA9IHBhc3NlZCA/ICJQQVNTIiA6ICJGQUlMIjsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgLy8gV2ViS2l0IHNjaGVkdWxlcyBhIGZha2UgbW91
c2UgbW92ZSBldmVudCBhcyBwYXJ0IG9mIGluc3RhbGxpbmcgdGhlIFdlYlZpZXcgaW4KICAgICAg
ICAgLy8gYSB3aW5kb3cuIEZvciB0aGUgdGVzdCB0byBiZSB2YWxpZCwgaXQgbXVzdCBiZWdpbiBv
bmx5IGFmdGVyIHRoYXQgZXZlbnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL292ZXJm
bG93LXZpZXdwb3J0LXJlbmRlcmVyLWRlbGV0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9vdmVyZmxvdy12aWV3cG9ydC1yZW5kZXJlci1kZWxldGVkLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL292ZXJmbG93LXZp
ZXdwb3J0LXJlbmRlcmVyLWRlbGV0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEs
OCBAQAogCiAgICAgb25sb2FkID0gZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnRhaW5lcicpLmFkZEV2ZW50TGlzdGVuZXIoJ292ZXJmbG93Y2hhbmdlZCcsIGZ1
bmN0aW9uKCkgeyB9LCBmYWxzZSk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFtZS1kZWxl
dGUtdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Ut
dmlzaWJpbGl0eS1pZnJhbWUtZGVsZXRlLXRlc3QuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFtZS1kZWxldGUtdGVz
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNSArMzYsMTUgQEAgZnVuY3Rpb24gc3RhcnRU
ZXN0KCkgewogICAgIGZyYW1lMi5jb250ZW50RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigKICAg
ICAgICAgIndlYmtpdHZpc2liaWxpdHljaGFuZ2UiLCBvbkZyYW1lMlZpc2liaWxpdHlDaGFuZ2Us
IGZhbHNlKTsKICAgICAvLyBDaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGN1cnJlbnQgcGFn
ZSB0byBpbnZpc2libGUuCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBudW1WaXNpYmlsaXR5Q2hhbmdl
cysrOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQYWdlVmlzaWJpbGl0eSgiaGlk
ZGVuIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0UGFnZVZpc2liaWxpdHkoImhpZGRlbiIpOwog
ICAgIH0KIH0KIAogZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZXNldFBhZ2VW
aXNpYmlsaXR5KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLnJlc2V0UGFnZVZpc2liaWxpdHkoKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFtZS1tb3ZlLXRl
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2li
aWxpdHktaWZyYW1lLW1vdmUtdGVzdC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktaWZyYW1lLW1vdmUtdGVzdC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiw5IEBAIGZ1bmN0aW9uIHdpbmRvdzJMb2FkZWQoKSB7
CiAgICAgc2hvdWxkQmVGYWxzZSgiaWZyYW1lLmNvbnRlbnREb2N1bWVudC53ZWJraXRIaWRkZW4i
KTsKIAogICAgIC8vIENoYW5nZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY3VycmVudCBwYWdlIHRv
IGludmlzaWJsZS4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIG51bVZpc2liaWxpdHlDaGFuZ2VzKys7
Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQYWdlVmlzaWJpbGl0eSgi
aGlkZGVuIik7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJo
aWRkZW4iKTsKICAgICB9CiB9CiAKQEAgLTQ3LDkgKzQ3LDkgQEAgZnVuY3Rpb24gb25WaXNpYmls
aXR5Q2hhbmdlKCkgewogfQogCiBmdW5jdGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5X
aW5kb3dzKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dz
KCk7CiAgICAgfQogCiAgICAgZGVidWcoIldpbmRvdyAxIExvYWRlZCIpOwpAQCAtNjEsOCArNjEs
OCBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiB9CiAKIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5yZXNldFBhZ2VWaXNpYmlsaXR5KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIucmVzZXRQYWdlVmlzaWJpbGl0eSgpOwogICAg
IH0KICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3BhZ2UtdmlzaWJpbGl0eS1pZnJhbWUtcHJvcGFnYXRpb24tdGVzdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS1pZnJhbWUtcHJvcGFn
YXRpb24tdGVzdC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wYWdlLXZpc2liaWxpdHktaWZyYW1lLXByb3BhZ2F0aW9uLXRlc3QuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAsMTMgKzEwLDEzIEBAIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgUGFnZSAKIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogZnVuY3Rpb24gbWFrZVBh
Z2VWaXNpYmxlKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBhZ2VWaXNpYmlsaXR5KCJ2aXNpYmxlIik7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VWaXNp
YmlsaXR5KCJ2aXNpYmxlIik7CiB9CiAKIGZ1bmN0aW9uIG1ha2VQYWdlSGlkZGVuKCkgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFBhZ2VWaXNpYmlsaXR5KCJoaWRkZW4iKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0UGFnZVZpc2liaWxpdHkoImhpZGRlbiIpOwog
fQogCiBmdW5jdGlvbiBjaGVja0lzUGFnZVZpc2libGUoKSB7CkBAIC03NCw4ICs3NCw4IEBAIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5yZXNldFBhZ2VWaXNpYmlsaXR5KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIucmVzZXRQYWdlVmlzaWJpbGl0eSgpOwogICAgIH0KICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJp
bGl0eS10cmFuc2l0aW9uLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0Lmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0
aW9uLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMjMgKzEwLDIzIEBAIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgUGFnZSAKIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKIAogZnVuY3Rpb24gbWFrZVBhZ2VWaXNpYmxlKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBhZ2VWaXNp
YmlsaXR5KCJ2aXNpYmxlIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJ2aXNpYmxlIik7CiB9CiAKIGZ1bmN0aW9uIG1h
a2VQYWdlSGlkZGVuKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBhZ2VWaXNpYmlsaXR5KCJoaWRkZW4iKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0UGFnZVZp
c2liaWxpdHkoImhpZGRlbiIpOwogfQogCiBmdW5jdGlvbiBtYWtlUGFnZVByZXJlbmRlcigpIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRQYWdlVmlzaWJpbGl0eSgicHJlcmVuZGVyIik7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJwcmVy
ZW5kZXIiKTsKIH0KIAogZnVuY3Rpb24gbWFrZVBhZ2VQcmV2aWV3KCkgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFBhZ2VWaXNpYmlsaXR5KCJwcmV2aWV3Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJwcmV2aWV3Iik7CiB9CiAKIGZ1
bmN0aW9uIGNoZWNrSXNQYWdlVmlzaWJsZSgpIHsKQEAgLTY4LDggKzY4LDggQEAgZnVuY3Rpb24g
c3RhcnRUZXN0KCkgewogfQogCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cmVzZXRQYWdlVmlzaWJpbGl0eSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLnJlc2V0UGFnZVZpc2liaWxpdHkoKTsKICAgICB9CiAgICAgZmluaXNo
SlNUZXN0KCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlaGlkZS10aW1l
b3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZWhpZGUt
dGltZW91dC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9wYWdlaGlkZS10aW1lb3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBK
UyBleGVjdXRpb24gaXMgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJl
ZCwgc28gdGhhdCB0aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0
aGUgZG9jdW1lbnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOwogICAgIAogb25wYWdlaGlkZSA9IGZ1bmN0aW9u
KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VoaWRlLXhoci1vcGVuLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZWhpZGUteGhyLW9w
ZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFn
ZWhpZGUteGhyLW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIGRlc2NyaXB0aW9uKCdUcmllcyB0byB0cmlnZ2Vy
IGFuIGFzc2VydCBpbiB4bWxodHRwcmVxdWVzdCBkdXJpbmcgcGFnZWhpZGUuJyk7CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOwogCiAKIG9ucGFnZXNob3cg
PSBmdW5jdGlvbihldmVudCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93
LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQt
d2l0aC1mcmFtZXMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNiwxMCArNiwxMCBAQCBUZXN0IHBhZ2VzaG93L3BhZ2VoaWRlIGV2
ZW50IGJlaGF2aW9yIHdoCiA8L2JvZHk+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5IiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXki
LCAxKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yOSw4ICsyOSw4IEBAIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbihldnQpIHsKIHdpbmRvdy5vbnBhZ2VzaG93ID0gZnVuY3Rpb24o
ZXZ0KSB7CiAgICAgbG9nKCJNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93IiArICIsIHRhcmdl
dCA9ICIgKyBldnQudGFyZ2V0ICsgIiwgcGVyc2lzdGVkID0gIiArIGV2dC5wZXJzaXN0ZWQpOwog
ICAgIGlmIChldnQucGVyc2lzdGVkKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvZygiKioqTmF2aWdhdGluZyB0
b3AtbGV2ZWwgZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSBuYXZpZ2F0ZSBi
YWNrIHRvIHRoaXMgb25lKioqIik7CiAgICAgICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0
byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBl
bnRyaWVzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUt
b24tYmFjay1jYWNoZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNh
Y2hlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPHA+VGVzdCBwYWdlc2hv
dy9wYWdlaGlkZSBldmVudCBiZWhhdmlvciB3aGVuIG5hdmlnYXRpbmcgYmFjayB0byBhbiBjYWNo
ZWQgcGFnZS48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOwogfQog
CiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oZXZ0KSB7CkBAIC0xNSw3ICsxNSw3IEBAIHdpbmRv
dy5vbnBhZ2VzaG93ID0gZnVuY3Rpb24oZXZ0KSB7CiAgICAgaWYgKGV2dC5wZXJzaXN0ZWQpIHsK
ICAgICAgICAgLy8gUmV0dXJuZWQgYmFjay4KICAgICAgICAgd2luZG93Lm9ucGFnZWhpZGUgPSBu
dWxsOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDApOwor
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRU
aW1lb3V0KCd3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhp
c3RvcnkuYmFjaygpOzwvc2NyIiArICJpcHQ+IicsIDApOwogICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stdW5jYWNoZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1v
bi1iYWNrLXVuY2FjaGVkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stdW5jYWNoZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxwPlRlc3QgcGFnZXNob3cvcGFnZWhpZGUgZXZlbnQg
YmVoYXZpb3Igd2hlbiBuYXZpZ2F0aW5nIGJhY2sgdG8gYW4gdW5jYWNoZWQgcGFnZS48L3A+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogd2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKGV2dCkgewpAQCAtMTEsNyArMTEsNyBAQCB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oZXZ0KSB7CiAgICAgICAgIC8vIFJldHVybmVkIGJhY2suCiAgICAgICAgIHdp
bmRvdy5uYW1lID0gIiI7CiAgICAgICAgIHdpbmRvdy5vbnBhZ2VoaWRlID0gbnVsbDsKLSAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAxMCk7CisgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7IH0sIDEwKTsKICAgICB9IGVsc2UgewogICAgICAgICB3aW5kb3cubmFtZSA9
ICJwYWdlc2hvdy9wYWdlaGlkZSI7CiAgICAgICAgIHNldFRpbWVvdXQoJ3dpbmRvdy5sb2NhdGlv
biA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyIiArICJpcHQ+
IicsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdl
aGlkZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9w
YWdlc2hvdy1wYWdlaGlkZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGlm
cmFtZSBzcmM9InJlc291cmNlcy9wYWdlc2hvdy1wYWdlaGlkZS1zdWJmcmFtZS5odG1sIj48L2lm
cmFtZT4KIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0zNiw4ICsz
Niw4IEBAIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3QKICAgICBpZiAo
ZXZ0LmRhdGEgPT0gInN1YmZyYW1lLWxvYWRlZCIpIHsKICAgICAgICAgaWYgKHN0YXRlID09IDEp
IHsKICAgICAgICAgICAgIGxvZygiKioqRG9uZSoqKiIpOwotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKGV2dC5kYXRhID09ICJzdWJzdWJmcmFtZS1sb2FkZWQiKSB7CiAgICAgICAgIGlm
IChzdGF0ZSA9PSAwKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYW5TY3JvbGwt
Y2xpY2staHlwZXJsaW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcGFuU2Nyb2xsLWNsaWNrLWh5cGVybGluay5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtY2xpY2staHlwZXJsaW5rLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCkK
IAogdmFyIExlZnRNb3VzZUJ1dHRvbiA9IDA7CiB2YXIgTWlkZGxlTW91c2VCdXR0b24gPSAxOwpA
QCAtMTUsNyArMTUsNyBAQCB2YXIgZGlkQ2xpY2tMaW5rMSA9IGZhbHNlOwogd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB0ZXN0Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QtY29udGFpbmVyIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hbnVhbC1pbnN0cnVjdGlvbnMi
KSk7CiAgICAgcnVuVGVzdCgpOwogfQpAQCAtNDUsOCArNDUsOCBAQCBmdW5jdGlvbiBmaW5pc2hl
ZCgpCiB7CiAgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRF
PC9zcGFuPicpOwogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QtY29udGFpbmVyIikpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfQogCiBmdW5jdGlvbiBjbGlja0h5cGVybGlua3NJZlNjcm9sbGVkVG9Cb3R0b21PdGhlcndp
c2VGYWlsKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZl
bnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50
LWluLXNjcm9sbGluZy1kaXYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKICAg
ICAgICAgICAgIHZhciBldmVudDsKICAgICAgICAgICAgIHZhciBkaXY7CiAKLSAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
CiAgICAgICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaFdoZWVsRXZlbnQoKQogICAgICAgICAgICAg
ewpAQCAtMzEsOCArMzEsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJkaXYuc2Nyb2xs
VG9wIiwgIndpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCp3aW5kb3cucGl4ZWxzUGVyV2hlZWxUaWNr
Iik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImRpdi5zY3JvbGxMZWZ0IiwgIndpbmRvdy5l
eHBlY3RlZFNjcm9sbExlZnQqd2luZG93LnBpeGVsc1BlcldoZWVsVGljayIpOwogCi0gICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
ICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHdpbmRv
dy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXgtaW4tbm9uLXNjcm9sbGluZy1kaXYuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2
ZW50LXBhZ2luZy14LWluLW5vbi1zY3JvbGxpbmctZGl2Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXgt
aW4tbm9uLXNjcm9sbGluZy1kaXYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBA
QAogICAgICAgICAgICAgdmFyIGV2ZW50OwogICAgICAgICAgICAgdmFyIGRpdjsKIAotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNoV2hlZWxFdmVudCgpCiAgICAgICAg
ICAgICB7CkBAIC0zMyw4ICszMyw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImRpdi5z
Y3JvbGxUb3AiLCAid2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wIik7CiAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImRpdi5zY3JvbGxMZWZ0IiwgIndpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQiKTsK
IAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy14LWluLW5vbi1zY3JvbGxp
bmctcGFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRm
b3JtLXdoZWVsZXZlbnQtcGFnaW5nLXgtaW4tbm9uLXNjcm9sbGluZy1wYWdlLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZl
bnQtcGFnaW5nLXgtaW4tbm9uLXNjcm9sbGluZy1wYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEwLDggKzEwLDggQEAKICAgICAgICAgICAgIHZhciBldmVudDsKICAgICAgICAgICAgIHZhciBk
aXY7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaFdoZWVsRXZl
bnQoKQogICAgICAgICAgICAgewpAQCAtMzAsOCArMzAsOCBAQAogICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCIsICJ3aW5kb3cuZXhwZWN0ZWRTY3JvbGxU
b3AiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0
IiwgIndpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQiKTsKIAotICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNl
d2hlZWxIYW5kbGVyKGUpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13
aGVlbGV2ZW50LXBhZ2luZy14LWluLXNjcm9sbGluZy1kaXYuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy14LWluLXNj
cm9sbGluZy1kaXYuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKICAgICAgICAgICAgIHZhciBldmVudDsK
ICAgICAgICAgICAgIHZhciBkaXY7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgICAgICBmdW5jdGlv
biBkaXNwYXRjaFdoZWVsRXZlbnQoKQogICAgICAgICAgICAgewpAQCAtMzMsOCArMzMsOCBAQAog
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJkaXYuc2Nyb2xsVG9wIiwgIndpbmRvdy5leHBlY3Rl
ZFNjcm9sbFRvcCIpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJkaXYuc2Nyb2xsTGVmdCIs
ICJ3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBtb3VzZXdo
ZWVsSGFuZGxlcihlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hl
ZWxldmVudC1wYWdpbmcteC1pbi1zY3JvbGxpbmctcGFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXgtaW4tc2Ny
b2xsaW5nLXBhZ2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteC1pbi1zY3JvbGxpbmctcGFnZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgICAgICAgICAgICB2YXIgZXZlbnQ7
CiAgICAgICAgICAgICB2YXIgZGl2OwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICAgICAgZnVuY3Rp
b24gZGlzcGF0Y2hXaGVlbEV2ZW50KCkKICAgICAgICAgICAgIHsKQEAgLTMwLDggKzMwLDggQEAK
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AiLCAid2lu
ZG93LmV4cGVjdGVkU2Nyb2xsVG9wIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImRvY3Vt
ZW50LmJvZHkuc2Nyb2xsTGVmdCIsICJ3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0Iik7CiAKLSAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAg
d2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBmdW5jdGlvbiBtb3VzZXdoZWVsSGFuZGxlcihlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteHktaW4tc2Nyb2xsaW5nLWRpdi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVs
ZXZlbnQtcGFnaW5nLXh5LWluLXNjcm9sbGluZy1kaXYuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteHkt
aW4tc2Nyb2xsaW5nLWRpdi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAg
ICAgICAgICAgICB2YXIgZXZlbnQ7CiAgICAgICAgICAgICB2YXIgZGl2OwogCi0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IAogICAgICAgICAgICAgZnVuY3Rpb24gZGlzcGF0Y2hXaGVlbEV2ZW50KCkKICAgICAgICAgICAg
IHsKQEAgLTMzLDggKzMzLDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZGl2LnNjcm9s
bFRvcCIsICJ3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AiKTsKICAgICAgICAgICAgICAgICBzaG91
bGRCZSgiZGl2LnNjcm9sbExlZnQiLCAid2luZG93LmV4cGVjdGVkU2Nyb2xsTGVmdCIpOwogCi0g
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXh5LWluLXNjcm9sbGluZy1wYWdl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hl
ZWxldmVudC1wYWdpbmcteHktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmct
eHktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBA
QAogICAgICAgICAgICAgdmFyIGV2ZW50OwogICAgICAgICAgICAgdmFyIGRpdjsKIAotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNoV2hlZWxFdmVudCgpCiAgICAgICAg
ICAgICB7CkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImRvY3Vt
ZW50LmJvZHkuc2Nyb2xsVG9wIiwgIndpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCIpOwogICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQiLCAid2luZG93LmV4
cGVjdGVkU2Nyb2xsTGVmdCIpOwogCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIo
ZSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFn
aW5nLXktaW4tbm9uLXNjcm9sbGluZy1kaXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy15LWluLW5vbi1zY3JvbGxp
bmctZGl2Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tbm9uLXNjcm9sbGluZy1kaXYuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsOCBAQAogICAgICAgICAgICAgdmFyIGV2ZW50Owog
ICAgICAgICAgICAgdmFyIGRpdjsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IGRpc3BhdGNoV2hlZWxFdmVudCgpCiAgICAgICAgICAgICB7CkBAIC0zNCw4ICszNCw4IEBACiAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoImRpdi5zY3JvbGxUb3AiLCAid2luZG93LmV4cGVjdGVk
U2Nyb2xsVG9wIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImRpdi5zY3JvbGxMZWZ0Iiwg
IndpbmRvdy5leHBlY3RlZFNjcm9sbExlZnQiKTsKIAotICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hl
ZWxIYW5kbGVyKGUpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVl
bGV2ZW50LXBhZ2luZy15LWluLW5vbi1zY3JvbGxpbmctcGFnZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4t
bm9uLXNjcm9sbGluZy1wYWdlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tbm9uLXNjcm9sbGlu
Zy1wYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKICAgICAgICAgICAg
IHZhciBldmVudDsKICAgICAgICAgICAgIHZhciBkaXY7CiAKLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAg
ICAgICBmdW5jdGlvbiBkaXNwYXRjaFdoZWVsRXZlbnQoKQogICAgICAgICAgICAgewpAQCAtMzAs
OCArMzAsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5ib2R5LnNjcm9s
bFRvcCIsICJ3aW5kb3cuZXhwZWN0ZWRTY3JvbGxUb3AiKTsKICAgICAgICAgICAgICAgICBzaG91
bGRCZSgiZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IiwgIndpbmRvdy5leHBlY3RlZFNjcm9sbExl
ZnQiKTsKIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy15LWluLXNjcm9s
bGluZy1kaXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wbGF0
Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy15LWluLXNjcm9sbGluZy1kaXYuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1w
YWdpbmcteS1pbi1zY3JvbGxpbmctZGl2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEw
LDggQEAKICAgICAgICAgICAgIHZhciBldmVudDsKICAgICAgICAgICAgIHZhciBkaXY7CiAKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaXNwYXRjaFdoZWVsRXZlbnQoKQogICAg
ICAgICAgICAgewpAQCAtMzMsOCArMzMsOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJk
aXYuc2Nyb2xsVG9wIiwgIndpbmRvdy5leHBlY3RlZFNjcm9sbFRvcCIpOwogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJkaXYuc2Nyb2xsTGVmdCIsICJ3aW5kb3cuZXhwZWN0ZWRTY3JvbGxMZWZ0
Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBmdW5jdGlvbiBtb3VzZXdoZWVsSGFuZGxlcihlKQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxp
bmctcGFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BsYXRm
b3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1w
YWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsx
MCw4IEBACiAgICAgICAgICAgICB2YXIgZXZlbnQ7CiAgICAgICAgICAgICB2YXIgZGl2OwogCi0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gZGlzcGF0Y2hXaGVlbEV2ZW50KCkKICAg
ICAgICAgICAgIHsKQEAgLTMwLDggKzMwLDggQEAKICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AiLCAid2luZG93LmV4cGVjdGVkU2Nyb2xsVG9wIik7CiAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCIsICJ3aW5k
b3cuZXhwZWN0ZWRTY3JvbGxMZWZ0Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBtb3VzZXdoZWVsSGFu
ZGxlcihlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9pbnRlci1ldmVudHMtMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvaW50ZXItZXZlbnRz
LTIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9p
bnRlci1ldmVudHMtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsOCArMTUxLDggQEAKICAg
ICAKICAgPC9zdHlsZT4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICB9CiAgIAogICAgIHZhciBwb2ludGVyRXZlbnRzVmFsdWVzID0gWydhdXRvJywg
J25vbmUnXTsKQEAgLTE5Niw4ICsxOTYsOCBAQAogICAgICAgICB5T2Zmc2V0ICs9IDEwMDsKICAg
ICAgIH0KICAgICAgIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAg
IDwvc2NyaXB0PgogICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvaW50ZXItZXZl
bnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9pbnRlci1l
dmVudHMuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cG9pbnRlci1ldmVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogICAg
IH0KICAgCiAgICAgZnVuY3Rpb24gdGVzdENvbnRlbnQoKSB7Ci0gICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgICB2YXIgeU9mZnNldCA9IHRvcEVkZ2U7CiAgICAgCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0
aWF0ZWQtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9w
b3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVyZS1pbml0aWF0ZWQtZXZlbnQuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYWxsb3dlZC1mcm9tLWdl
c3R1cmUtaW5pdGlhdGVkLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEyICsyNCwx
MiBAQAogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuZGlz
cGF0Y2hFdmVudChjbGlja0V2ZW50KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0
ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQb3B1
cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENs
b3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICAgICAgICAgIHZhciBidXR0b24x
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKTsKICAgICAgICAgICAgICAgICB2
YXIgYnV0dG9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24yIik7CkBAIC00Myw3
ICs0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PiAKICAgICA8L2JvZHk+IApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYWxsb3dlZC1mcm9tLWdlc3R1cmUtaW5pdGlhdGVk
LWZvcm0tc3VibWl0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cG9wdXAtYWxsb3dlZC1mcm9tLWdlc3R1cmUtaW5pdGlhdGVkLWZvcm0tc3VibWl0Lmh0bWwJKHJl
dmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWFsbG93ZWQt
ZnJvbS1nZXN0dXJlLWluaXRpYXRlZC1mb3JtLXN1Ym1pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDEyICs1LDEyIEBACiAgICAgICAgIDwvZm9ybT4KICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+RkFJTDwvZGl2PgogICAgICAgICA8c2NyaXB0PiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5P
cGVuV2luZG93cygpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbiIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0b24tY2xpY2suaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS1idXR0
b24tY2xpY2suaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtYnV0dG9uLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDE4ICsxMiwxOCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlVW5kZWZpbmVk
KCJ3aW4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5P
cGVuV2luZG93cygpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBv
cHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5k
b3dzKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxl
ZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2lu
ZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKS5jbGljaygpOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgPC9zY3JpcHQ+IAogICAg
IDwvYm9keT4gCiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1i
bG9ja2VkLWZyb20tZmFrZS1mb2N1cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtlLWZvY3VzLmh0bWwJKHJldmlzaW9uIDEy
MDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1mYWtl
LWZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDE5ICsxMywxOSBAQAogICAgICAgICAg
ICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJ3aW4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5mb2N1cygpOwogICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5ibHVyKCk7CiAKLSAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
ICAgICA8L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFrZS11c2VyLWdlc3R1cmUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tZmFr
ZS11c2VyLWdlc3R1cmUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWZha2UtdXNlci1nZXN0dXJlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDEyICsyNSwxMiBAQAogCiAgICAgICAgICAgICBjbGlja0hhbmRsZXIg
PSBjbGlja0hhbmRsZXIxOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5k
b3dzKCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9j
a2luZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOwotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hl
bkNvbXBsZXRlKHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogCiAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7CiAKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAgICAgICAgICAgICB3aW5kb3cu
ZXZlbnQgPSBzdG9sZW5FdmVudDsKICAgICAgICAgICAgICAgICBidXR0b24uY2xpY2soKTsKIAot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cG9wdXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWhpc3RvcnktcmVsb2FkLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJs
b2NrZWQtZnJvbS1oaXN0b3J5LXJlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDIwICsy
LDIwIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5z
ZXRDYW5PcGVuV2luZG93cygpOworICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJs
ZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29t
cGxldGUodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgLy8gUmVj
b3JkIGN1cnJlbnQgd2luZG93IGNvdW50LgotICAgIHdpbmRvdy53aW5kb3dDb3VudCA9IHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci53aW5kb3dDb3VudCgpOworICAgIHdpbmRvdy53aW5kb3dD
b3VudCA9IHdpbmRvdy50ZXN0UnVubmVyLndpbmRvd0NvdW50KCk7CiB9CiBmdW5jdGlvbiB0ZXN0
RG9uZSgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci53aW5kb3dDb3VudCgpID09IHdpbmRvdy53aW5kb3dDb3VudCkK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LnRlc3RSdW5uZXIud2luZG93Q291
bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIlBBU1NFRCI7CiAgICAgLy8gQ2xvc2UgdGhlIHRl
c3QuCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taWZyYW1lLXNjcmlwdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1pZnJh
bWUtc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1pZnJhbWUtc2NyaXB0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsMjAgKzIsMjAgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0
ZSh0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJs
b2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2lu
ZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICAvLyBSZWNvcmQgY3VycmVudCB3aW5kb3cgY291bnQuCi0gICAgd2luZG93LndpbmRvd0Nv
dW50ID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndpbmRvd0NvdW50KCk7CisgICAgd2lu
ZG93LndpbmRvd0NvdW50ID0gd2luZG93LnRlc3RSdW5uZXIud2luZG93Q291bnQoKTsKIH0KIGZ1
bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93
Q291bnQpCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy50ZXN0UnVubmVyLndp
bmRvd0NvdW50KCkgPT0gd2luZG93LndpbmRvd0NvdW50KQogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVyVGV4dCA9ICJQQVNTRUQiOwogICAgIC8vIENsb3Nl
IHRoZSB0ZXN0LgotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLWlmcmFtZS1zcmMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20t
aWZyYW1lLXNyYy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20taWZyYW1lLXNyYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDIxICsyLDIxIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUo
dHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIHRlc3RSdW5uZXIuc2V0UG9wdXBCbG9j
a2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRv
d3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAg
ICAgLy8gUmVjb3JkIGN1cnJlbnQgd2luZG93IGNvdW50LgotICAgIHdpbmRvdy53aW5kb3dDb3Vu
dCA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53aW5kb3dDb3VudCgpOworICAgIHdpbmRv
dy53aW5kb3dDb3VudCA9IHdpbmRvdy50ZXN0UnVubmVyLndpbmRvd0NvdW50KCk7CiB9CiBmdW5j
dGlvbiB0ZXN0KCkgewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobGF5b3V0
VGVzdENvbnRyb2xsZXIud2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCisgICAg
aWYgKHRlc3RSdW5uZXIud2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCiAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ID0gIlBBU1NF
RCI7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tbW91c2Vtb3ZlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLW1vdXNlbW92
ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2VkLWZyb20tbW91c2Vtb3ZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEs
MTQgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxl
ZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZSh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAvLyBSZWNv
cmQgY3VycmVudCB3aW5kb3cgY291bnQuCi0gICAgd2luZG93LndpbmRvd0NvdW50ID0gd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLndpbmRvd0NvdW50KCk7CisgICAgd2luZG93LndpbmRvd0Nv
dW50ID0gd2luZG93LnRlc3RSdW5uZXIud2luZG93Q291bnQoKTsKIH0KIAogZnVuY3Rpb24gZXZl
bnRmaXJlKCkKQEAgLTI3LDExICsyNywxMSBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CiAgICAgCiAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCiAgICAgewotICAgICAgICBpZiAobGF5
b3V0VGVzdENvbnRyb2xsZXIud2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCisg
ICAgICAgIGlmICh0ZXN0UnVubmVyLndpbmRvd0NvdW50KCkgPT0gd2luZG93LndpbmRvd0NvdW50
KQogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRl
eHQgPSAiUEFTU0VEIjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgPSAiRkFJTEVEIjsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICB9CiAgICAgc2V0VGltZW91dChmaW5pc2hUZXN0LCAwKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS11bnRydXN0ZWQtY2xpY2st
ZXZlbnQtb24tYW5jaG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC1mcm9tLXVudHJ1c3RlZC1jbGljay1ldmVudC1vbi1hbmNob3IuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxv
Y2tlZC1mcm9tLXVudHJ1c3RlZC1jbGljay1ldmVudC1vbi1hbmNob3IuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTIsMjAgKzEyLDIwIEBACiAgICAgICAgICAgICAgICAgc2hvdWxkQmVVbmRlZmlu
ZWQoIndpbiIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENh
bk9wZW5XaW5kb3dzKCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOwotICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Blbldp
bmRvd3MoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFBvcHVwQmxvY2tpbmdFbmFi
bGVkKHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdX
aW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjbGlja0V2ZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7CiAgICAgICAgICAgICBjbGlja0V2
ZW50LmluaXRFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmlldywg
MCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOwogICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5kaXNwYXRjaEV2ZW50KGNs
aWNrRXZlbnQpOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgPC9zY3JpcHQ+IAogICAgIDwvYm9keT4gCiA8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tdW50
cnVzdGVkLW1vdXNlLWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLXVudHJ1c3RlZC1tb3VzZS1jbGljay5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZy
b20tdW50cnVzdGVkLW1vdXNlLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEs
MTEgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRv
d3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiAKIHZhciBURVNUX1NUQVJURUQgPSAwOwpAQCAtMjMsNyArMjMsNyBAQCBmdW5jdGlvbiBuZXh0
VGVzdFN0YWdlKCkgewogICAgICAgICBkb0NsaWNrKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgPSAiUEFTU0VEIjsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKQEAgLTUxLDggKzUxLDggQEAgZnVuY3Rp
b24gb3BlbldpbmRvdyhldnQpIHsKICAgICBpZiAoIXdpbmRvdy5wb3B1cEJsb2NrZXJJc0VuYWJs
ZWQpCiAgICAgICAgIGV4cGVjdGVkV2luZG93Q291bnQgPSAyOwogICAgIC8vIEVuY291bnRlciBh
IGZhaWx1cmUsIHF1aXQgdGVzdC4KLSAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIud2luZG93
Q291bnQoKSAhPSBleHBlY3RlZFdpbmRvd0NvdW50KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAodGVzdFJ1bm5lci53aW5kb3dDb3VudCgpICE9
IGV4cGVjdGVkV2luZG93Q291bnQpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gR28gdG8gbmV4dCB0ZXN0IHN0YWdlLgpA
QCAtNjAsNyArNjAsNyBAQCBmdW5jdGlvbiBvcGVuV2luZG93KGV2dCkgewogfQogCiBmdW5jdGlv
biBkb0NsaWNrKCkgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdF
bmFibGVkKHdpbmRvdy5wb3B1cEJsb2NrZXJJc0VuYWJsZWQpOworICAgIHRlc3RSdW5uZXIuc2V0
UG9wdXBCbG9ja2luZ0VuYWJsZWQod2luZG93LnBvcHVwQmxvY2tlcklzRW5hYmxlZCk7CiAgICAg
Ly8gU2VuZCBhIG1vdXNlLWNsaWNrIGV2ZW50IHRvIGNsaWNrIHRoZSBidXR0b24uCiAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
MjAsIDIwKTsKQEAgLTY5LDcgKzY5LDcgQEAgZnVuY3Rpb24gZG9DbGljaygpIHsKIH0KIAogZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAgICAgd2luZG93LnRl
c3RTdGFnZSA9IFRFU1RfU1RBUlRFRDsKICAgICBuZXh0VGVzdFN0YWdlKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20td2luZG93LW9wZW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20t
d2luZG93LW9wZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLXdpbmRvdy1vcGVuLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjEgKzEsMjEgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gIGxheW91
dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7
Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgdGVzdFJ1bm5lci5zZXRD
YW5PcGVuV2luZG93cygpOworICB0ZXN0UnVubmVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRy
dWUpOworICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0
cnVlKTsKKyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgLy8gUmVjb3JkIGN1cnJl
bnQgd2luZG93IGNvdW50LgotICAgIHdpbmRvdy53aW5kb3dDb3VudCA9IHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci53aW5kb3dDb3VudCgpOworICAgIHdpbmRvdy53aW5kb3dDb3VudCA9IHdp
bmRvdy50ZXN0UnVubmVyLndpbmRvd0NvdW50KCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIud2luZG93Q291bnQoKSA9PSB3aW5kb3cud2luZG93Q291bnQpCisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy50ZXN0UnVubmVyLndpbmRvd0NvdW50KCkgPT0gd2lu
ZG93LndpbmRvd0NvdW50KQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVyVGV4dCA9ICJQQVNTRUQiOwogICAgIC8vIENsb3NlIHRoZSB0ZXN0LgotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC10by1wb3N0LWJsYW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC10by1wb3N0LWJsYW5rLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtdG8t
cG9zdC1ibGFuay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEyIEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRDYW5PcGVuV2luZG93cygpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb3B1cEJs
b2NraW5nRW5hYmxlZCh0cnVlKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1h
aW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgdGVzdFJ1
bm5lci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgdGVzdFJ1bm5lci5zZXRDbG9z
ZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkgewpAQCAtMjQsNyArMjQsNyBAQCBXaW5k
b3cgb2JqZWN0LiBPdGhlcndpc2UsIHRoZSB0ZXN0IHBhc3NlCiA8Zm9ybSBpZD0iZm9ybSIgYWN0
aW9uPSJkYXRhOnRleHQvaHRtbCw8c2NyaXB0PmFsZXJ0KHdpbmRvdyk8L3NjcmlwdD4iIHRhcmdl
dD0iX2JsYW5rIj4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQgdG8gbmV3IHdp
bmRvdyIvPgogPC9mb3JtPgotPGZvcm0gaWQ9ImZvcm0yIiBhY3Rpb249ImRhdGE6dGV4dC9odG1s
LDxiPmhlbGxvITwvYj48c2NyaXB0PndpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk8L3NjcmlwdD4iIHRhcmdldD0idGFyZ2V0Ij4K
Kzxmb3JtIGlkPSJmb3JtMiIgYWN0aW9uPSJkYXRhOnRleHQvaHRtbCw8Yj5oZWxsbyE8L2I+PHNj
cmlwdD53aW5kb3cudGVzdFJ1bm5lciAmJiB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTwvc2NyaXB0
PiIgdGFyZ2V0PSJ0YXJnZXQiPgogPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCBs
b2NhbCBwYWdlIEphdmFzY3JpcHQiLz4KIDwvZm9ybT4KIDxpZnJhbWUgaWQ9InRhcmdldCI+PC9p
ZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2luZy1jbGlj
ay1pbi1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9w
b3B1cC1ibG9ja2luZy1jbGljay1pbi1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tpbmctY2xpY2staW4taWZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzEsMTMgQEAKIDxodG1sPgogICAgIDxoZWFkPgog
ICAgICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxl
dGUoKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0Vu
YWJsZWQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENh
bk9wZW5XaW5kb3dzKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSgpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwogICAg
ICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gY2xvc2VXaW5kb3cod2luZG93VG9DbG9zZSkKQEAg
LTE5LDggKzE5LDggQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIXdpbmRv
d1RvQ2xvc2UuY2xvc2VkKQogICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGRvbmVIYW5k
bGVyLCAxKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApAQCAtMzcsNyArMzcsNyBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5zY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKCk7CiAgICAgICAgICAgICB9CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2luZy10aW1lcnMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2luZy10aW1lcnMuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tp
bmctdGltZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTEgKzUsMTEgQEAKICAgICAgICAg
dmFyIGludGVydmFsSWQ7CiAgICAgICAgIHZhciBmaXJzdEludGVydmFsRXhlY3V0aW9uID0gdHJ1
ZTsKICAgICAgICAgCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgfQogICAgIAogICAgICAg
ICBmdW5jdGlvbiBjbGlja0hhbmRsZXIoKSB7CkBAIC0zOCw4ICszOCw4IEBACiAgICAgICAgICAg
ICAgICAgZGVidWcoIlRlc3QgY2FsbGluZyB3aW5kb3cub3BlbigpIHdpdGggYSAxMDAxIG1zIGRl
bGF5LiBBIHBvcHVwIHNob3VsZCBub3QgYmUgYWxsb3dlZC4iKQogICAgICAgICAgICAgICAgIHNo
b3VsZEJlVW5kZWZpbmVkKCJuZXdXaW5kb3ciKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgIH0sIDEwMDEpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC13aGVuLXNlbGVjdC1jaGFuZ2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC13aGVuLXNlbGVjdC1jaGFuZ2UuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtd2hl
bi1zZWxlY3QtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsMTIgQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250
cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBv
cHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9z
ZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Ci0gIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICB0
ZXN0UnVubmVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworICB0ZXN0UnVubmVyLnNl
dENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CkBAIC0xNCw3ICsxNCw3IEBA
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIGN0cmwxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRyb2wxJyk7CiAgICAgY3RybDEuZm9jdXMoKTsKIAotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAg
ICAgLy8gY2hhbmdlIHRoZSBvcHRpb24gc2VsZWN0aW9uCiAgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oImUiLCBbXSk7CiAgICAgfQpAQCAtNDIsNyArNDIsNyBAQCBJZiB0aGUgcG9wLXVwIHdh
cyBub3QgYmxvY2tlZCB0aGVuIHRoZXJlCiA8Zm9ybSBpZD0iZm9ybSIgYWN0aW9uPSJkYXRhOnRl
eHQvaHRtbCw8c2NyaXB0PmFsZXJ0KCdQQVNTRUQnKTwvc2NyaXB0PiIgdGFyZ2V0PSJ0YXJnZXQi
PgogPGlucHV0IGlkPSJjb250cm9sMiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IHRvIG5l
dyB3aW5kb3ciLz4KIDwvZm9ybT4KLTxmb3JtIGlkPSJmb3JtMiIgYWN0aW9uPSJkYXRhOnRleHQv
aHRtbCw8Yj5oZWxsbyE8L2I+PHNjcmlwdD53aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpPC9zY3JpcHQ+IiB0YXJnZXQ9InBhbmVs
Ij4KKzxmb3JtIGlkPSJmb3JtMiIgYWN0aW9uPSJkYXRhOnRleHQvaHRtbCw8Yj5oZWxsbyE8L2I+
PHNjcmlwdD53aW5kb3cudGVzdFJ1bm5lciAmJiB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTwvc2Ny
aXB0PiIgdGFyZ2V0PSJwYW5lbCI+CiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0
IGxvY2FsIHBhZ2UgSmF2YXNjcmlwdCIvPgogPC9mb3JtPgogPGlmcmFtZSBpZD0idGFyZ2V0Ij48
L2lmcmFtZT48aWZyYW1lIGlkPSJwYW5lbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wcmV2ZW50LWRyYWctdG8tbmF2aWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wcmV2ZW50LWRyYWctdG8tbmF2aWdhdGUuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcHJldmVudC1kcmFnLXRv
LW5hdmlnYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAgZnVuY3Rpb24g
ZHJhZ0xlYXZlKCkgewogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIFdh
aXQgdW50aWwgYWZ0ZXIgdGhlIGRyb3AgdG8gbm90aWZ5RG9uZSwganVzdCB0byBtYWtlIHN1cmUK
ICAgICAgICAgLy8gdGhlIG5hdmlnYXRpb24gd2FzIHByZXZlbnRlZCBjb3JyZWN0bHkuCi0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDApOwogfQog
CkBAIC0yOCw3ICsyOCw3IEBAIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsIGRy
YWcKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCBkcmFnTGVhdmUsIHRydWUp
OwogCiBmdW5jdGlvbiBkb1Rlc3QoKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZXZlbnRTZW5kZXIu
YmVnaW5EcmFnV2l0aEZpbGVzKFsicmVzb3VyY2VzL2ZpbGUtZm9yLXByZXZlbnQtZHJhZy10by1u
YXZpZ2F0ZS5odG1sIl0pOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7CkBA
IC0zNiw3ICszNiw3IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0KIAogaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAvLyBUaGUgbG9hZCBzZWVtcyB0byBm
YWlsIChmb3IgdGhlIHdyb25nIHJlYXNvbnMpIGlmIHdlIHRyeSB0byBraWNrIG9mIGEKICAgICAv
LyBuZXcgbG9hZCBiZWZvcmUgdGhpcyBvbmUgaXMgZmluaXNoZWQuICBTbyB3ZSB3YWl0LgogICAg
IHdpbmRvdy5vbmxvYWQgPSBkb1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Byb2dyYW1tYXRpYy1jaGVjay1uby1jaGFuZ2UtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wcm9ncmFtbWF0aWMtY2hlY2stbm8tY2hhbmdlLWV2ZW50
Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Byb2dy
YW1tYXRpYy1jaGVjay1uby1jaGFuZ2UtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4
ICszLDggQEAKIAk8dGl0bGU+VW50aXRsZWQ8L3RpdGxlPgogCTxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAJCiBmdW5jdGlvbiBkZWJ1Zyhtc2cpCiB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZWNvcmRlZC1rZXlkb3duLWV2ZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVjb3JkZWQta2V5ZG93bi1l
dmVudC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZWNvcmRlZC1rZXlkb3duLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBA
CiBDcmFzaCB3aGVuIHJlcGxheWluZyBhIHNlcXVlbmNlIG9mIGtleWJvYXJkIGV2ZW50cy48L3A+
CiA8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMzAs
OCArMzAsOCBAQCBmdW5jdGlvbiByZWNvcmQoZXZlbnQpCiAgICAgICAgICAgICB3aW5kb3cucmVj
b3JkZWRFdmVudC5jaGFyQ29kZTsKICAgICAgICAgICAgIHdpbmRvdy5yZWNvcmRlZEV2ZW50Lmtl
eUNvZGU7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicCIpLmlubmVySFRN
TCA9ICJQQVNTIjsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogCiAgICAgICAgIH0sIDApOwogICAgIH0sIDApOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVsYXRlZC10YXJnZXQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZWxhdGVkLXRhcmdldC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZWxhdGVkLXRhcmdldC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSwxNCArMjEsMTQgQEAgZnVuY3Rpb24gb3ZlcihldmVudCkKICAgICAg
ICAgKyBldmVudC50YXJnZXQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIiBmcm9tICIKICAgICAgICAg
KyBldmVudC5yZWxhdGVkVGFyZ2V0LmdldEF0dHJpYnV0ZSgiaWQiKSArICIuIikpOwogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewog
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvcmVtb3ZlLWNoaWxkLW9uc2Nyb2xsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLWNoaWxkLW9uc2Nyb2xsLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92ZS1jaGlsZC1vbnNj
cm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE1IEBACiA8aHRtbD4KICAgICA8
aGVhZD4KICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IGRpc3BhdGNoU2Nyb2xsRXZlbnRzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiB3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbENvdW50ID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R2JykuYWRkRXZlbnRMaXN0ZW5lcigKICAg
ICAgICAgICAgICAgICAgICAgICAgICdzY3JvbGwnLApAQCAtMTksNyArMTksNyBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxDb3VudCA9PSAxKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5KC0xLCAtMSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92ZS1l
dmVudC1saXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+
CiA8Ym9keT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAv
LyBmb2xsb3dpbmcgY29kZSBzaG91bGQgbGVhayB0aGUgZnVuY3Rpb24gYW5kIHdpbmRvdy9kb2N1
bWVudCBvYmplY3RzLgogICAgIGZ1bmN0aW9uIGxlYWtlZChlKSB7IHZhciBhID0gd2luZG93OyB9
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtc2hhZG93LWhvc3QtY3Jhc2gu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtc2hhZG93
LWhvc3QtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVtb3ZlLXNoYWRvdy1ob3N0LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OCArMiw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBt
b3VzZU92ZXIoZWxlbWVudCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92
ZS10YXJnZXQtaW4tbW91c2V1cC1kZWVwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLWRlZXAuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3Vz
ZXVwLWRlZXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOCArMTUsOCBAQCBmdW5jdGlvbiBt
b3VzZXVwKCkgewogICAgIHRlc3QucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKIH0KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICB0ZXN0LmlubmVy
SFRNTCA9ICdGQUlMIC0gdGhpcyB0ZXN0IHJlcXVpcmVzIGV2ZW50U2VuZGVyJzsKICAgICBlbHNl
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1
cC1pbnNlcnRiYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLWluc2VydGJhY2suaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRhcmdldC1pbi1tb3VzZXVwLWlu
c2VydGJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQCBmdW5jdGlvbiBt
b3VzZXVwKCkgewogICAgIHRlc3QuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKIH0KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICB0ZXN0LmlubmVy
SFRNTCA9ICdGQUlMIC0gdGhpcyB0ZXN0IHJlcXVpcmVzIGV2ZW50U2VuZGVyJzsKICAgICBlbHNl
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1
cC10d2ljZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92
ZS10YXJnZXQtaW4tbW91c2V1cC10d2ljZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LWluLW1vdXNldXAtdHdpY2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTUsOCArMTUsOCBAQCBmdW5jdGlvbiBtb3VzZXVwKCkgewogICAg
IHRlc3QucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGlm
ICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICB0ZXN0LmlubmVySFRNTCA9ICdGQUlMIC0g
dGhpcyB0ZXN0IHJlcXVpcmVzIGV2ZW50U2VuZGVyJzsKICAgICBlbHNlIHsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtaW4tbW91c2V1cC5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUt
dGFyZ2V0LWluLW1vdXNldXAuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQCBm
dW5jdGlvbiBtb3VzZXVwKCkgewogICAgIHRhcmdldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRh
cmdldCk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRl
cikKICAgICAgICAgdGVzdC5pbm5lckhUTUwgPSAnRkFJTCAtIHRoaXMgdGVzdCByZXF1aXJlcyBl
dmVudFNlbmRlcic7CiAgICAgZWxzZSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRyYWcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRyYWcuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVtb3ZlLXRh
cmdldC13aXRoLXNoYWRvdy1pbi1kcmFnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTYgKzMs
MTYgQEAKIDxib2R5PgogPHNjcmlwdD4KIAotaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCitpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgIGRvY3VtZW50LndyaXRlbG4oIlRoaXMg
Y3Jhc2ggdGVzdCBuZWVkcyB0byBiZSByYW4gaW5zaWRlIER1bXBSZW5kZXJUcmVlIik7CiAKIHZh
ciB0YXJnZXQ7CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBtb3VzZU1vdmVUb0NlbnRlck9m
RWxlbWVudChlbGVtZW50KSB7CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyLCBlbGVtZW50Lm9mZnNldFRv
cCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9yZXNpemUtZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzaXplLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9yZXNpemUtZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDggQEAKICAgICA8ZGl2IGlkPWV4cGFuZGluZ2Jsb2NrPgogICAgIDwvZGl2PgogICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBibG9ja2NvdW50ID0gMDsKQEAgLTQ2LDgg
KzQ2LDggQEAKICAgICAgICAgICAgICAgICByZXN1bHQgPSAnPHAgc3R5bGU9ImNvbG9yOiByZWQi
PkZBSUwnOwogICAgICAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0MScpCiAgICAgICAgICAgICByZXN1bHRFbGVtZW50LmlubmVySFRNTCAr
PSByZXN1bHQ7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgICAgICBvbmxvYWQgPSBhZGRCbG9jazsKICAg
ICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc2l6ZS1zdWJmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc2l6ZS1zdWJm
cmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZXNpemUtc3ViZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogPHNj
cmlwdD4KICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAg
ICAgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsK
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIpLnN0eWxlLmhlaWdodCA9
ICIxMDBweCI7CkBAIC0xNiwxMCArMTYsMTAgQEAKICAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gcmVzaXplZCgpCiAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCdQQVNTJyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdQQVNTJykpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmlnaHQtY2xpY2stZm9jdXMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yaWdodC1jbGljay1mb2N1cy5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yaWdodC1jbGlj
ay1mb2N1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQCBmdW5jdGlvbiBsb2co
dCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICs9
IHQgKyc8YnI+JzsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIDwvc2NyaXB0PgogPGJvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtYWZ0ZXItY2xpY2stb24tdGFiLWluZGV4
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Nyb2xsLWFmdGVy
LWNsaWNrLW9uLXRhYi1pbmRleC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zY3JvbGwtYWZ0ZXItY2xpY2stb24tdGFiLWluZGV4Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTksMTMgKzksMTMgQEAgZnVuY3Rpb24gZ2V0Q2VudGVyRm9yKGVsZW1lbnQp
CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewotICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICByZXR1cm47CiAgIGlmICghd2lu
ZG93LmV2ZW50U2VuZGVyKQogICAgIHJldHVybjsKIAotICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgIGFsZXJ0KCJTY3JvbGwgcG9zaXRpb24gIiArIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKTsK
ICAgY2VudGVyID0gZ2V0Q2VudGVyRm9yKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcCIpKTsK
QEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24gdmVyaWZ5U2Nyb2xsaW5nKCkKIHsKICAgZGVidWco
IlNjcm9sbCBwb3NpdGlvbiBpcyBtb3JlIHRoYW4gMCIpOwogICBzaG91bGRCZSgiZG9jdW1lbnQu
Ym9keS5zY3JvbGxUb3AgPiAwIiwgInRydWUiKTsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtZGl2LXdpdGgtcHJldmVudC1kZWZh
dWx0LWluLXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2Nyb2xsLWRpdi13aXRoLXByZXZlbnQtZGVmYXVsdC1pbi1zdWJmcmFtZS5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtZGl2LXdpdGgt
cHJldmVudC1kZWZhdWx0LWluLXN1YmZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEz
ICsyMywxMyBAQCBmdW5jdGlvbiBzY3JvbGwoKSB7CiAgICAgICAgIHZhciByZXN1bHQgPSBzY3Jv
bGxBZnRlck1vdmVUb01haW5GcmFtZSA9PSBzY3JvbGxBZnRlclJldHVyblRvU3ViZnJhbWUgPyAi
UEFTUyIgCiAgICAgICAgICAgICA6ICJGQUlMOiBzY3JvbGxBZnRlck1vdmVUb01haW5GcmFtZSA9
ICIgKyBzY3JvbGxBZnRlck1vdmVUb01haW5GcmFtZSArICIsIHNjcm9sbEFmdGVyUmV0dXJuVG9T
dWJmcmFtZSA9ICIgKyBzY3JvbGxBZnRlclJldHVyblRvU3ViZnJhbWU7CiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUocmVzdWx0KSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9sbC1kdXJp
bmctem9vbS1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zY3JvbGwtZHVyaW5nLXpvb20tY2hhbmdlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9sbC1kdXJpbmctem9vbS1jaGFuZ2UuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTYsOCArMTYsOCBAQAogICAgIGZ1bmN0aW9uIHNjcm9sbGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXZl
bnQudGFyZ2V0KTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMCw5ICszMCw5IEBACiAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuc3R5bGUuem9vbSA9IDI7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICB0ZXN0KCk7
CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9sbC1ldmVudC1k
b2VzLW5vdC1idWJibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zY3JvbGwtZXZlbnQtZG9lcy1ub3QtYnViYmxlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9sbC1ldmVudC1kb2VzLW5vdC1idWJibGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTcgKzE3LDE3IEBAIGZ1bmN0aW9uIGRpdlNjcm9sbGVk
KCkgewogCiAgICAgICAgIC8vIERvbid0IHBvbGx1dGUgdGhlIHRlc3QgcmVzdWx0IHdpdGggbm9u
c2Vuc2UuCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5pbm5l
ckhUTUwgPSAnJzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgIH0sIDEwMCk7ICAgIAogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIHZh
ciBmYWlsdXJlID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2Nyb2xsLWV2ZW50LWR1cmluZy1tb2RhbC1kaWFsb2cuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtZXZlbnQtZHVyaW5nLW1vZGFs
LWRpYWxvZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zY3JvbGwtZXZlbnQtZHVyaW5nLW1vZGFsLWRpYWxvZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDggKzMsOCBAQAogPGJvZHkgc3R5bGU9Im1pbi1oZWlnaHQ6IDIwMDBweCI+IAogCiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOwog
CiBkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBzY3JvbGwgZXZlbnRzIGFyZSBub3QgZmlyZWQgd2hp
bGUgbW9kYWwgZGlhbG9ncyBhcmUgZGlzcGxheWVkLicpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVk
LXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNjYWxlZC1wYWdlLXdpdGgtb3ZlcmZsb3ct
aGlkZGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAKIAogPHNjcmlwdD4K
ICAgICAoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIGRl
YnVnKCJUaGlzIHRlc3Qgb25seSB3b3JrcyBpbiB0aGUgdGVzdCBydW5uZXIuIik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nj
cm9sbC10by1hbmNob3ItaW4tb3ZlcmZsb3ctaGlkZGVuLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Nyb2xsLXRvLWFuY2hvci1pbi1vdmVyZmxvdy1oaWRkZW4u
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Nyb2xs
LXRvLWFuY2hvci1pbi1vdmVyZmxvdy1oaWRkZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcs
OSArMTcsOSBAQAogCiAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgewotICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoc2Nyb2xsVG9BbmNob3IsIDApOwogICAgICAgICAgICB9CiAgICAgICAgfQpAQCAtNDAs
OCArNDAsOCBAQAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBsb2coIkF1dG9tYXRl
ZCB0ZXN0IDogUEFTU0VEIik7CiAKLSAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgfSAgICAgCiAgICAgICAgIDwvc2NyaXB0Pgog
ICAgIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9sbGJhci1kb3Vi
bGUtY2xpY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3Jv
bGxiYXItZG91YmxlLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3Njcm9sbGJhci1kb3VibGUtY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDggQEAKIDxib2R5IHN0eWxlPSJtYXJnaW46MCI+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwvc2NyaXB0PgogCkBAIC0yNyw2ICsy
Nyw2IEBAIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKIGZ1bmN0aW9uIGZpbmlzaGVkKCkKIHsK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJTY3Jv
bGwgb2Zmc2V0IGlzICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmZsb3cnKS5zY3Jv
bGxUb3A7Ci0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0LWVsZW1lbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBmdW5jdGlvbiBzZW5kS2V5QW5kRXhwZWN0SW5k
ZXgoc2VsZWN0SWQsCiAgICAgICAgIGxvZygiY2FuJ3Qgc2V0IHNlbGVjdGVkSW5kZXggdG8gIiAr
IGluaXRpYWxJbmRleCArICcgKGlzICcgKyBzZWxlY3Quc2VsZWN0ZWRJbmRleCArICcpJyk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oa2V5KTsKICAgICBpZiAoc2VsZWN0LnNlbGVjdGVkSW5kZXggIT0gZXhwZWN0ZWRJ
bmRleCkgewogICAgICAgICBsb2coJ3NlbGVjdGVkSW5kZXggc2hvdWxkIGJlICcgKyBleHBlY3Rl
ZEluZGV4ICsgJyAoaXMgJyArIHNlbGVjdC5zZWxlY3RlZEluZGV4ICsgJykgYWZ0ZXIgYSAnICsg
a2V5ICsgJyBmcm9tIGluZGV4ICcgKyBpbml0aWFsSW5kZXgpOwpAQCAtMTEwLDcgKzExMCw3IEBA
IGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uKHNlbGVjdCkgewogZnVuY3Rpb24gc2VuZFdpdGhTaGlm
dEtleUFuZEV4cGVjdEluZGljZXMoc2VsZWN0SWQsIGtleSwgZXhwZWN0ZWRJbmRpY2VzKSB7CiAg
ICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdElkKTsKICAgICBz
ZWxlY3QuZm9jdXMoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXks
IFsic2hpZnRLZXkiXSk7CiAgICAgbm93U2VsZWN0ZWQgPSBnZXRTZWxlY3RlZEluZGljZXMoc2Vs
ZWN0KTsKICAgICBpZiAoIWVxdWFsQXJyYXlzKG5vd1NlbGVjdGVkLCBleHBlY3RlZEluZGljZXMp
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3Qtb25jaGFuZ2UtY3Jhc2gu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3Qtb25jaGFu
Z2UtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2VsZWN0LW9uY2hhbmdlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzEs
MTcgQEAKIDxodG1sPg0KICAgPGhlYWQ+DQogICAgIDxzY3JpcHQ+DQotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQ0KICAgICAgICAgew0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsNCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
DQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQogICAgICAgICB9DQogICAgICAgICB3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24gKCkNCiAgICAgICAgIHsNCiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7DQogICAgICAgICAgICAgZWxlbWVudC5v
bmNoYW5nZSA9IGZ1bmN0aW9uKCkgeyBlbGVtZW50LnNpemUgPSAzMDsgfQ0KICAgICAgICAgICAg
IGVsZW1lbnQuZm9jdXMoKTsNCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQ0KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCiAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgIC8vIFRoaXMgdHJpZ2dlcnMgc2VsZWN0aW9uIG9mIHNlY29u
ZCBvcHRpb24gaW4gdGhlIHNlbGVjdCBhbmQgcHJlc3MgRW50ZXIuDQogICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImUiKTsNCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7DQogICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gIjxz
cGFuIHN0eWxlPSdjb2xvcjogZ3JlZW47Jz5QQVNTOjwvc3Bhbj4gRGlkIG5vdCBjcmFzaCI7DQot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7DQogICAgICAgICAgICAgfQ0KICAg
ICAgICAgIH0NCiAgICAgPC9zY3JpcHQ+DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2VsZWN0aW9uY2hhbmdlLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NlbGVjdGlvbmNoYW5nZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0aW9uY2hhbmdlLWlmcmFtZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw5ICs2NSw5IEBAIHRlc3RzID0gWwogdmFyIGkgPSAwOwogdmFy
IHNlbGVjdGVkID0gbnVsbDsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogdmFyIGxvZyA9IFtdOwpAQCAtMTExLDkgKzExMSw5IEBAIGZ1bmN0aW9uIHRpbWVyKCkg
ewogICAgICAgICBzZWxlY3RlZCA9IG51bGw7CiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGkg
PT0gdGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0g
J25vbmUnOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3Rp
b25jaGFuZ2UtdXNlci1pbml0aWF0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zZWxlY3Rpb25jaGFuZ2UtdXNlci1pbml0aWF0ZWQuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0aW9uY2hhbmdlLXVzZXIt
aW5pdGlhdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdmFyIHdvcmxk
RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJwogYXR0YWNoTG9nZ2VyKGhlbGxvRGl2KTsK
IGF0dGFjaExvZ2dlcih3b3JsZERpdik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAg
IHZhciBldmVudHMgPSBbCiAgICAgICAgIGZ1bmN0aW9uICgpIHsgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oaGVsbG9EaXYub2Zmc2V0TGVmdCArIDEwLCBoZWxsb0Rpdi5vZmZzZXRUb3AgKyAyKTsg
fSwKQEAgLTEwMSw3ICsxMDEsNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYm
IHdpbmRvCiAgICAgZnVuY3Rpb24gdGltZXIoKSB7CiAgICAgICAgIC8vIE5lZWQgdG8gd2FpdCBv
bmUgbW9yZSBpdGVyYXRpb24gZm9yIGV2ZW50cyB0byBiZSBwcm9jZXNzZWQKICAgICAgICAgaWYg
KGogPj0gZXZlbnRzLmxlbmd0aCkgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZXZlbnRzW2pdKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLXByZXZlbnQt
ZGVmYXVsdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVj
dHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMt
cHJldmVudC1kZWZhdWx0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgZGl2
LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdHN0YXJ0JywgZnVuYwogZGl2LmZvY3VzKCk7CiB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZGl2LmZpcnN0Q2hpbGQsIDEpOwogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIsIFsic2hp
ZnRLZXkiXSk7CiAgICAgbG9nUmVzdWx0KCJDaGVjayBSaWdodCBhcnJvdyArIFNoaWZ0IiwgMSk7
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtl
eXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFy
dC1ieS1hcnJvdy1rZXlzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTIsOCArMTIsOCBAQCB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
CiBkaXYuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0c3RhcnQnLCBmdW5jdGlvbiAoZXZlbnQpIHsg
c2VsZWN0U3RhcnRDb3VudCsrOyB9KTsKIGRpdi5mb2N1cygpOwogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgbG9nUmVzdWx0KCdJbml0aWFsIHN0YXRlJywgMCk7CiAKICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCJyaWdodEFycm93Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxl
Y3RzdGFydC1ieS1kb3VibGUtdHJpcGxlLWNsaWNrcy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWRvdWJsZS10cmlwbGUtY2xpY2tzLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0
YXJ0LWJ5LWRvdWJsZS10cmlwbGUtY2xpY2tzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEw
ICsyNSwxMCBAQCBmdW5jdGlvbiBleHBlY3QodGl0bGUsIGV4cGVjdGVkQ291bnQsIGV4CiAgICAg
ICAgIGRvY3VtZW50LndyaXRlbG4oJ1BBU1MnKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciAmJiAhd2luZG93LmV2ZW50U2VuZGVyKQoraWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgZG9jdW1lbnQud3JpdGUoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBldmVudFNlbmRlcicpOwotZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworZWxzZSBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IHZhciB5ID0gc3Bhbi5vZmZzZXRUb3AgKyBzcGFuLm9mZnNldEhlaWdodCAvIDI7CiAgICAgZXhw
ZWN0KCdJbml0aWFsIHN0YXRlJywgMCwgJ2NhcmV0Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1kcmFnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1kcmFnLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDEwICsyMywxMCBAQCBmdW5jdGlvbiBleHBlY3QodGl0bGUsIGV4
cGVjdGVkQ291bnQsIGV4CiAgICAgICAgIGRvY3VtZW50LndyaXRlbG4oJ1BBU1MnKTsKIH0KIAot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiAhd2luZG93LmV2ZW50U2VuZGVyKQor
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgZG9jdW1l
bnQud3JpdGUoJ1RoaXMgdGVzdCByZXF1aXJlcyBldmVudFNlbmRlcicpOwotZWxzZSBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgIHZhciB5ID0gc3Bhbi5vZmZzZXRUb3AgKyBzcGFuLm9mZnNl
dEhlaWdodCAvIDI7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0
LWJ5LXNpbmdsZS1jbGljay13aXRoLXNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktc2luZ2xlLWNsaWNrLXdpdGgtc2hpZnQuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3Rh
cnQtYnktc2luZ2xlLWNsaWNrLXdpdGgtc2hpZnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTAgKzIzLDEwIEBAIGZ1bmN0aW9uIGV4cGVjdCh0aXRsZSwgZXhwZWN0ZWRDb3VudCwgZXgKICAg
ICAgICAgZG9jdW1lbnQud3JpdGVsbignUEFTUycpOwogfQogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyICYmICF3aW5kb3cuZXZlbnRTZW5kZXIpCitpZiAod2luZG93LnRlc3RSdW5u
ZXIgJiYgIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICBkb2N1bWVudC53cml0ZSgnVGhpcyB0ZXN0
IHJlcXVpcmVzIGV2ZW50U2VuZGVyJyk7Ci1lbHNlIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitlbHNlIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgdmFyIHkgPSBzcGFuLm9mZnNldFRvcCArIHNwYW4ub2Zmc2V0SGVpZ2h0IC8gMjsKICAgICBl
eHBlY3QoJ0luaXRpYWwgc3RhdGUnLCAwLCAnY2FyZXQnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWR1cmluZy1hdXRvc2Nyb2xsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtZHVyaW5nLWF1dG9zY3JvbGwu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0
c3RhcnQtZHVyaW5nLWF1dG9zY3JvbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkg
QEAKIDxoZWFkPgogICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGtpbGxfZXZlbnQoZXZlbnQpCkBAIC0yNCw3ICsy
NCw3IEBACiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpOwogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9IGdldFNlbGVjdGlvbigp
LmJhc2VOb2RlID8gIkZBSUwiIDogIlBBU1MiOwogCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMzIsNyArMzIsNyBA
QAogICAgICAgICAgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICAg
ICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAgICAg
ICAgICAgIHkgPSB0YXJnZXQub2Zmc2V0VG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1vbi1zZWxlY3RhbGwuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1vbi1z
ZWxlY3RhbGwuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2VsZWN0c3RhcnQtb24tc2VsZWN0YWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSAr
NCw5IEBACiA8cD5UaGlzIHRlc3QgZW5zdXJlcyBzZWxlY3RzdGFydCBldmVudCBmaXJlcyB3aGVu
IHNlbGVjdGluZyBhbGwuPC9wPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwogfQogCiB2YXIgdGFyZ2V0V2FzQm9keSA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1wcmV2ZW50LXNlbGVj
dGFsbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0
YXJ0LXByZXZlbnQtc2VsZWN0YWxsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LXByZXZlbnQtc2VsZWN0YWxsLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTgsOSArOCw5IEBACiA8L3NlY3Rpb24+CiA8cHJlPjxzY3JpcHQ+CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxs
YmFja3MoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKIH0KIAogdmFy
IGhhbmRsZXJPbkRpdldhc0NhbGxlZCA9IGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc2VsZWN0c3RhcnQtcHJldmVudC1zZWxlY3Rpb24tb24tcmlnaHQtY2xpY2suaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1wcmV2ZW50
LXNlbGVjdGlvbi1vbi1yaWdodC1jbGljay5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1wcmV2ZW50LXNlbGVjdGlvbi1vbi1yaWdo
dC1jbGljay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPGRpdiBpZD0idGVz
dCI+U2VsZWN0IGEgPHNwYW4gaWQ9InRhcmdldCI+d29yZDwvc3Bhbj4gaW4gdGhpcyBwYXJhZ3Jh
cGggYnkgYSByaWdodC1jbGljazwvZGl2PgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwogfQogCiB2YXIgaGFuZGxlcldhc0NhbGxl
ZCA9IGZhbHNlOwpAQCAtMTUsNyArMTUsNyBAQCBkb2N1bWVudC5ib2R5Lm9uc2VsZWN0c3RhcnQg
PSBmdW5jdGlvbiAoCiAKIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiAhd2luZG93LmV2ZW50U2Vu
ZGVyKQoraWYgKHdpbmRvdy50ZXN0UnVubmVyICYmICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAg
dGVzdC50ZXh0Q29udGVudCA9ICdUaGlzIHRlc3QgcmVxdWlyZXMgZXZlbnRTZW5kZXInOwogZWxz
ZSB7CiAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHks
IDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LWluLWFub3RoZXIt
ZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZl
bnQtaW4tYW5vdGhlci1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtaW4tYW5vdGhlci1mcmFtZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+DQogPGhlYWQ+DQogPHNjcmlwdD4NCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsNCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsN
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQogfQ0KIA0KIGZ1bmN0aW9uIGxvZyht
c2cpIHsNCkBAIC00NCw3ICs0NCw3IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpIHsNCiAgICAg
bG9nKCd3aW5kb3cuZXZlbnQgPSAnICsgZnJhbWVzWzFdLndpbmRvdy5ldmVudCArICdcbicpOw0K
ICAgICBsb2coJy0tLSBUZXN0IGVuZHMgLS0tXG4nKTsNCiANCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiB9DQog
PC9zY3JpcHQ+DQogPC9oZWFkPg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NldC1l
dmVudC10by1udWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2V0LWV2ZW50LXRvLW51bGwuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjEs
OCArMjEsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkgew0KICAgICBuZXdFdmVudC5pbml0TW91c2VF
dmVudCgibW91c2VvdmVyIiwgZmFsc2UsIGZhbHNlLCB3aW5kb3csIDAsIDEwLCAxMCwgMTAsIDEw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgdGFyZ2V0KTsNCiAgICAgdGFyZ2V0LmRp
c3BhdGNoRXZlbnQobmV3RXZlbnQpOw0KIA0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7DQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7DQogICAgIH0NCiB9DQogDQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2hv
dy1tb2RhbC1kaWFsb2ctb25ibHVyLW9uZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zaG93LW1vZGFsLWRpYWxvZy1vbmJsdXItb25mb2N1cy5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaG93LW1vZGFsLWRp
YWxvZy1vbmJsdXItb25mb2N1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDE0ICs1LDE0IEBA
CiAgICAgewogICAgICAgICB3aW5kb3cub25mb2N1cyA9IG9uRm9jdXNGdW5jOwogICAgICAgICB3
aW5kb3cub25ibHVyID0gb25CbHVyRnVuYzsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3Mo
KTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgICAgICAv
LyBEdW1wUmVuZGVyVHJlZVdpbmRvdyBkb2VzIG5vdCByZXNwb25kIHRvIGZvY3VzIGV2ZW50cy4g
IEZvcmNpbmcgb25ibHVyIGV2ZW50IHNvCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSByZXN1bHRz
IG1hdGNoZXMgd2hhdCB5b3UnbGwgc2VlIGluIHRoZSBicm93c2VyLgotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0V2luZG93SXNLZXkoZmFsc2UpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXaW5kb3dJc0tleShmYWxzZSk7CiAgICAgICAgIH0KICAgICAgICAgc2hvd01v
ZGFsRGlhbG9nKCJyZXNvdXJjZXMvbW9kYWwtZGlhbG9nLmh0bWwiKTsKICAgICB9CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaW11bGF0ZWQtY2xpY2stY29vcmRzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2ltdWxhdGVkLWNsaWNrLWNvb3Jkcy5o
dG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaW11bGF0
ZWQtY2xpY2stY29vcmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIDxw
cmUgaWQ9Im91dCI+PC9wcmU+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24g
Y2xpY2tPbihlbGVtZW50KQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2ltdWxh
dGVkLWNsaWNrLWRpc2FibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc2ltdWxhdGVkLWNsaWNrLWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NpbXVsYXRlZC1jbGljay1kaXNhYmxlZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNiw4ICsxNiw4IEBAIGZ1bmN0aW9uIGNsaWNrT24oZWxlbWVudCkK
IAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgICBjbGlja09uKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJykpOwogICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLnRleHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RhcmdldCcpLmNoZWNrZWQgPyAnRkFJTCcgOiAnUEFTUyc7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zaW11bGF0ZWQta2V5LXN0YXRlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2ltdWxhdGVkLWtleS1zdGF0ZS5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zaW11bGF0ZWQta2V5LXN0YXRl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8L3ByZT4KIDxzY3JpcHQ+CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5r
Iik7CiBsaW5rLmZvY3VzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGFjZS1z
Y3JvbGwtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
cGFjZS1zY3JvbGwtZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc3BhY2Utc2Nyb2xsLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcs
OCArNyw4IEBAIFJFR1JFU1NJT04ocjI4NjY5KTogUGFnZSBzY3JvbGxzIGRvd24gd2gKIGRvY3Vt
ZW50Lm9ua2V5cHJlc3M9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2U7fQogZG9jdW1lbnQub25zY3Jv
bGw9ZnVuY3Rpb24oKXthbGVydCgiRkFJTCAtIHNjcm9sbGVkISIpO30KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7CiB9CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwZWNpYWwta2V5LWV2ZW50cy1pbi1pbnB1dC10
ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BlY2lhbC1r
ZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc3BlY2lhbC1rZXktZXZlbnRzLWluLWlucHV0LXRleHQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdr
ZXlkb3duJywgbG9nRXZlCiBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGxvZ0V2ZW50
LCBmYWxzZSk7CiBpbnB1dC5mb2N1cygpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgbG9nKCI8YnI+
QW1wZXJzYW5kOiIpOwogICAgZXZlbnRTZW5kZXIua2V5RG93bigiNyIsIFsic2hpZnRLZXkiXSk7
CiAgICBsb2coIjxicj5CYWNrc3BhY2U6Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zdGFuZGFsb25lLWltYWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdGFuZGFsb25lLWltYWdlLWRyYWctdG8tZWRpdGFibGUu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3RhbmRh
bG9uZS1pbWFnZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDgg
KzE4LDggQEAKICAgICAgIGlmICgrK251bUZyYW1lc0xvYWRlZCA9PSAyKQogICAgICAgICBydW5U
ZXN0KCk7CiAgICAgfQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICA8L3Nj
cmlwdD4KICAgPGZyYW1lc2V0IHJvd3M9IjEwMHB4LCAxMDBweCwgKiI+CiAgICAgPGZyYW1lIG9u
bG9hZD0iZnJhbWVMb2FkZWQoKSIgc3JjPSJyZXNvdXJjZXMvc3RhbmRhbG9uZS1pbWFnZS1kcmFn
LXRvLWVkaXRhYmxlLWZyYW1lLmh0bWwiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c3RvcC1pbW1lZGlhdGUtcHJvcGFnYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zdG9wLWltbWVkaWF0ZS1wcm9wYWdhdGlvbi5odG1sCShyZXZpc2lvbiAx
MjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdG9wLWltbWVkaWF0ZS1wcm9wYWdh
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGV2ZW50SGFuZGxl
ck9uZShldmVudCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N0b3AtbG9hZC1p
bi11bmxvYWQtaGFuZGxlci11c2luZy1kb2N1bWVudC13cml0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N0b3AtbG9hZC1pbi11bmxvYWQtaGFuZGxlci11c2lu
Zy1kb2N1bWVudC13cml0ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zdG9wLWxvYWQtaW4tdW5sb2FkLWhhbmRsZXItdXNpbmctZG9jdW1lbnQtd3Jp
dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAg
ewpAQCAtMTIsMTUgKzEyLDE1IEBACiAgICAgZnVuY3Rpb24gcGFzcygpCiAgICAgewogICAgICAg
ICBsb2coIlBBU1MiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmFpbCgpCiAgICAgewogICAgICAgICBsb2coIkZB
SUwiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
fQogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1YmZyYW1lLXN0b3AtbG9hZC1p
bi11bmxvYWQtaGFuZGxlci11c2luZy1kb2N1bWVudC13cml0ZS5odG1sIj48L2lmcmFtZT4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N0b3AtbG9hZC1pbi11bmxvYWQtaGFuZGxlci11
c2luZy13aW5kb3ctc3RvcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3N0b3AtbG9hZC1pbi11bmxvYWQtaGFuZGxlci11c2luZy13aW5kb3ctc3RvcC5odG1sCShy
ZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdG9wLWxvYWQtaW4t
dW5sb2FkLWhhbmRsZXItdXNpbmctd2luZG93LXN0b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDggQEAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgewpAQCAtMTIsMTUgKzEyLDE1IEBACiAgICAg
ZnVuY3Rpb24gcGFzcygpCiAgICAgewogICAgICAgICBsb2coIlBBU1MiKTsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
ZmFpbCgpCiAgICAgewogICAgICAgICBsb2coIkZBSUwiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL3N1YmZyYW1lLXN0b3AtbG9hZC1pbi11bmxvYWQtaGFuZGxlci11c2luZy13aW5k
b3ctc3RvcC5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N0
b3BQcm9wYWdhdGlvbi1jaGVja2JveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3N0b3BQcm9wYWdhdGlvbi1jaGVja2JveC5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdG9wUHJvcGFnYXRpb24tY2hlY2tib3guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgdGVzdCBzaG91bGQgc2F5IFBBU1MgNCB0
aW1lcy4KIDxwPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBjaGVja2JveDEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2tib3gxIik7CiBjaGVja2JveDEuY2xpY2soKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N0b3BQcm9wYWdhdGlvbi1zdWJtaXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdG9wUHJvcGFnYXRpb24t
c3VibWl0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3N0b3BQcm9wYWdhdGlvbi1zdWJtaXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDkg
QEAgc2VlIGEgbGluayBiZWxvdyBhbmQgdGhlIHRleHQgRkFJTC4gT24gcwogPHA+CiBGQUlMCiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHN1
Ym1pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZTEiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3N1Ym1pdC1yZXNldC1uZXN0ZWQtYnViYmxlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VibWl0LXJlc2V0LW5lc3RlZC1idWJibGUu
aHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VibWl0
LXJlc2V0LW5lc3RlZC1idWJibGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBA
QAogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLCB3aW5k
b3dfbGlzdGVuZXIsIHRydWUpOyAKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdvdXRlcl9mb3JtJykuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IiwgcmVnX2xpc3RlbmVyLCB0
cnVlKTsgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQt
dGltZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGFsbCBKUyB0aW1l
cnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMgZmlyZWQsIHNvIHRo
YXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hpbGUgdGhlIGRvY3Vt
ZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLicpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2Vi
S2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXknLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNo
ZVByZWZlcmVuY2VLZXknLCAxKTsKIAogCiBvbnBhZ2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90YWItY3Jhc2gtd2l0aC1pbWFnZS1tYXAuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90YWItY3Jhc2gtd2l0aC1p
bWFnZS1tYXAuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdGFiLWNyYXNoLXdpdGgtaW1hZ2UtbWFwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDgg
KzEyLDggQEAKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlu
azEiKS5mb2N1cygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdGFiLWZvY3VzLWFu
Y2hvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RhYi1mb2N1
cy1hbmNob3IuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdGFiLWZvY3VzLWFuY2hvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwxNCArMTUsMTQg
QEAgZnVuY3Rpb24gZmFpbCgpCiAgICAgZWwudGV4dENvbnRlbnQgPSAnRkFJTCc7CiB9CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCdXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleScsIGZhbHNlKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleScsIGZh
bHNlKTsKIH0KIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBpZiAoIXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE7IGkrKykgewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdGFiLWZvY3VzLWhpZGRlbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RhYi1mb2N1cy1oaWRkZW4uaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdGFiLWZvY3VzLWhpZGRlbi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDEyICszLDEyIEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogewotICAgIGlmICgh
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykg
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdGFiaW5kZXgtZm9jdXMtY2hhaW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90YWJpbmRleC1mb2N1cy1j
aGFpbi5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
YWJpbmRleC1mb2N1cy1jaGFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBA
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBrZXkgPSAwOwogZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5k
b3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwogIAogICAgIHZhciBlbGVtID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvY3VzTWUnKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvd2hlZWxldmVudC1kaXJlY3Rpb24taW52ZXJ0ZWQtZnJvbS1kZXZpY2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aGVlbGV2ZW50LWRpcmVjdGlvbi1pbnZl
cnRlZC1mcm9tLWRldmljZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy93aGVlbGV2ZW50LWRpcmVjdGlvbi1pbnZlcnRlZC1mcm9tLWRldmljZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNjcm9sbEhhbmRsZXIo
ZXZlbnQpIHsKIH07CiB0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBzY3JvbGxIYW5k
bGVyLCBmYWxzZSk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93
LmV2ZW50U2VuZGVyKSB7CitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmV2ZW50U2Vu
ZGVyKSB7CiAgICAgZGVidWcoInNlbmRpbmcgc2Nyb2xsIGV2ZW50IHRvIGdyZWVuIHRhcmdldCIp
OwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHQub2Zmc2V0TGVmdCArIDEwLCB0Lm9mZnNl
dFRvcCArIDEwKTsKICAgICBldmVudFNlbmRlci5jb250aW51b3VzTW91c2VTY3JvbGxCeSgwLDEw
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4taG9yaXpvbnRh
bC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvd2hlZWxldmVudC1pbi1ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi1o
b3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCAr
MTIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZGlzcGF0Y2hXaGVlbEV2ZW50KCkK
QEAgLTM3LDggKzM3LDggQEAKICAgICAgICAgICAgICAgICBsb2coIndpbmRvdy5zY3JvbGxYOiAi
ICsgd2luZG93LnNjcm9sbFgpOwogICAgICAgICAgICAgICAgIGxvZygid2luZG93LnNjcm9sbFk6
ICIgKyB3aW5kb3cuc2Nyb2xsWSk7CiAKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBtb3VzZXdoZWVsSGFuZGxl
cihlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi1zY3JvbGxp
bmctZGl2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2hlZWxl
dmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgICAgICAgICAgdmFyIGV2ZW50OwogICAgICAgICAg
ICAgdmFyIGRpdjsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNo
V2hlZWxFdmVudCgpCiAgICAgICAgICAgICB7CkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImRpdi5zY3JvbGxUb3AiLCAid2luZG93LmV4cGVjdGVkU2Nyb2xsVG9w
Iik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImRpdi5zY3JvbGxMZWZ0IiwgIndpbmRvdy5l
eHBlY3RlZFNjcm9sbExlZnQiKTsKIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVy
KGUpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLXZlcnRpY2Fs
LXNjcm9sbGJhci1pbi1ydGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy93aGVlbGV2ZW50LWluLXZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi12ZXJ0
aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDgg
QEAKICAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBmdW5jdGlvbiBkaXNwYXRjaFdoZWVsRXZlbnQoKQpAQCAtMzYsOCArMzYsOCBAQAogICAg
ICAgICAgICAgICAgIGxvZygid2luZG93LnNjcm9sbFg6ICIgKyB3aW5kb3cuc2Nyb2xsWCk7CiAg
ICAgICAgICAgICAgICAgbG9nKCJ3aW5kb3cuc2Nyb2xsWTogIiArIHdpbmRvdy5zY3JvbGxZKTsK
IAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTIuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50cy1idWJi
bGUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQ+
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBmdW5jdGlvbiB0ZXN0
KCkKIHsKQEAgLTE4LDggKzE4LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAKIGZ1bmN0aW9uIGZpbmlz
aCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHdpbmRvdy5vbmNsaWNr
ID0gZnVuY3Rpb24oZSkgeyBsb2coIldpbmRvdy5vbkNsaWNrIGZpcmVkLiAgVGVzdCBQYXNzZWQu
Iik7IH07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJs
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1ldmVu
dHMtYnViYmxlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3dpbmRvdy1ldmVudHMtYnViYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5
IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiBmdW5jdGlvbiB0ZXN0KCkKIHsKQEAgLTE4LDggKzE4LDggQEAgZnVuY3Rpb24gdGVz
dCgpCiAKIGZ1bmN0aW9uIGZpbmlzaCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIHdpbmRvdy5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyBsb2coIldpbmRvdy5vbkNsaWNr
IGZpcmVkLiAgVGVzdCBGYWlsZWQuIik7IH07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy93aW5kb3ctZXZlbnRzLWNhcHR1cmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWNhcHR1cmUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50cy1jYXB0dXJlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBmdW5jdGlvbiB0ZXN0KCkKIHsKQEAgLTE4
LDggKzE4LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAKIGZ1bmN0aW9uIGZpbmlzaCgpCiB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAgICAgICAgIAogZnVuY3Rpb24gbG9nKHRleHQp
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1sb2FkLWNhcHR1cmUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctbG9hZC1jYXB0
dXJlLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dp
bmRvdy1sb2FkLWNhcHR1cmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHdpbmRvd0V2
ZW50SGFuZGxlcigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCA9ICJQQVNTISI7IH0KIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgd2luZG93RXZl
bnRIYW5kbGVyLCB0cnVlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9u
ZXJyb3IxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93
LW9uZXJyb3IxLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3dpbmRvdy1vbmVycm9yMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gcHJpbnQo
bWVzc2FnZSwgY29sb3IpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ct
b25lcnJvcjIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5k
b3ctb25lcnJvcjIuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvd2luZG93LW9uZXJyb3IyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBA
CiA8cD5UZXN0IHRoYXQgdW5jYXVnaHQgZXhjZXB0aW9ucyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRo
ZSB3aW5kb3cub25lcnJvciBoYW5kbGVyLiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODUxOSI+QnVnIDg1MTk8L2E+LjwvcD4KIDxkaXYgaWQ9InJlc3Vs
dCI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogZnVuY3Rpb24gbG9nKG1zZykgewpAQCAtMTgsOCArMTgsOCBAQCB3aW5kb3cub25lcnJv
ciA9IGZ1bmN0aW9uKG1zZywgdXJsLCBsaW5lCiAgICAgdXJsID0gdXJsID8gdXJsLm1hdGNoKCAv
W15cL10rXC8/JC8gKVswXSA6IHVybDsKICAgICBsb2coIk1haW4gZnJhbWUgd2luZG93Lm9uZXJy
b3I6ICIgKyBtc2cgKyAiIGF0ICIgKyB1cmwgKyAiOiIgKyBsaW5lKTsKICAgICAKLSAgICBpZiAo
Kyt1bmhhbmRsZWRFcnJvckNvdW50ID09PSAzICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICgr
K3VuaGFuZGxlZEVycm9yQ291bnQgPT09IDMgJiYgd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjMuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy93aW5kb3ctb25lcnJvcjQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy93aW5kb3ctb25lcnJvcjQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3I0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhtc2cp
IHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBt
c2cgKyAiPGJyPiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJv
cjUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25l
cnJvcjUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
d2luZG93LW9uZXJyb3I1Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjYuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjYuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3I2Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8cD5UZXN0IHRoYXQgc3ludGF4IGVy
cm9yIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIHdpbmRvdy5vbmVycm9yIGhhbmRsZXIuIDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE5Ij5CdWcgODUx
OTwvYT4uPC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjcuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3I3Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOCArMyw4IEBACiA8cD5UZXN0IHRoYXQgZXhjZXB0aW9uIGluIHdpbmRvdy5vbmVy
cm9yIHdvbid0IGxlYWQgdG8gcmVjdXJzaXZlIHdpbmRvdy5vbmVycm9yIGNhbGwuIDxhIGhyZWY9
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE5Ij5CdWcgODUxOTwv
YT4uPC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy93aW5kb3ctb25lcnJvcjguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjguaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3I4Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiA8cD5UZXN0IHRoYXQgd2luZG93Lm9uZXJyb3IgaXMgY2FsbGVkIG9u
IHdpbmRvdyBvYmplY3QuIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NTE5Ij5CdWcgODUxOTwvYT4uPC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjkuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjkuaHRtbAko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJy
b3I5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0IHRoYXQgd2hl
biB3aW5kb3cub25lcnJvciBoYW5kbGVyIGlzIGNhbGxlZCwgd2luZG93LmV2ZW50IGlzIHRoZSBj
b3JyZXNwb25kaW5nIEVycm9yRXZlbnQgb2JqZWN0LiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUxOSI+QnVnIDg1MTk8L2E+LjwvcD4KIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKQEAgLTIzLDggKzIzLDggQEAgd2luZG93
Lm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIHVybCwgbGluZQogICAgIGxvZygid2luZG93LmV2ZW50
Lm1lc3NhZ2UgPSAiICsgd2luZG93LmV2ZW50Lm1lc3NhZ2UpOwogICAgIGxvZygid2luZG93LmV2
ZW50LmZpbGVuYW1lID0gIiArIGxhc3RQYXRoQ29tcG9uZW50KHdpbmRvdy5ldmVudC5maWxlbmFt
ZSkpOwogICAgIGxvZygid2luZG93LmV2ZW50LmxpbmVubyA9ICIgKyB3aW5kb3cuZXZlbnQubGlu
ZW5vKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxMC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1vbmVycm9yMTAuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9u
ZXJyb3IxMC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+VGVzdCB0aGF0
ICJlcnJvciIgZXZlbnQgbGlzdGVuZXIgYWRkZWQgd2l0aCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
ciBpcyBpbnZva2VkIGZvciB1bmNhdWNodCBleGNlcHRpb25zLiA8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUxOSI+QnVnIDg1MTk8L2E+LjwvcD4KIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlv
biBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5l
ckhUTUwgKz0gbXNnICsgIjxicj4iOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2lu
ZG93LW9uZXJyb3IxMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3dpbmRvdy1vbmVycm9yMTEuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDgg
KzcsOCBAQAogPHA+VGVzdCB0aGF0IHdpbmRvdy5vbmVycm9yIGlzIGNhbGxlZCBvbiB3aW5kb3cg
b2JqZWN0LiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODUxOSI+QnVnIDg1MTk8L2E+LjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4iOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1vbmVycm9yMTIuaHRtbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxMi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPHA+VGVzdCB0aGF0IHdpbmRvdy5v
bmVycm9yIGlzIGNhbGxlZCBvbiB3aW5kb3cgb2JqZWN0IGZvciBldmVudHMgY3JlYXRlZCB1c2lu
ZyBkb2N1bWVudC5jcmVhdGVFdmVudCgiZXJyb3IiKS4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTkiPkJ1ZyA4NTE5PC9hPi48L3A+CiA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbG9n
KG1zZykgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1M
ICs9IG1zZyArICI8YnI+IjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1v
bmVycm9yMTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5k
b3ctb25lcnJvcjEzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3dpbmRvdy1vbmVycm9yMTMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDgg
QEAKIHZhbHVlIGlzIG5vdCAndHJ1ZScuIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NzExOSI+QnVnIDY3MTE5PC9hPi48L3A+CiA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbG9nKG1zZykg
ewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1z
ZyArICI8YnI+IjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1vbmVycm9y
MTQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25l
cnJvcjE0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3dpbmRvdy1vbmVycm9yMTQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAKIHZh
bHVlIGlzICd0cnVlJy4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY3MTE5Ij5CdWcgNjcxMTk8L2E+LjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4i
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxNS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1vbmVycm9yMTUuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9u
ZXJyb3IxNS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogZXJyb3IgZXZlbnQu
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MTE5Ij5C
dWcgNjcxMTk8L2E+LjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4iOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxNi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1vbmVycm9yMTYuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IxNi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogdmFsdWUgaXMgJ2ZhbHNlJy4gPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MTE5Ij5CdWcgNjcxMTk8
L2E+LjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4iOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvd2luZG93LW9uZXJyb3ItZXhjZXB0aW9uLWluLWF0dHIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvci1leGNlcHRpb24taW4t
YXR0ci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93
aW5kb3ctb25lcnJvci1leGNlcHRpb24taW4tYXR0ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05
LDggKzksOCBAQCBpbiBhdHRyaWJ1dGUgaGFuZGxlci4gPGEgaHJlZj0iaHR0cHM6Ly9iCiA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxidXR0b24gaWQ9ImJ0bjEiIG9uY2xpY2s9Im51bGwubSgp
Ij5CdXR0b24gMTwvYnV0dG9uPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBs
b2cobXNnKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhU
TUwgKz0gbXNnICsgIjxicj4iOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93
LW9uZXJyb3Itc3ludGF4LWVycm9yLWluLWF0dHIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvci1zeW50YXgtZXJyb3ItaW4tYXR0ci5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctb25l
cnJvci1zeW50YXgtZXJyb3ItaW4tYXR0ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzks
OCBAQCBpbiBhdHRyaWJ1dGUgaGFuZGxlci4gPGEgaHJlZj0iaHR0cHM6Ly9iCiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KIDxidXR0b24gaWQ9ImJ0bjEiIG9uY2xpY2s9IiUiPkJ1dHRvbiAxPC9i
dXR0b24+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtc2cgKyAi
PGJyPiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy94c2wtb25sb2FkLnhzbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy94c2wtb25sb2FkLnhzbAkocmV2aXNp
b24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMveHNsLW9ubG9hZC54c2wJKHdv
cmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIAogPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYm9k
eSI+CiAJPGJvZHkgb25sb2FkPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0hhbmRsZWQgbG9hZCBldmVudC4nKSki
PgotCQk8c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyB9PC9zY3JpcHQ+CisJCTxzY3JpcHQ+aWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOyB9PC9zY3JpcHQ+CiAJCTxw
PlRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgdGhhdCBjaGVja3MgZm9yIGEgcHJvYmxlbSB3aGVy
ZSBwYXJzaW5nIHdvdWxkIGJlIHN0dWNrIHRydWUgYW5kIHlvdSdkIG5ldmVyIGdldCBhIGxvYWQg
ZXZlbnQgZm9yIGFuIFhTTC1nZW5lcmF0ZWQgcGFnZTwvcD4KIAkJPHA+SWYgdGhlIHRlc3Qgc3Vj
Y2VlZHMsIHRoZSBuZXh0IHBhcmFncmFwaCB3aWxsIHNheSAiaGFuZGxlZCBsb2FkIGV2ZW50Ii4g
SWYgdGhhdCBtZXNzYWdlIGlzIG1pc3NpbmcsIHRoZSB0ZXN0IGZhaWxlZC48L3A+CiAgICAgICAg
ICAgICAgICAgPHAgaWQ9InJlc3VsdCIvPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
em9vbS1kYmxjbGljay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3pvb20tZGJsY2xpY2suaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvem9vbS1kYmxjbGljay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5
IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgLy8gWm9vbWVkLgpAQCAt
NjQsMTEgKzY0LDExIEBACiAgICAgem9vbVBhZ2VPdXQoKTsKICAgICB3aW5kb3cucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiZGJsY2xpY2siLCB6b29tZWQsIGZhbHNlKTsKIAotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsKICAg
ICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFyZWEpOwogCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZXNvdXJjZXMvYmVmb3JlLXVubG9hZC1pbi1zdWJmcmFtZS1kZXN0aW5hdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9iZWZvcmUtdW5sb2Fk
LWluLXN1YmZyYW1lLWRlc3RpbmF0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9iZWZvcmUtdW5sb2FkLWluLXN1YmZyYW1lLWRl
c3RpbmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiBQQVNTOiAyLzIK
IDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9iZWZvcmUtdW5sb2FkLWluLXN1YmZyYW1l
LWZhaWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvYmVmb3JlLXVubG9hZC1pbi1zdWJmcmFtZS1mYWlsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9iZWZvcmUtdW5sb2FkLWluLXN1
YmZyYW1lLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIEZBSUwKIDxz
Y3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9kcmFnLW91dHNpZGUtd2luZG93LWZyYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2RyYWct
b3V0c2lkZS13aW5kb3ctZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2RyYWctb3V0c2lkZS13aW5kb3ctZnJhbWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTIsOSArMTIsOSBAQCBmdW5jdGlvbiBtb3VzZW1vdmVkKGV2ZW50
KQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDE1MCwgMTAwKTsKICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgMTAw
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9maWxlLWZvci1kcmFn
LXRvLW5hdmlnYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tbmF2aWdhdGUuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8t
bmF2aWdhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKIFBBU1MKIDxzY3Jp
cHQ+Ci1sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3Vy
Y2VzL2ZpbGUtZm9yLXByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9maWxlLWZvci1wcmV2ZW50LWRyYWct
dG8tbmF2aWdhdGUuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzb3VyY2VzL2ZpbGUtZm9yLXByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogRkFJTCAtIERyYWcgbmF2aWdhdGlvbiBvY2N1
cnJlZCBldmVuIHRob3VnaCB0aGUgcGFnZSB0cmllZCB0byBwcmV2ZW50IGl0LgogPHNjcmlwdD4K
IC8vIFRoaXMgaXMgbmV2ZXIgY2FsbGVkLCBidXQgcHJldmVudHMgdGhlIHRlc3QgZnJvbSB0aW1p
bmcgb3V0IGlmIHdlIGV2ZXIgZmFpbCB0aGlzIHRlc3QuCi1sYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1w
b3J0LW11bHRpLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5k
aW5nIG11bHRpcGxlIHBvcnRzIHRocm91Z2ggTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UiKTsKQEAg
LTcyLDggKzcyLDggQEAgZnVuY3Rpb24gdGVzdFRyYW5zZmVycygpIHsKICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJzZW5kLXR3by1wb3J0czogZmFpbGVkIHRvIHRyYW5zZmVyIHR3byBwb3J0
cyIpOwogICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEuaWQgPT0gImRvbmUiKSB7CiAgICAg
ICAgICAgICBkZWJ1ZygnPGJyPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFu
PicpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCBt
ZXNzYWdlICIgKyBldmVudC5kYXRhKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcmVzb3VyY2VzL21vZGFsLWRpYWxvZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tb2RhbC1kaWFsb2cuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL21vZGFsLWRpYWxv
Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDEyICszLDEyIEBACiA8c2NyaXB0PgogICAgIGZ1
bmN0aW9uIGNsb3NlV2luZG93KCkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgICAgICBvcGVuZXIubG9nKCJNb2Rh
bCBkaWFsb2cgY2xvc2luZy4iKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWJvcnRNb2RhbCgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWJvcnRNb2RhbCgpOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlKCk7CiAgICAgfQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL25vLWJsdXItcmVzdWx0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL25vLWJsdXItcmVz
dWx0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jl
c291cmNlcy9uby1ibHVyLXJlc3VsdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJmYWlsZWREaXYiKS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImRpc3BsYXk6bm9uZTsiKTsK
ICAgICAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL29wZW4td2luZG93LWZyb20t
YW5vdGhlci1mcmFtZS1vdGhlckZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcmVzb3VyY2VzL29wZW4td2luZG93LWZyb20tYW5vdGhlci1mcmFtZS1vdGhl
ckZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Jlc291cmNlcy9vcGVuLXdpbmRvdy1mcm9tLWFub3RoZXItZnJhbWUtb3RoZXJGcmFtZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogICAgICAgICAgICAgZnVuY3Rpb24gZG9u
ZUhhbmRsZXIoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3aW5Ub0Nsb3NlLmNsb3NlZCkKICAg
ICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChkb25lSGFuZGxlciwgMSk7Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9wb3B1cC1hbGxvd2VkLWZyb20tZ2VzdHVy
ZS1pbml0aWF0ZWQtZm9ybS1zdWJtaXQtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJlLWlu
aXRpYXRlZC1mb3JtLXN1Ym1pdC10YXJnZXQuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BvcHVwLWFsbG93ZWQtZnJvbS1nZXN0dXJl
LWluaXRpYXRlZC1mb3JtLXN1Ym1pdC10YXJnZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4
ICs0LDggQEAKICAgICAgICAgICAgIHZhciBwYXJlbnRXaW5kb3cgPSB3aW5kb3cub3BlbmVyOwog
ICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBwYXJlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKTsKICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1Mi
OwotICAgICAgICAgICAgaWYgKHBhcmVudFdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICBwYXJlbnRXaW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgaWYgKHBhcmVudFdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHBhcmVudFdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgPC9z
Y3JpcHQ+CiAgICAgPC9oZWFkPgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcmVzb3VyY2VzL3Njcm9sbC1ldmVudC1tb2RhbC1kaWFsb2cuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc2Nyb2xsLWV2ZW50LW1vZGFsLWRp
YWxvZy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZXNvdXJjZXMvc2Nyb2xsLWV2ZW50LW1vZGFsLWRpYWxvZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDggKzMsOCBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBjbG9zZVdpbmRvdygpCiAgICAg
ewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5hYm9ydE1vZGFsKCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5hYm9ydE1vZGFsKCk7CiAgICAg
ICAgIH0KICAgICAgICAgY2xvc2UoKTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1pbWFnZS1kcmFnLXRvLWVkaXRhYmxlLWZyYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N0YW5k
YWxvbmUtaW1hZ2UtZHJhZy10by1lZGl0YWJsZS1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1pbWFnZS1k
cmFnLXRvLWVkaXRhYmxlLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTUgKzUsMTUg
QEAgVGhpcyBsYXlvdXQgdGVzdCBpcyBjaGVja3MgdGhhdCB3ZSBkb24ndAogPHNjcmlwdD4KIGZ1
bmN0aW9uIHdhaXRGb3JJbWFnZUxvYWQoKQogewotICAgIGlmICghd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHZhciBpbWcgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWci
KVswXTsKICAgICBpZiAoaW1nLndpZHRoICE9IDApCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSwgZmFsc2UpOwogICAgIH0K
IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdG9wUHJvcGFnYXRp
b24tc3VibWl0LXRhcmdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3Jlc291cmNlcy9zdG9wUHJvcGFnYXRpb24tc3VibWl0LXRhcmdldC5odG1sCShyZXZpc2lv
biAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3RvcFByb3Bh
Z2F0aW9uLXN1Ym1pdC10YXJnZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IFBBU1M8YnI+CiA8c2NyaXB0PgogZG9jdW1lbnQud3JpdGUobG9jYXRpb24uc2VhcmNoKTsKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNv
dXJjZXMvdGFiaW5kZXgtZm9jdXMtYmx1ci1hbGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3RhYmluZGV4LWZvY3VzLWJsdXItYWxsLmpzCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvdGFiaW5k
ZXgtZm9jdXMtYmx1ci1hbGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiB2YXIgY29uc29sZU91dHB1dCA9
IG51bGw7CkBAIC02NSw4ICs2NSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGRvY3VtZW50Lndy
aXRlKHJlc3VsdFN1bW1hcnkpOwogICAgIGRvY3VtZW50LmNsb3NlKCk7CiAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gZm9jdXNFYWNoQ2hpbGQoZWxlbSkgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NvcGVkL2VkaXRpbmctY29tbWFuZHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY29wZWQvZWRpdGluZy1j
b21tYW5kcy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zY29wZWQvZWRpdGluZy1jb21tYW5kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYs
OCBAQAogPHByZT4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgY29tbWFuZHMgPSBb
CiAgICAge25hbWU6ICdCYWNrQ29sb3InLCB2YWx1ZTogJ2JsdWUnfSwKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9ibHVyLWZvY3VzLXdpbmRvdy1zaG91bGQtYmx1
ci1mb2N1cy1lbGVtZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NjcmlwdC10ZXN0cy9ibHVyLWZvY3VzLXdpbmRvdy1zaG91bGQtYmx1ci1mb2N1cy1lbGVtZW50
LmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQt
dGVzdHMvYmx1ci1mb2N1cy13aW5kb3ctc2hvdWxkLWJsdXItZm9jdXMtZWxlbWVudC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQCBkaXZFbGVtZW50Lm9uZm9jdXMgPSBkaXZFbGVt
ZW50Lm9uYmx1ciA9CiAgICAgdGFyZ2V0cy5wdXNoKGUudGFyZ2V0KTsKIH07CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0V2luZG93SXNLZXkoZmFsc2UpOwotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRXaW5kb3dJc0tleSh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHdp
bmRvdy50ZXN0UnVubmVyLnNldFdpbmRvd0lzS2V5KGZhbHNlKTsKKyAgICB3aW5kb3cudGVzdFJ1
bm5lci5zZXRXaW5kb3dJc0tleSh0cnVlKTsKICAgICAKICAgICBpbm5lckRpdi5mb2N1cygpOwog
ICAgIGRpdkVsZW1lbnQuZm9jdXMoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nj
cmlwdC10ZXN0cy9vbnVubG9hZC1iYWNrLXRvLXBhZ2UtY2FjaGUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL29udW5sb2FkLWJhY2stdG8tcGFn
ZS1jYWNoZS5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2NyaXB0LXRlc3RzL29udW5sb2FkLWJhY2stdG8tcGFnZS1jYWNoZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtNSw4ICs1LDggQEAgb25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAg
IHRlc3RQYXNzZWQoJ1dlYlRpbWluZyBhc3NlcnRzIGluIEZyYW1lTG9hZGVyLmNwcCBkaWQgbm90
IGZpcmUnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVu
Y2VLZXknLCAxKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5JywgMSk7CiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJl
ZiA9ICdkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pm9udW5sb2FkPWZ1bmN0aW9uKCkge30sb25sb2Fk
PWZ1bmN0aW9uKCl7d2luZG93Lm5hbWUgPSBcJ25hdmlnYXRlZFwnO2hpc3RvcnkuYmFjaygpO308
JyArICcvc2NyaXB0Pic7fSwgMCk7CiAgICAgfQogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZW11bGF0ZS10b3VjaC1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRvdWNoLWV2ZW50cy5odG1sCShyZXZp
c2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9lbXVsYXRlLXRv
dWNoLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBAIGZ1bmN0aW9u
IHRvdWNoRXZlbnRDYWxsYmFjaygpIHsKICAgICB9IGVsc2UKICAgICAgICAgZGVidWcoZXZlbnQu
dHlwZSk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHRvdWNoRXZl
bnRzUmVjZWl2ZWQgPT0gRVhQRUNURURfVE9VQ0hfRVZFTlRTX1RPVEFMKQorICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lciAmJiB0b3VjaEV2ZW50c1JlY2VpdmVkID09IEVYUEVDVEVEX1RPVUNIX0VW
RU5UU19UT1RBTCkKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGVkLXRvdWNoLWlmcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2VtdWxhdGVkLXRvdWNoLWlmcmFt
ZS5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9lbXVsYXRlZC10b3VjaC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMs
NyBAQCBmdW5jdGlvbiB0ZXN0Q29tcGxldGUoKQogewogICAgIGlmICgrK2V2ZW50Q291bnQgPT09
IEVYUEVDVEVEX0VWRU5UX0NPVU5UKSB7CiAgICAgICAgIGRlYnVnKCJGaW5hbCB0b3VjaGVuZCAo
dGVzdCB3aWxsIHRpbWUgb3V0IGlmIGJyb2tlbikiKTsKLSAgICAgICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KIH0KIApAQCAtMzAsOCArMzAsOCBAQCBmdW5jdGlvbiBydW5UZXN0
KCkgewogICAgICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRFJULicpOwogfQogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93
LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUt
Y2xpY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9w
YWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUt
Y2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBmdW5jdGlvbiBlbmRU
ZXN0KCkKICAgICB9CiAgICAgLy8gQmFpbC4KICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsKQEAgLTc1LDggKzc1LDggQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgZ2VzdHVyZUV2ZW50Q2FsbGJhY2ssIGZhbHNlKTsKICAgICBkb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgcXVpdEtleVRvRW5kVGVzdCwgZmFsc2UpOwogCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CiAgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGJhc2ljIHNpbmdsZSB0b3VjaCBnZXN0
dXJlIGdlbmVyYXRpb24uIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9z
Y3JvbGwtd2l0aG91dC1tb3VzZS1sYWNrcy1tb3VzZW1vdmUtZXZlbnRzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2Nyb2xsLXdpdGhvdXQtbW91c2Ut
bGFja3MtbW91c2Vtb3ZlLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JvbGwtd2l0aG91dC1tb3VzZS1sYWNrcy1tb3VzZW1v
dmUtZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBAIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQogZWxzZQogICAgIGFsZXJ0KCJUaGlzIHRlc3QgcmVxdWlyZXMgd2luZG93Lmlu
dGVybmFscyIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBm
dW5jdGlvbiBsaXN0ZW5lcigpIHsKQEAgLTIxLDcgKzIxLDcgQEAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIGxpcwogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xs
IiwgZnVuY3Rpb24oKSB7CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMjAwKTsKIH0sIGZhbHNlKTsKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtYWN0aXZlLXN0YXRlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtYWN0aXZlLXN0YXRlLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLWFjdGl2ZS1zdGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBAIGRl
c2NyaXB0aW9uKCdUZXN0IHRvdWNoZXMgc2V0IHRoZSBhY3RpdmUKIGZ1bmN0aW9uIHRlc3RDb21w
bGV0ZShldmVudCkKIHsKICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpCkBAIC0zNyw4ICszNyw4IEBAIGZ1bmN0aW9uIHJ1blRl
c3QoKQogICAgICAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4nKTsKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWNvb3Jkcy1pbi16b29tLWFuZC1zY3JvbGwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC1j
b29yZHMtaW4tem9vbS1hbmQtc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWNvb3Jkcy1pbi16b29tLWFuZC1zY3JvbGwu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQAogICAgICAgICB3aW5kb3cuc2Ny
b2xsVG8oeCwgeSk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIC8vIERlZmF1bHQuCkBAIC0x
MTcsMTAgKzExNywxMCBAQAogICAgICAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7
CiAgICAgfQogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsKICAgICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGFyZWEpOwogICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtaW5zaWRlLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWluc2lkZS1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtaW5zaWRlLWlm
cmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3RD
b21wbGV0ZShldmVudCkKICAgICBzaG91bGRCZSgidG91Y2gucGFnZVgiLCAiNTAiKTsKICAgICBz
aG91bGRCZSgidG91Y2gucGFnZVkiLCAiNTAiKTsKICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsKQEAgLTMwLDggKzMwLDgg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy1wcmVzcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9u
LWxvbmctcHJlc3MuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy1wcmVzcy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBkb2N1bWVudC5vbmNvbnRleHRt
ZW51ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgPSAiUEFTUyI7IH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS9jb250ZXh0LW1lbnUtb24tdHdvLWZpbmdlci10YXAuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi10
d28tZmluZ2VyLXRhcC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi10d28tZmluZ2VyLXRhcC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVz
dCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBkb2N1bWVudC5vbmNv
bnRleHRtZW51ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5pbm5lckhUTUwgPSAiUEFTUyI7IH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLWNsaWNrLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVy
ZS1jbGljay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGZ1bmN0aW9uIGVu
ZFRlc3QoKQogICAgIH0KICAgICAvLyBCYWlsLgogICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewpAQCAtNTIsOSArNTIsOSBA
QCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCBnZXN0dXJlRXZlbnRDYWxsYmFjaywgZmFsc2UpOwogICAgIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCBxdWl0S2V5VG9FbmRUZXN0LCBmYWxzZSk7CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9nZXN0dXJlLXNjcm9sbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvZ2VzdHVyZS1zY3JvbGwuaHRt
bAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9nZXN0dXJlLXNjcm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw4IEBA
IGZ1bmN0aW9uIGNoZWNrU2Nyb2xsT2Zmc2V0KCkKICAgICBpZiAoc2Nyb2xsc09jY3VycmVkID09
IGV4cGVjdGVkU2Nyb2xsc1RvdGFsKSB7CiAgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBoZXJlLCB3
ZSd2ZSBwYXNzZWQuCiAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHNlY29uZEdlc3R1cmVTY3JvbGxTZXF1ZW5jZSgpOwogICAgIH0KQEAgLTExOSwxMiArMTE5LDEy
IEBAIGZ1bmN0aW9uIGV4aXRJZk5lY2Vzc2FyeSgpCiB7CiAgICAgZGVidWcoJ0dlc3R1cmUgZXZl
bnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGJyb2tlbicpOwogICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdl
c3R1cmUtY2FuY2VsLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTYsMjEgKzE2LDIxIEBAIGZ1bmN0aW9uIHJlY29yZFdoZWVsRXZlbnQoZXZlbnQpCiAKIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCByZWNvcmRXaGVlbEV2ZW50KTsK
IAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIg
JiYgd2luZG93LmV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ1N0YXJ0KSB7CitpZiAod2luZG93LnRl
c3RSdW5uZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy5ldmVudFNlbmRlci5nZXN0
dXJlRmxpbmdTdGFydCkgewogICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ1N0YXJ0KDEwLCAx
MSwgMTAwMCwgMTAwMCk7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZUZsaW5nQ2FuY2VsKCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgIHRlc3RSdW5uZXIuZGlzcGxh
eSgpOwogfQogCiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgIHNob3VsZEJlKCdhY3R1YWxX
aGVlbEV2ZW50c09jY3VycmVkJywgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkKTsKIH0sIDEw
MCk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
IGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
LCAyMDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQt
Z2VzdHVyZS1mbGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xNiwyMiArMTYsMjIgQEAgZnVuY3Rpb24gcmVjb3JkV2hlZWxF
dmVudChldmVudCkKIAogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJl
Y29yZFdoZWVsRXZlbnQpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdp
bmRvdy5ldmVudFNlbmRlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIuZ2VzdHVyZUZsaW5nU3RhcnQp
IHsKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIgJiYgd2luZG93
LmV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ1N0YXJ0KSB7CiAgICAgZXZlbnRTZW5kZXIuZ2VzdHVy
ZUZsaW5nU3RhcnQoMTAsIDExLCAxMDAwLCAxMDAwKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kaXNwbGF5KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsK
KyAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKKyAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKIH0K
IAogc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICBzaG91bGRCZSgnYWN0dWFsV2hlZWxFdmVu
dHNPY2N1cnJlZCcsIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCk7CiB9LCAxMDApOwogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIAogc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICBpc1N1Y2Nl
c3NmdWxseVBhcnNlZCgpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfSwgMjAwKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtZGl2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1kaXYuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1kaXYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDggKzEwMCw4IEBAIGZ1
bmN0aW9uIHNlY29uZEdlc3R1cmVTY3JvbGwoKQogICAgIGNoZWNrU2Nyb2xsT2Zmc2V0KCk7CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
aWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwNjgx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LXNjcm9sbC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBmdW5j
dGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKICAgICBjaGVja1Njcm9sbE9mZnNldCgpOwogfQog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBh
Z2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXBhZ2UuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9s
bC1wYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAgZnVuY3Rpb24gcmVj
b3JkU2Nyb2xsKGV2ZW50KSB7CiAJICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVyZSwgd2UndmUg
cGFzc2VkLgogCSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIAkgICAgICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0JICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotCSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KwkgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIAkJfQogICAgIH0KIH0KQEAgLTExNCw4ICsxMTQsOCBAQCBmdW5jdGlv
biBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKICAgICBjaGVja1Njcm9sbE9mZnNldCgpOwogfQogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXNoeS10
YXJnZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXNoeS10YXJnZXQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0
dXJlLXNjcm9sbC1zaHktdGFyZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw4ICsxMjQs
OCBAQCBmdW5jdGlvbiBzZWNvbmRHZXN0dXJlU2Nyb2xsKCkKICAgICBjaGVja1Njcm9sbE9mZnNl
dCgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Jlc291cmNlcy9nZXN0
dXJlLWhlbHBlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS9yZXNvdXJjZXMvZ2VzdHVyZS1oZWxwZXJzLmpzCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Jlc291cmNlcy9nZXN0
dXJlLWhlbHBlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAgZnVuY3Rpb24g
cmVjb3JkU2Nyb2xsKGV2ZW50KQogICAgICAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdl
J3ZlIHBhc3NlZC4KICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAgICAg
ICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC0yNyw4ICsyNyw4IEBAIGZ1bmN0aW9uIGV4aXRJZk5lY2Vzc2FyeSgpCiAgICAgZGVidWco
J2dlc3R1cmUgZXZlbnRzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtIG9yIGdlc3R1
cmUgZXZlbnQgc2Nyb2xsaW5nIG9mIGEgZG9jdW1lbnQgaXMgYnJva2VuJyk7CiAgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBjaGVja1Rlc3REZXBlbmRlbmNp
ZXMoKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvcmVzb3VyY2VzL3NlbmQt
dG91Y2gtdXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9yZXNvdXJjZXMvc2VuZC10b3VjaC11cC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9yZXNvdXJjZXMvc2VuZC10b3VjaC11cC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIGZ1bmN0aW9uIHNlbmRUb3VjaFVwKCkKIAog
ZnVuY3Rpb24gZmluaXNoVGVzdChlKQogewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZG9jdW1lbnQub250
b3VjaHN0YXJ0ID0gIGZpbmlzaFRlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9yZXNvdXJjZXMvdG91Y2gtc3RhbGUtbm9kZS1jcmFzaC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9yZXNvdXJjZXMvdG91Y2gtc3RhbGUtbm9kZS1j
cmFzaC5qcwkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvcmVzb3VyY2VzL3RvdWNoLXN0YWxlLW5vZGUtY3Jhc2guanMJKHdvcmtpbmcgY29weSkKQEAg
LTksOCArOSw4IEBAIGZ1bmN0aW9uIHRvdWNoU3RhcnRIYW5kbGVyKGUpCiAKIGRlc2NyaXB0aW9u
KCJJZiB0aGlzIHRlc3QgZG9lcyBub3QgY3Jhc2ggdGhlbiB5b3UgcGFzcyEiKTsKIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICBldmVudFNlbmRl
ci5jbGVhclRvdWNoUG9pbnRzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9zY3JpcHQtdGVzdHMvYmFzaWMtbXVsdGktdG91Y2gtZXZlbnRzLWxpbWl0ZWQuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2lj
LW11bHRpLXRvdWNoLWV2ZW50cy1saW1pdGVkLmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvYmFzaWMtbXVsdGktdG91Y2gt
ZXZlbnRzLWxpbWl0ZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEyICsxNiwxMiBAQCBmdW5j
dGlvbiB0b3VjaEV2ZW50Q2FsbGJhY2soKSB7CiAgICAgICAgIGRlYnVnKGV2ZW50LnR5cGUpOwog
ICAgIH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgdG91Y2hFdmVu
dHNSZWNlaXZlZCA9PSBFWFBFQ1RFRF9UT1VDSF9FVkVOVFNfVE9UQUwpIHsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgdG91Y2hFdmVudHNSZWNlaXZlZCA9PSBFWFBFQ1RFRF9UT1VDSF9F
VkVOVFNfVE9UQUwpIHsKICAgICAgICAgLy8gSWYgd2UndmUgZ290IGhlcmUsIHdlIGNhbiBzYWZl
bHkgc2F5IHdlIHdlcmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCA6KSBXZSBuZWVkIHRvCiAgICAgICAg
IC8vIGNhbGwgdGhlIGlzU3VjY2Nlc3NmdWxseVBhcnNlZCBmdW5jdGlvbiB0byBvdXRwdXQgdGhl
IGNvcnJlY3QgVEVTVCBDT01QTEVURQogICAgICAgICAvLyBmb290ZXIgbWVzc2FnZS4KICAgICAg
ICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9iYXNp
Yy1tdWx0aS10b3VjaC1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLW11bHRpLXRvdWNoLWV2ZW50cy5qcwkocmV2
aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRl
c3RzL2Jhc2ljLW11bHRpLXRvdWNoLWV2ZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYsMTIg
KzE2LDEyIEBAIGZ1bmN0aW9uIHRvdWNoRXZlbnRDYWxsYmFjaygpIHsKICAgICAgICAgZGVidWco
ZXZlbnQudHlwZSk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ciAmJiB0b3VjaEV2ZW50c1JlY2VpdmVkID09IEVYUEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCkg
eworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB0b3VjaEV2ZW50c1JlY2VpdmVkID09IEVY
UEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCkgewogICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgaGVy
ZSwgd2UgY2FuIHNhZmVseSBzYXkgd2Ugd2VyZSBzdWNjZXNzZnVsbHkgcGFyc2VkIDopIFdlIG5l
ZWQgdG8KICAgICAgICAgLy8gY2FsbCB0aGUgaXNTdWNjY2Vzc2Z1bGx5UGFyc2VkIGZ1bmN0aW9u
IHRvIG91dHB1dCB0aGUgY29ycmVjdCBURVNUIENPTVBMRVRFCiAgICAgICAgIC8vIGZvb3RlciBt
ZXNzYWdlLgogICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2Ny
aXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3Vj
aC1ldmVudHMuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL3NjcmlwdC10ZXN0cy9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xNiwxMiArMTYsMTIgQEAgZnVuY3Rpb24gdG91Y2hFdmVudENhbGxiYWNrKCkg
ewogICAgICAgICBkZWJ1ZyhldmVudC50eXBlKTsKICAgICB9CiAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyICYmIHRvdWNoRXZlbnRzUmVjZWl2ZWQgPT0gRVhQRUNURURfVE9V
Q0hfRVZFTlRTX1RPVEFMKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHRvdWNoRXZl
bnRzUmVjZWl2ZWQgPT0gRVhQRUNURURfVE9VQ0hfRVZFTlRTX1RPVEFMKSB7CiAgICAgICAgIC8v
IElmIHdlJ3ZlIGdvdCBoZXJlLCB3ZSBjYW4gc2FmZWx5IHNheSB3ZSB3ZXJlIHN1Y2Nlc3NmdWxs
eSBwYXJzZWQgOikgV2UgbmVlZCB0bwogICAgICAgICAvLyBjYWxsIHRoZSBpc1N1Y2NjZXNzZnVs
bHlQYXJzZWQgZnVuY3Rpb24gdG8gb3V0cHV0IHRoZSBjb3JyZWN0IFRFU1QgQ09NUExFVEUKICAg
ICAgICAgLy8gZm9vdGVyIG1lc3NhZ2UuCiAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogCkBAIC0xMjAsOCArMTIwLDggQEAgZnVu
Y3Rpb24gdG91Y2hUYXJnZXRzKCkKICAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKIH0KIAot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyBiYXNpYyBzaW5nbGUgdG91Y2ggZXZlbnQgc3VwcG9ydC4iKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9tdWx0aS10
b3VjaC1ncm91cGVkLXRhcmdldHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL211bHRpLXRvdWNoLWdyb3VwZWQtdGFyZ2V0cy5qcwko
cmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0
LXRlc3RzL211bHRpLXRvdWNoLWdyb3VwZWQtdGFyZ2V0cy5qcwkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBmdW5jdGlvbiB0b3VjaEVuZEhhbmRsZXIoKQogCiAgICAgaWYgKCsrZW5k
Q291bnQgPT0gMikKICAgICB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIGlzU3VjY2Vz
c2Z1bGx5UGFyc2VkKCk7CiAgICAgfQogfQpAQCAtNjMsOCArNjMsOCBAQCBkaXYyLmFkZEV2ZW50
TGlzdGVuZXIoInRvdWNoZW5kIiwgdG91Y2hFCiAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRo
ZSBhbiBldmVudCBpcyBzZW50IGZvciBldmVyeSB0b3VjaCBsaXN0ZW5lciwgYW5kIHRhcmdldCB0
b3VjaGVzIGNvbnRhaW5zIGFsbCB0aGUgcG9pbnRzIGZvciB0aGF0IHRhcmdldCIpOwogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9zZW5kLW9uY2FuY2Vs
LWV2ZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Nj
cmlwdC10ZXN0cy9zZW5kLW9uY2FuY2VsLWV2ZW50LmpzCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvc2VuZC1vbmNhbmNlbC1l
dmVudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTEsMTQgKzExLDE0IEBAIGZ1bmN0aW9uIHRvdWNo
Y2FuY2VsSGFuZGxlcigpIHsKICAgICBzaG91bGRCZU5vbk51bGwoImNhbmNlbEV2ZW50Iik7CiAg
ICAgc2hvdWxkQmUoImNhbmNlbEV2ZW50LnBhZ2VYIiwgdG91Y2hYLnRvU3RyaW5nKCkpOwogICAg
IHNob3VsZEJlKCJjYW5jZWxFdmVudC5wYWdlWSIsIHRvdWNoWS50b1N0cmluZygpKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCk7IAogICAgIH0KIH0KICAgICAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAK
IHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdGFw
LWhpZ2hsaWdodC1jb2xvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9zY3JpcHQtdGVzdHMvdGFwLWhpZ2hsaWdodC1jb2xvci5qcwkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1o
aWdobGlnaHQtY29sb3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAgZnVuY3Rp
b24gb25Ub3VjaEVuZCgpCiAgICAgc2hvdWxkQmVOb25OdWxsKCJkaXYub3duZXJEb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJykiKTsKICAgICAvLyBOb3RpZnkgdGhlIHRlc3Qg
ZG9uZS4KICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZGl2
LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBvblRvdWNoU3RhcnQsIGZhbHNlKTsKQEAg
LTQxLDggKzQxLDggQEAgZnVuY3Rpb24gdG91Y2hUYXJnZXRzKCkKICAgICBldmVudFNlbmRlci50
b3VjaEVuZCgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogaWYgKHdpbmRvdy5ldmVudFNl
bmRlciAmJiBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CiAgICAgZGVzY3JpcHRpb24o
IkNoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQiKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQtbGltaXRl
ZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQt
dGVzdHMvdG91Y2gtdGFyZ2V0LWxpbWl0ZWQuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQtbGltaXRl
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBmdW5jdGlvbiBkZWNsYXJlVG91
Y2hNb3ZlKGRpdl9pZCkKIAogICAgICAgICBpZiAoKyt0b3RhbFRvdWNoTW92ZUNvdW50ID09IDYp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgaXNT
dWNjZXNzZnVsbHlQYXJzZWQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc4LDggKzc4LDggQEAg
ZGl2Mi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBkZWNsYQogCiBkZXNjcmlwdGlvbigi
VGVzdHMgdGhhdCB0aGUgdGFyZ2V0IG9mIHRvdWNoZXMgbWF0Y2ggdGhlIGVsZW1lbnQgd2hlcmUg
dGhlIGV2ZW50IG9yaWdpbmF0ZWQsIG5vdCB3aGVyZSB0aGUgdG91Y2ggaXMgY3VycmVudGx5IG9j
Y3VycmluZy4gVGhpcyBpcyBhIGxpbWl0ZWQgdmVyc2lvbiBvZiB0ZXN0IHRvdWNoLXRhcmdldC5o
dG1sIHRoYXQgYXZvaWRzIHRoZSBzaXR1YXRpb24gd2hlcmUgb25lIHRvdWNoIHBvaW50IGlzIHJl
bGVhc2VkIHdoaWxlIGFub3RoZXIgaXMgbWFpbnRhaW5lZC4iKTsKIAotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCiBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtdGFyZ2V0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10
YXJnZXQuanMJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcg
KzY0LDcgQEAgZnVuY3Rpb24gZGVjbGFyZVRvdWNoTW92ZShkaXZfaWQpCiAKICAgICAgICAgaWYg
KCsrdG90YWxUb3VjaE1vdmVDb3VudCA9PSA2KQogICAgICAgICB7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC03OCw4ICs3OCw4IEBAIGRpdjIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2ht
b3ZlIiwgZGVjbGEKIAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIHRhcmdldCBvZiB0b3Vj
aGVzIG1hdGNoIHRoZSBlbGVtZW50IHdoZXJlIHRoZSBldmVudCBvcmlnaW5hdGVkLCBub3Qgd2hl
cmUgdGhlIHRvdWNoIGlzIGN1cnJlbnRseSBvY2N1cnJpbmcuIik7CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1hdHRyaWJ1dGUtbGlzdGVuZXJzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1h
dHRyaWJ1dGUtbGlzdGVuZXJzLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtYXR0cmlidXRlLWxpc3RlbmVycy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsOSBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7
CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBlcyA9
IG5ldyBFdmVudFNvdXJjZSgiZXZlbnRzb3VyY2UiKTsKQEAgLTQ1LDggKzQ1LDggQEAgaWYgKGZs
YWcpIHsKIGVsc2UKICAgICBsb2coIkZBSUw6IGRpc3BhdGNoaW5nIGV2ZW50IG9uIGFuIEV2ZW50
U291cmNlIGRvZXMgbm90IHRyaWdnZXIgYXR0cmlidXRlIGxpc3RlbmVyIik7CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
b3VyY2UvZXZlbnRzb3VyY2UtY29uc3RydWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50c291cmNlL2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLmh0bWwJKHJldmlz
aW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2Ut
Y29uc3RydWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAgZnVuY3Rpb24g
bG9nKG1zZykgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgKz0gbXNnICsgIjxicj4iOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB0cnkgewpAQCAtMzcsOCArMzcsOCBAQCBjYXRjaCAoZXgpIHsKICAgICBsb2co
IkRPTkUiKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvZHJhZy1kb3dubG9hZFVS
TC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZXZlbnRzL2RyYWctZG93bmxvYWRVUkwuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvZHJhZy1kb3dubG9hZFVSTC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNSArNDAsMTUgQEAgZnVuY3Rpb24gZHJvcChldmVudCkg
ewogICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgIH0KICAgICBsb2coZmFpbGVkID8gJ0ZBSUxV
UkUnIDogJ1NVQ0NFU1MnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICB2YXIgZHJhZ0VsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhZycpOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KGRyYWdFbGVtZW50Lm9mZnNldExlZnQgKyBkcmFnRWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQt
cG9zdG1lc3NhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJj
ZXB0LXBvc3RtZXNzYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAKICAg
ICAgICAgd3JpdGUoIlJFQ1YxIik7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgcmVjdk1zZzEsIGZhbHNlKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmludGVyY2Vw
dFBvc3RNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgIHRlc3RSdW5uZXIuaW50ZXJjZXB0UG9zdE1lc3NhZ2UgPSB0cnVlOwogCiAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdk1zZzIsIGZhbHNlKTsKICAg
ICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDIiLCAiKiIpOwpAQCAtMzAsMTUgKzMw
LDE1IEBACiAgICAgICB9CiAKICAgICAgIGZ1bmN0aW9uIGRvbmUoKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgIH0KIAogICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMSwgZmFsc2UpOwog
Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICB9CiAKICAgICAgIHdp
bmRvdy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAxIiwgIioiKTsKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9ydGwtc2Nyb2xs
YmFyLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3J0bC1zY3JvbGxiYXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQs
OCArMTQsOCBAQCBkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlIGNhbiBzY3JvbGwgZG93CiAKIHZh
ciBzY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmZsb3cnKS5zY3JvbGxU
b3A7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAg
ICAgdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmZsb3cnKTsKQEAgLTI4
LDcgKzI4LDcgQEAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogZnVuY3Rpb24gZmluaXNoZWQo
KQogewogICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdvdmVyZmxv
d1wnKS5zY3JvbGxUb3AgPiBzY3JvbGxUb3AnKTsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVyLW1ldGFrZXkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9ldmVudHMvZXZlbnQtc2VuZGVy
LW1ldGFrZXkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1tZXRha2V5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOCArMyw4IEBACiA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogPGlucHV0IGlkPSJ0ZXN0
IiB0eXBlPSJidXR0b24iIHZhbHVlPSIiPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICAgIHZhciBtZXRhS2V5ID0gZmFsc2U7CiAgICAgdmFyIGZhaWxlZCA9IGZh
bHNlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2NoYXJhY3Rlci1p
bmRleC1mb3ItcG9pbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9kb20vY2hhcmFjdGVyLWluZGV4LWZvci1wb2ludC5odG1sCShyZXZpc2lvbiAxMjA2
ODEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vY2hhcmFjdGVyLWluZGV4
LWZvci1wb2ludC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxMSArMTYsMTEgQEAgYm9keSB7
IG1hcmdpbjogMTA7IHBhZGRpbmc6IDAgfQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgCiAgICAgICAgIHRyeSB7CiAgICAgICAgIAotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgICAgIAogICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0
aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IiksIDApOwogICAgICAgICAgICAgbG9n
KHRleHRJbnB1dENvbnRyb2xsZXIuY2hhcmFjdGVySW5kZXhGb3JQb2ludCg1LCA2MDAtNSkpOwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci1pZGVu
dGl0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Rv
bS9vYmpjLXdyYXBwZXItaWRlbnRpdHkuaHRtbAkocmV2aXNpb24gMTIwNjgxKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL29iamMtd3JhcHBlci1pZGVudGl0eS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB3cmFwcGVyIGlkZW50aXR5IGZvciBPYmplY3RpdmUt
Qy4iKTsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICBkZWJ1ZygiVGhlIE9iakMgdGVzdHMgb25seSB3b3Jr
IGluIER1bXBSZW5kZXJUcmVlLlxuIik7CiAgICAgCiAgICAgdmFyIHRlc3RzID0gWyBdOwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1vYmpj
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3dy
YXBwZXItY2xhc3Nlcy1vYmpjLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtb2JqYy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiA8Ym9keT4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogCiBmdW5jdGlvbiBvYmpDV3JhcHBlcklzSW5zdGFuY2VPZihub2RlLCBjbGFzc05h
bWUpCiB7CkBAIC0zMDgsOCArMzA4LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAKICAgICAvLyB3
aGF0IGVsc2UgaXMgbWlzc2luZz8KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQog
CiBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vd3JhcHBlci1yb3VuZC10cmlwcGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS93cmFwcGVyLXJvdW5kLXRyaXBwaW5nLmh0bWwJ
KHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS93
cmFwcGVyLXJvdW5kLXRyaXBwaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEyICsxNiwx
MiBAQAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CiAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
d3JhcHBlciByb3VuZC10cmlwcGluZyBiZXR3ZWVuIEphdmFTY3JpcHQgYW5kIE9iamVjdGl2ZS1D
LiIpOwotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IG9ubHkgd29ya3Mg
aW4gRHVtcFJlbmRlclRyZWUuXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKICAgICB2YXIgbWVzc2FnZSA9ICJGQUlMOiBUZXN0IGRpZCBub3QgcnVuIHBy
b3Blcmx5LiI7CiAgICAgdHJ5IHsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2Rhc2hib2FyZC1zcmMtcXVpcmsuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9k
YXNoYm9hcmQtc3JjLXF1aXJrLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2Rhc2hib2FyZC1zcmMtcXVp
cmsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiwyMSArNiwyMSBAQAogICAgIFRoaXMgdGVzdCBj
YW4gb25seSBydW4gaW4gRHVtcFJlbmRlclRyZWUuCiA8L3A+CiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFVzZURhc2hib2FyZENvbXBh
dGliaWxpdHlNb2RlKHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGUodHJ1ZSk7CiAKICAgICAgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7CiAKICAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9u
KGV2ZW50KSB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJUZXh0ID0gIlBBU1MiOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAg
IH0sIGZhbHNlKTsKIAogICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJUZXh0ID0gIkZBSUwiOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIH0sIGZhbHNlKTsKIAogICAgICAgICBpbWFnZS5zcmMgPSAndXJsKCJyZXNvdXJjZXMv
Ymx1ZV9yZWN0LmpwZyIpJzsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2V2
ZW50cy9vYmpjLWV2ZW50LWFwaS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWV2ZW50LWFwaS5odG1sCShyZXZpc2lvbiAxMjA2ODEp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2JqYy1ldmVudC1hcGku
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBp
bml0KCkgewogICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgICAKICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEsMSk7CiAgICAgICBldmVudFNl
bmRlci5lbmFibGVET01VSUV2ZW50TG9nZ2luZyhkb2N1bWVudCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2JqYy1rZXlib2FyZC1ldmVudC1jcmVhdGlvbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9v
YmpjLWtleWJvYXJkLWV2ZW50LWNyZWF0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWtleWJvYXJkLWV2ZW50LWNy
ZWF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgZnVuY3Rpb24gaW5p
dCgpIHsKICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsIGtleWV2ZW50LCB0
cnVlKTsKICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIGtleWV2ZW50LCB0cnVl
KTsKICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIGV2ZW50U2VuZGVyLmZpcmVLZXlib2FyZEV2ZW50c1Rv
RWxlbWVudChpbnB1dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50
cy9ldmVudC1zZW5kZXIta2V5ZG93bi1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZl
bnRzL2V2ZW50LXNlbmRlci1rZXlkb3duLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQs
OSArNCw5IEBACiAgICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDMiPmJ1ZyAyMDMwMzwvYT46CiAgICAgW1F0XSBrZXkgZXZl
bnRzIGFyZSBub3Qgd29ya2luZyBpbiBmcmFtZXMuPC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQog
ICAgIGZ1bmN0aW9uIHJlcG9ydElGcmFtZVBvcygpCiAgICAgewpAQCAtMTgsNyArMTgsNyBAQAog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
PSAiU1VDQ0VTUyI7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIkZBSUxVUkUiOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RBbmRSZXBvcnQoKSB7CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvYWx0LW51bXBhZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9hbHQtbnVtcGFkLmh0
bWwJKHJldmlzaW9uIDEyMDY4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2
ZW50cy9hbHQtbnVtcGFkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAgICAg
PHNjcmlwdD4KICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNlIikuZm9jdXMoKTsK
IAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmRpc3BhdGNoTWVzc2FnZShldmVudFNlbmRlci5XTV9TWVNL
RVlET1dOLCAxOCAvKiBBbHQgKi8sIDB4MjAzODAwMDEpOwogICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuZGlzcGF0Y2hNZXNzYWdlKGV2ZW50U2VuZGVyLldNX1NZU0tFWURPV04sIDQ1IC8qIE51bSBQ
YWQgMCAqLywgMHgyMDUyMDAwMSk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFz
dC9ldmVudHMvYWx0LXNwYWNlLXNjcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9hbHQtc3BhY2Utc2Nyb2xsLmh0bWwJKHJldmlzaW9u
IDEyMDY4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9hbHQtc3Bh
Y2Utc2Nyb2xsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAgbG9nKCJ0YXJn
ZXQgLSB0eXBlIC0gIiArIFsiY3RybEtleSIsICJhbAogICAgICAgICArICcgLSAnICsgImtleUNv
ZGUiCiAgICAgICAgICsgJyAtICcgKyAiY2hhckNvZGUiKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgZXZlbnRTZW5kZXIuZGlzcGF0Y2hNZXNzYWdlKGV2ZW50U2VuZGVyLldNX1NZU0tFWURP
V04sIDB4MTIgLyogQWx0ICovLCAweDIwMzgwMDAxKTsKICAgICBldmVudFNlbmRlci5kaXNwYXRj
aE1lc3NhZ2UoZXZlbnRTZW5kZXIuV01fU1lTS0VZRE9XTiwgMHgyMCAvKiBTcGFjZSAqLywgMHgy
MDM5MDAwMSk7CiAgICAgZXZlbnRTZW5kZXIuZGlzcGF0Y2hNZXNzYWdlKGV2ZW50U2VuZGVyLldN
X1NZU0NIQVIsIDB4MjAgLyogU3BhY2UgKi8sIDB4MjAzOTAwMDEpOwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL2RvdWJsZS1kZWFkLWNoYXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvZG91YmxlLWRlYWQt
Y2hhci5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
ZmFzdC9ldmVudHMvZG91YmxlLWRlYWQtY2hhci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDgg
KzUsOCBAQAogPC9wPgogPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9Y2U+PC9kaXY+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNlIikuZm9jdXMoKTsKIAogICAgICAgICBldmVudFNlbmRlci5kaXNwYXRj
aE1lc3NhZ2UoZXZlbnRTZW5kZXIuV01fS0VZRE9XTiwgMjIwIC8qIFZLX09FTV81ICovLCAweDAw
MjkwMDAxKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9rZXlM
b2NhdGlvbi1udW1wYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vZmFzdC9ldmVudHMva2V5TG9jYXRpb24tbnVtcGFkLmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9rZXlMb2NhdGlvbi1udW1w
YWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjZSIpLmZvY3VzKCk7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICBldmVudFNlbmRlci5k
aXNwYXRjaE1lc3NhZ2UoZXZlbnRTZW5kZXIuV01fS0VZRE9XTiwgOTYgLyogVktfTlVNUEFEMCAq
LywgMHgwMDUyMDAwMSk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5kaXNwYXRjaE1lc3NhZ2Uo
ZXZlbnRTZW5kZXIuV01fS0VZVVAsIDk2IC8qIFZLX05VTVBBRDAgKi8sIDB4YzA1MjAwMDEpOwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3BhblNjcm9sbC1jb3Jy
ZWN0LWRpcmVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtY29ycmVjdC1kaXJlY3Rpb24uaHRtbAkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3BhblNjcm9s
bC1jb3JyZWN0LWRpcmVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAog
ICAgIDwvaGVhZD4NCiAgICAgPGJvZHk+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7DQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0K
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vk
b3duJywgDQpAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
ID0gIlN1Y2Nlc3MhIERpdiB3aXRoIG92ZXJmbG93IHdhcyBzY3JvbGxlZCBjb3JyZWN0bHkiOw0K
ICAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIDwvc2NyaXB0Pg0KICAgICA8
L2JvZHk+DQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3BhblNj
cm9sbC1ldmVudC1maXJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtZXZlbnQtZmlyZWQuaHRtbAkocmV2aXNpb24gMTIw
NjgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3BhblNjcm9sbC1l
dmVudC1maXJlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogICAgIDwvaGVh
ZD4NCiAgICAgPGJvZHk+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7DQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgDQpA
QCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gIkZhaWwh
IERpdiB3aXRoIG92ZXJmbG93IHdhcyBub3Qgc2Nyb2xsZWQiOw0KICAgICAgICAgICAgICAgICAN
Ci0gICAgICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsNCisgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOw0KICAg
ICAgICAgICAgIH0NCiAgICAgICAgIDwvc2NyaXB0Pg0KICAgICA8L2JvZHk+DQpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3BhblNjcm9sbC1pbWFnZS1uby1zY3Jv
bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVu
dHMvcGFuU2Nyb2xsLWltYWdlLW5vLXNjcm9sbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWltYWdlLW5vLXNj
cm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogICAgIDwvaGVhZD4NCiAg
ICAgPGJvZHk+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICA8
L3NjcmlwdD4NCiAgICAgICAgIDxkaXYgaWQ9Im92ZXJmbG93IiBzdHlsZT0id2lkdGg6NTAwcHg7
IGhlaWdodDoxNTBweDsgb3ZlcmZsb3c6YXV0bzsgYm9yZGVyOjJweCBzb2xpZCByZWQ7IHBhZGRp
bmc6MTBweCI+DQpAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJI
VE1MID0gIkZhaWwhIERpdiB3aXRoIG92ZXJmbG93IHdhcyBzY3JvbGxlZCI7DQogICAgICAgICAg
ICAgICAgIA0KLSAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOw0KKyAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgPC9zY3JpcHQ+DQogICAgIDwvYm9keT4NCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWltYWdl
TWFwLWhyZWYtbm8tc2Nyb2xsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL2Zhc3QvZXZlbnRzL3BhblNjcm9sbC1pbWFnZU1hcC1ocmVmLW5vLXNjcm9sbC5odG1s
CShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVu
dHMvcGFuU2Nyb2xsLWltYWdlTWFwLWhyZWYtbm8tc2Nyb2xsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQsOSArNCw5IEBACiAgICAgPC9oZWFkPg0KICAgICA8Ym9keT4NCiAgICAgICAgIDxzY3Jp
cHQ+DQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIDwvc2NyaXB0Pg0KICAgICAgICAgPGRpdiBp
ZD0ib3ZlcmZsb3ciIHN0eWxlPSJ3aWR0aDo1MDBweDsgaGVpZ2h0OjE1MHB4OyBvdmVyZmxvdzph
dXRvOyBib3JkZXI6MnB4IHNvbGlkIHJlZDsgcGFkZGluZzoxMHB4Ij4NCkBAIC0zNyw3ICszNyw3
IEBACiAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAiRmFpbCEgRGl2IHdpdGggb3Zl
cmZsb3cgd2FzIHNjcm9sbGVkIjsNCiAgICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7DQorICAgICAgICAgICAg
ICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAgICAgICAgICAgICB9DQogICAg
ICAgICA8L3NjcmlwdD4NCiAgICAgPC9ib2R5Pg0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtaW1hZ2VNYXAtbm9IcmVmLXNjcm9sbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9wYW5TY3Jv
bGwtaW1hZ2VNYXAtbm9IcmVmLXNjcm9sbC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLWltYWdlTWFwLW5vSHJl
Zi1zY3JvbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKICAgICA8L2hlYWQ+
DQogICAgIDxib2R5Pg0KICAgICAgICAgPHNjcmlwdD4NCi0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOw0KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ew0KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQogICAgICAgICAgICAgfQ0KICAgICAg
ICAgPC9zY3JpcHQ+DQogICAgICAgICA8ZGl2IGlkPSJvdmVyZmxvdyIgc3R5bGU9IndpZHRoOjUw
MHB4OyBoZWlnaHQ6MTUwcHg7IG92ZXJmbG93OmF1dG87IGJvcmRlcjoycHggc29saWQgcmVkOyBw
YWRkaW5nOjEwcHgiPg0KQEAgLTM3LDcgKzM3LDcgQEAKICAgICAgICAgICAgICAgICBlbHNlDQog
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlu
bmVySFRNTCA9ICJGYWlsISBEaXYgd2l0aCBvdmVyZmxvdyB3YXMgbm90IHNjcm9sbGVkIjsNCiAg
ICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7DQorICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsNCiAgICAgICAgICAgICB9DQogICAgICAgICA8L3NjcmlwdD4NCiAgICAgPC9i
b2R5Pg0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9wYW5TY3Jv
bGwtbmVzdGVkLWRpdnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLW5lc3RlZC1kaXZzLmh0bWwJKHJldmlzaW9uIDEyMDY4
MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtbmVz
dGVkLWRpdnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKICAgICA8L2hlYWQ+
DQogICAgIDxib2R5Pg0KICAgICAgICAgPHNjcmlwdD4NCi0gICAgICAgICAgICBpZiAobGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7DQorICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIpIHsNCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIDwvc2NyaXB0Pg0K
ICAgICAgICAgPGRpdiBpZD0ib3ZlcmZsb3ciIHN0eWxlPSJ3aWR0aDo1MDBweDsgaGVpZ2h0OjMw
MHB4OyBvdmVyZmxvdzphdXRvOyBib3JkZXI6MnB4IHNvbGlkIHJlZDsgcGFkZGluZzoxMHB4Ij4N
CkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAiRmFp
bCEgRGl2IHdpdGggb3ZlcmZsb3cgd2FzIG5vdCBzY3JvbGxlZCI7DQogICAgICAgICAgICAgICAg
IA0KLSAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOw0KKyAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7DQog
ICAgICAgICAgICAgfQ0KICAgICAgICAgPC9zY3JpcHQ+DQogICAgIDwvYm9keT4NCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLW5vLWlmcmFtZS1q
dW1wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZl
bnRzL3BhblNjcm9sbC1uby1pZnJhbWUtanVtcC5odG1sCShyZXZpc2lvbiAxMjA2ODEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLW5vLWlmcmFtZS1q
dW1wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiAgICAgPC9oZWFkPg0KICAg
ICA8Ym9keT4NCiAgICAgICAgIDxzY3JpcHQ+DQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgew0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7DQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsNCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIDwv
c2NyaXB0Pg0KICAgICAgICAgPGRpdiBpZD0ib3ZlcmZsb3ciIHN0eWxlPSJ3aWR0aDo1MDBweDsg
aGVpZ2h0OjE1MHB4OyBvdmVyZmxvdzphdXRvOyBib3JkZXI6MnB4IHNvbGlkIHJlZDsgcGFkZGlu
ZzoxMHB4Ij4NCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhU
TUwgPSAiRmFpbCEgRGl2IHdpdGggb3ZlcmZsb3cgd2FzIHNjcm9sbGVkIjsNCiAgICAgICAgICAg
ICAgICAgDQotICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7DQorICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsNCiAgICAgICAgICAgICB9DQogICAgICAgICA8L3NjcmlwdD4NCiAgICAgPC9ib2R5Pg0KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtcHJldmVu
dERlZmF1bHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFz
dC9ldmVudHMvcGFuU2Nyb2xsLXByZXZlbnREZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDEyMDY4MSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9wYW5TY3JvbGwtcHJldmVu
dERlZmF1bHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKICAgICA8L2hlYWQ+
DQogICAgIDxib2R5Pg0KICAgICAgICAgPHNjcmlwdD4NCi0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOw0KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ew0KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQogICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIA0KQEAg
LTQwLDcgKzQwLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJTdWNjZXNz
ISBEaXYgd2l0aCBvdmVyZmxvdyB3YXMgbm90IHNjcm9sbGVkIjsNCiAgICAgICAgICAgICAgICAg
DQotICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7DQorICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAg
ICAgICAgICAgICB9DQogICAgICAgICA8L3NjcmlwdD4NCiAgICAgPC9ib2R5Pg0KSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvY29udGV4dC1j
bGljay1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zh
c3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9jb250ZXh0LWNsaWNrLWV2ZW50cy5qcwkocmV2aXNpb24g
MTIwNjgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZXZlbnRzL3NjcmlwdC10
ZXN0cy9jb250ZXh0LWNsaWNrLWV2ZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNDcsMTMgKzQ3
LDEzIEBAIHRyYWNlTW91c2VFdmVudCh0YXJnZXQsICJtb3VzZWRvd24iKTsKIHRyYWNlTW91c2VF
dmVudCh0YXJnZXQsICJtb3VzZXVwIik7CiB0cmFjZU1vdXNlRXZlbnQodGFyZ2V0LCAiY29udGV4
dG1lbnUiKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVzY3JpcHRpb24iKTsKICAgICAgdmFyIHggPSBib3gub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQg
KyBib3gub2Zmc2V0TGVmdCArIGJveC5vZmZzZXRXaWR0aCAvIDI7CiAgICAgIHZhciB5ID0gYm94
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBib3gub2Zmc2V0VG9wICsgYm94Lm9mZnNldEhlaWdo
dCAvIDI7CiAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwogICAgICBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zdHJpcE51bGxGcm9tVGV4dE5vZGVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUEdScGRpQnBaRDBpYm5WdElqNEFBQUFBQUFBQUFB
Qm9aV3hzQUFBQUFBQnZQQzlrYVhZK0Nnb0tQSEJ5WlNCcFpEMGljSEpsVkdGbgpJajVVYUdVZ2Ju
VnNiQ0JqYUdGeVlXTjBaWEp6SUhOb2IzVnNaQ0JpWlNCemRISnBjSEJsWkNCdmRYUWdiMllnZEdo
bElITjBjbWx1Clp5QmhZbTkyWlNCaGJtUWdhWFFnYzJodmRXeGtJR2hoZG1VZ1lTQnNaVzVuZEdn
Z2IyWWdOUzRnUVc1a0lIUm9aU0JFVDAwZ2RHaHAKYm10eklIUm9aU0JzWlc1bmRHZ2dhWE11TGk0
OEwzQnlaVDRLQ2p4elkzSnBjSFErQ2lBZ0lDQnBaaUFvZDJsdVpHOTNMblJsYzNSUwpkVzV1WlhJ
cENpQWdJQ0FnSUNBZ2RHVnpkRkoxYm01bGNpNWtkVzF3UVhOVVpYaDBLQ2s3Q2dvZ0lDQWdkbUZ5
SUdScGRpQTlJR1J2ClkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ0p1ZFcwaUtUc0tJQ0Fn
SUhaaGNpQjBaWGgwSUQwZ1pHbDJMbVpwY25OMFEyaHAKYkdRN0lDQWdJQW9LSUNBZ0lIWmhjaUJ6
ZEhKcGJtY2dQU0IwWlhoMExteGxibWQwYURzS0lDQWdJR2xtSUNoMFpYaDBMbXhsYm1kMAphQ0E5
UFNBMUtRb2dJQ0FnSUNBZ0lITjBjbWx1WnlBclBTQWlJU0k3Q2lBZ0lDQmxiSE5sQ2lBZ0lDQWdJ
Q0FnYzNSeWFXNW5JQ3M5CklDSWdPaTBvSWpzS0NpQWdJQ0IyWVhJZ2NISmxJRDBnWkc5amRXMWxi
blF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9JbkJ5WlZSaFp5SXAKT3dvZ0lDQWdjSEpsTG1Gd2NHVnVa
RU5vYVd4a0tHUnZZM1Z0Wlc1MExtTnlaV0YwWlZSbGVIUk9iMlJsS0hOMGNtbHVaeWtwT3dvOApM
M05qY21sd2RENEsKCg==
</data>
<flag name="review"
          id="155939"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>