<?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>66427</bug_id>
          
          <creation_ts>2011-08-17 16:25:17 -0700</creation_ts>
          <short_desc>garden-o-matic spring cleaning: move scripts, styles, and images in the respective directories.</short_desc>
          <delta_ts>2011-08-17 16:28:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64188</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452701</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-17 16:25:17 -0700</bug_when>
    <thetext>garden-o-matic spring cleaning: move scripts, styles, and images in the respective directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452703</commentid>
    <comment_count>1</comment_count>
      <attachid>104275</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-17 16:26:17 -0700</bug_when>
    <thetext>Created attachment 104275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452707</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-17 16:27:31 -0700</bug_when>
    <thetext>Your patch crashed my browser, therefore it might be correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452710</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-17 16:28:48 -0700</bug_when>
    <thetext>Committed r93259: &lt;http://trac.webkit.org/changeset/93259&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104275</attachid>
            <date>2011-08-17 16:26:17 -0700</date>
            <delta_ts>2011-08-17 16:26:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66427-20110817162616.patch</filename>
            <type>text/plain</type>
            <size>736253</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkzMjU4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTI2IEBACisyMDExLTA4LTE3ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgZ2FyZGVuLW8tbWF0aWMgc3ByaW5nIGNsZWFuaW5nOiBtb3ZlIHNj
cmlwdHMsIHN0eWxlcywgYW5kIGltYWdlcyBpbiB0aGUgcmVzcGVjdGl2ZSBkaXJlY3Rvcmllcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NDI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvQnVnemlsbGEuanM6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkYm90Lmpz
OiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGJvdF91bml0dGVzdHMuanM6IFJl
bW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanM6IFJlbW92ZWQuCisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL0J1aWxkZXJfdW5pdHRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5qczogUmVtb3ZlZC4KKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IuanM6IFJlbW92ZWQuCisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qczogUmVtb3Zl
ZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmxha3lUZXN0QnVnRm9ybS5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanM6IFJlbW92ZWQu
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanM6IFJlbW92
ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9OUldUUmVzdWx0c1BhcnNlci5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvTmV3QnVnRm9ybS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvTmV3QnVnRm9ybV91bml0dGVzdHMuanM6IFJlbW92ZWQuCisgICAgICAgICogQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL09SV1RSZXN1bHRzUGFyc2VyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9QZXJzaXN0ZW50Q2FjaGUuanM6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1Rlc3RG
YWlsdXJlcy5jc3M6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1Rlc3RSZWxhdGVkQnVn
Rm9ybS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVGVzdFJlbGF0ZWRCdWdGb3Jt
X3VuaXR0ZXN0cy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVHJhYy5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRpbGl0aWVzLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9VdGlsaXRpZXNfdW5pdHRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9WaWV3Q29udHJvbGxlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvV2ViS2l0QnVnemlsbGEuanM6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1dlYktp
dEJ1aWxkYm90LmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlX3VuaXR0ZXN0cy5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvYnVnemlsbGFfdW5pdHRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9idWlsZGVycy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
YnVpbGRlcnNfdW5pdHRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jaGVj
a291dC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY2hlY2tvdXRfdW5pdHRlc3Rz
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb25maWcuanM6IFJlbW92ZWQuCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL2NvbnRyb2xsZXJzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9jb250cm9sbGVycy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29udHJv
bGxlcnMvcmViYXNlbGluZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNv
bi1ncmVlbi5wbmc6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Zhdmljb24tcmVkLnBu
ZzogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbDoKKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzOiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1h
Z2VzL2Zhdmljb24tZ3JlZW4ucG5nOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNv
bi1ncmVlbi5wbmcuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2ltYWdlcy9mYXZpY29uLXJlZC5wbmc6
IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9mYXZpY29uLXJlZC5wbmcuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL2luZGV4Lmh0bWw6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uY3NzOiBSZW1v
dmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9tb2RlbC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbW9kZWxfdW5p
dHRlc3RzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9uZXQuanM6IFJlbW92ZWQu
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL25ldF91bml0dGVzdHMuanM6IFJlbW92ZWQuCisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRtbDoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0
cy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0c191bml0dGVzdHMuanM6
IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1bi11bml0dGVzdHMuaHRtbDoKKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWd6aWxsYS5qczogQ29waWVkIGZyb20gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL0J1Z3ppbGxhLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVpbGRib3QuanMuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvQnVpbGRib3RfdW5pdHRlc3RzLmpzOiBDb3BpZWQgZnJvbSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvQnVpbGRib3RfdW5pdHRlc3RzLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL0J1aWxkZXIuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGVyLmpz
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXJfdW5pdHRlc3RzLmpzOiBDb3Bp
ZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVpbGRlcl91bml0dGVzdHMuanMuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybS5qczogQ29waWVkIGZyb20gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMuCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybV91bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5qcy4KKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qczogQ29waWVkIGZy
b20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yLmpzLgorICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qczog
Q29waWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0
ZXN0cy5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtLmpz
OiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmxha3lUZXN0QnVnRm9ybS5qcy4KKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtX3VuaXR0ZXN0cy5qczogQ29w
aWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0ZsYWt5VGVzdEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzLgor
ICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanM6
IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9MYXlvdXRUZXN0SGlzdG9yeUFuYWx5emVyLmpz
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpz
OiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMu
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTlJXVFJlc3VsdHNQYXJzZXIuanM6IENvcGll
ZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9OUldUUmVzdWx0c1BhcnNlci5qcy4KKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9OZXdCdWdGb3JtLmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvTmV3QnVnRm9ybS5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OZXdCdWdGb3Jt
X3VuaXR0ZXN0cy5qczogQ29waWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05ld0J1Z0Zvcm1fdW5p
dHRlc3RzLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2Vy
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvT1JXVFJlc3VsdHNQYXJzZXIuanMuCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzOiBDb3BpZWQgZnJv
bSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvUGVyc2lzdGVudENhY2hlLmpzLgorICAgICAgICAqIEJ1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybS5qczogQ29waWVkIGZyb20gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL1Rlc3RSZWxhdGVkQnVnRm9ybS5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9U
ZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvVGVzdFJlbGF0ZWRCdWdGb3JtX3VuaXR0ZXN0cy5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9UcmFjLmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVHJhYy5qcy4KKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXMuanM6IENvcGllZCBmcm9tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9VdGlsaXRpZXMuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVXRp
bGl0aWVzX3VuaXR0ZXN0cy5qczogQ29waWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1V0aWxpdGll
c191bml0dGVzdHMuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVmlld0NvbnRyb2xs
ZXIuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9WaWV3Q29udHJvbGxlci5qcy4KKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9XZWJLaXRCdWd6aWxsYS5qczogQ29waWVkIGZyb20g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL1dlYktpdEJ1Z3ppbGxhLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL1dlYktpdEJ1aWxkYm90LmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvV2Vi
S2l0QnVpbGRib3QuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZS5qczogQ29w
aWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2UuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvYmFzZV91bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNl
X3VuaXR0ZXN0cy5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWd6aWxsYV91bml0
dGVzdHMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9idWd6aWxsYV91bml0dGVzdHMu
anMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVpbGRlcnMuanM6IENvcGllZCBmcm9t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9idWlsZGVycy5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9idWlsZGVyc191bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9idWls
ZGVyc191bml0dGVzdHMuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXQu
anM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jaGVja291dC5qcy4KKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dF91bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9jaGVja291dF91bml0dGVzdHMuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvY29uZmlnLmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29uZmlnLmpzLgor
ICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbnRyb2xsZXJzOiBDb3BpZWQgZnJvbSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvY29udHJvbGxlcnMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29u
dHJvbGxlcnMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250cm9sbGVycy5qcy4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tYWluLmpzOiBDb3BpZWQgZnJvbSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5qcy4KKyAgICAgICAgKCk6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvbW9kZWwuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tb2RlbC5qcy4KKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tb2RlbF91bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9tb2RlbF91bml0dGVzdHMuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvbmV0LmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbmV0LmpzLgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldF91bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9uZXRfdW5pdHRlc3RzLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L3Jlc3VsdHMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZXN1bHRzLmpzLgorICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHNfdW5pdHRlc3RzLmpzOiBDb3BpZWQgZnJv
bSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0c191bml0dGVzdHMuanMuCisgICAgICAgICogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy90cmFjX3VuaXR0ZXN0cy5qcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS5qczog
Q29waWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3VpL3Jlc3VsdHMuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1
bHRzLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3Rz
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkvcmVzdWx0c191bml0dGVzdHMuanMu
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWlfdW5pdHRlc3RzLmpzOiBDb3BpZWQgZnJv
bSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvdWlfdW5pdHRlc3RzLmpzLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3VuZXhwZWN0ZWQtcGFzc2VzLmpzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
dW5leHBlY3RlZC1wYXNzZXMuanMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9UZXN0RmFp
bHVyZXMuY3NzOiBDb3BpZWQgZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVGVzdEZhaWx1cmVzLmNzcy4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL21haW4uY3NzOiBDb3BpZWQgZnJvbSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5jc3MuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRtbDoKKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvdHJhY191bml0dGVzdHMuanM6IFJlbW92ZWQuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3VpLmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1bHRz
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWlfdW5pdHRlc3RzLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91bmV4cGVjdGVkLXBhc3Nlcy5odG1sOgorICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy91bmV4cGVjdGVkLXBhc3Nlcy5qczogUmVtb3ZlZC4KKwogMjAxMS0wOC0xNyAg
Sm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIFNW
TlRlc3QudGVzdF9zdm5fYXBwbHkgdXNlIHRoZSBzYW1lIHRpbWV6b25lIGxvZ2ljIGFzIFZDU1V0
aWxzLnBtCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVnemlsbGEuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL0J1Z3ppbGxhLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9CdWd6aWxsYS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotdmFyIGJ1Z3ppbGxhID0gYnVnemlsbGEgfHwge307Ci0KLShmdW5jdGlvbigpIHsK
LQotdmFyIGtPcGVuU3RhdHVzZXMgPSB7Ci0gICAgVU5DT05GSVJNRUQ6IHRydWUsCi0gICAgTkVX
OiB0cnVlLAotICAgIEFTU0lHTkVEOiB0cnVlLAotICAgIFJFT1BFTkVEOiB0cnVlLAotfTsKLQot
dmFyIGdfc2VhcmNoQ2FjaGUgPSBuZXcgYmFzZS5Bc3luY2hyb25vdXNDYWNoZShmdW5jdGlvbihx
dWVyeSwgY2FsbGJhY2spIHsKLSAgICB2YXIgdXJsID0gY29uZmlnLmtCdWd6aWxsYVVSTCArICcv
YnVnbGlzdC5jZ2k/JyArICQucGFyYW0oewotICAgICAgICBjdHlwZTogJ3JzcycsCi0gICAgICAg
IG9yZGVyOiAnYnVncy5idWdfaWQgZGVzYycsCi0gICAgICAgIHF1aWNrc2VhcmNoOiBxdWVyeSwK
LSAgICB9KTsKLQotICAgIG5ldC5nZXQodXJsLCBmdW5jdGlvbihyZXNwb25zZVhNTCkgewotICAg
ICAgICB2YXIgZW50cmllcyA9IHJlc3BvbnNlWE1MLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdlbnRy
eScpOwotICAgICAgICB2YXIgcmVzdWx0cyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChlbnRy
aWVzLCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMg
YW4gWFNTIHJpc2s/Ci0gICAgICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gZW50cnkuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3N1bW1hcnknKVswXS50ZXh0Q29udGVudDsKLSAgICAgICAgICAg
IHZhciBzdGF0dXNSb3cgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcigndHIuYnpfZmVlZF9idWdf
c3RhdHVzJyk7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHRpdGxlOiBl
bnRyeS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGl0bGUnKVswXS50ZXh0Q29udGVudCwKLSAgICAg
ICAgICAgICAgICB1cmw6IGVudHJ5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZCcpWzBdLnRleHRD
b250ZW50LAotICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzUm93LmNlbGxzWzFdLnRleHRD
b250ZW50LAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGNhbGxiYWNrKHJl
c3VsdHMpOwotICAgIH0pOwotfSk7Ci0KLWJ1Z3ppbGxhLnF1aWNrU2VhcmNoID0gZnVuY3Rpb24o
cXVlcnksIGNhbGxiYWNrKQotewotICAgIGdfc2VhcmNoQ2FjaGUuZ2V0KHF1ZXJ5LCBjYWxsYmFj
ayk7Ci19OwotCi1idWd6aWxsYS5pc09wZW5TdGF0dXMgPSBmdW5jdGlvbihzdGF0dXMpCi17Ci0g
ICAgcmV0dXJuIHN0YXR1cyBpbiBrT3BlblN0YXR1c2VzOwotfTsKLQotLy8gVGhpcyB2YWx1ZSBp
cyBidWlsdC1pbiB0byBhbGwgQnVnemlsbGEgaW5zdGFsbGF0aW9ucy4gU2VlIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzYxNjYwPi4KLWJ1Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGggPSAyNTU7
Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVpbGRib3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkYm90LmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9CdWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotZnVuY3Rpb24gQnVpbGRib3QoYmFzZVVSTCkgewotICAgIHRoaXMuYmFzZVVS
TCA9IGJhc2VVUkw7Ci0gICAgdGhpcy5fY2FjaGUgPSB7fTsKLX0KLQotQnVpbGRib3QucHJvdG90
eXBlID0gewotICAgIF9idWlsZGVyczoge30sCi0KLSAgICBidWlsZFVSTDogZnVuY3Rpb24oYnVp
bGRlck5hbWUsIGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgJ2J1
aWxkZXJzLycgKyBidWlsZGVyTmFtZSArICcvYnVpbGRzLycgKyBidWlsZE5hbWU7Ci0gICAgfSwK
LQotICAgIGJ1aWxkZXJOYW1lZDogZnVuY3Rpb24obmFtZSkgewotICAgICAgICBpZiAoIShuYW1l
IGluIHRoaXMuX2J1aWxkZXJzKSkKLSAgICAgICAgICAgIHRoaXMuX2J1aWxkZXJzW25hbWVdID0g
bmV3IEJ1aWxkZXIobmFtZSwgdGhpcyk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9idWlsZGVyc1tu
YW1lXTsKLSAgICB9LAotCi0gICAgZ2V0VGVzdGVyczogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAg
ICAgICAgdmFyIGNhY2hlS2V5ID0gJ2dldFRlc3RlcnMnOwotICAgICAgICBpZiAoY2FjaGVLZXkg
aW4gdGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2J1aWxkZXJzRm9y
TmFtZXModGhpcy5fY2FjaGVbY2FjaGVLZXldKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGdldFJlc291cmNlKHRo
aXMuYmFzZVVSTCArICdyZXN1bHRzLycsIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgdmFy
IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdodG1sJyk7Ci0gICAgICAgICAgICByb290
LmlubmVySFRNTCA9IHhoci5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICB2YXIgbmFtZXMgPSBB
cnJheS5wcm90b3R5cGUubWFwLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCd0ZDpmaXJzdC1j
aGlsZCA+IGEgPiBiJyksIGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbS5pbm5lclRleHQucmVwbGFjZSgvXC8kLywgJycpOwotICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgICAgIHNlbGYuX2NhY2hlW2NhY2hlS2V5XSA9IG5hbWVzOwotICAgICAgICAgICAgY2Fs
bGJhY2soc2VsZi5fYnVpbGRlcnNGb3JOYW1lcyhuYW1lcykpOwotICAgICAgICB9KTsKLSAgICB9
LAotCi0gICAgLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5n
IHByb3BlcnRpZXM6Ci0gICAgLy8gICByZXZpc2lvbjogc291cmNlIHJldmlzaW9uIG51bWJlciBm
b3IgdGhpcyBidWlsZCAoaW50ZWdlcikKLSAgICAvLyAgIGJ1aWxkTnVtYmVyOiBudW1iZXIgb2Yg
dGhpcyBidWlsZCAoaW50ZWdlcikKLSAgICBwYXJzZUJ1aWxkTmFtZTogZnVuY3Rpb24oYnVpbGRO
YW1lKSB7Ci0gICAgICAgIHRocm93ICJEZXJpdmVkIGNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiOwot
ICAgIH0sCi0KLSAgICByZXN1bHRzRGlyZWN0b3J5VVJMOiBmdW5jdGlvbihidWlsZGVyTmFtZSwg
YnVpbGROYW1lKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAncmVzdWx0cy8nICsg
ZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkZXJOYW1lKSArICcvJyArIGVuY29kZVVSSUNvbXBvbmVu
dChidWlsZE5hbWUpICsgJy8nOwotICAgIH0sCi0KLSAgICBfYnVpbGRlcnNGb3JOYW1lczogZnVu
Y3Rpb24obmFtZXMpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICByZXR1cm4g
bmFtZXMubWFwKGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIHNlbGYuYnVpbGRlck5hbWVkKG5hbWUp
IH0pOwotICAgIH0sCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkYm90X3VuaXR0ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVpbGRib3RfdW5pdHRlc3RzLmpz
CShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGJvdF91bml0dGVzdHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlv
bigpIHsKLQotbW9kdWxlKCdCdWlsZGJvdCcpOwotCi10ZXN0KCdyZXN1bHRzRGlyZWN0b3J5VVJM
IGlzIFVSSS1lbmNvZGVkJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGJ1aWxkYm90ID0gbmV3
IEJ1aWxkYm90KCdodHRwOi8vYnVpbGQuZXhhbXBsZS5jb20vJyk7Ci0gICAgZXF1YWwoYnVpbGRi
b3QucmVzdWx0c0RpcmVjdG9yeVVSTCgnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsICdyMTAg
KDUpJyksICdodHRwOi8vYnVpbGQuZXhhbXBsZS5jb20vcmVzdWx0cy9XaW5kb3dzJTIwNyUyMFJl
bGVhc2UlMjAoVGVzdHMpL3IxMCUyMCg1KS8nKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL0J1aWxkZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxk
ZXIuanMJKHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBCdWls
ZGVyKG5hbWUsIGJ1aWxkYm90KSB7Ci0gICAgdGhpcy5uYW1lID0gbmFtZTsKLSAgICB0aGlzLmJ1
aWxkYm90ID0gYnVpbGRib3Q7Ci0gICAgdGhpcy5fY2FjaGUgPSB7fTsKLX0KLQotQnVpbGRlci5w
cm90b3R5cGUgPSB7Ci0gICAgYnVpbGRVUkw6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAg
ICByZXR1cm4gdGhpcy5idWlsZGJvdC5idWlsZFVSTCh0aGlzLm5hbWUsIGJ1aWxkTmFtZSk7Ci0g
ICAgfSwKLQotICAgIGZhaWx1cmVEaWFnbm9zaXNUZXh0QW5kVVJMOiBmdW5jdGlvbihidWlsZE5h
bWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0KSB7Ci0gICAgICAgIHZhciB1cmxTdGVtID0gdGhpcy5y
ZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxkTmFtZSkgKyB0ZXN0TmFtZS5yZXBsYWNlKC9cLlteLl0r
JC8sICcnKTsKLSAgICAgICAgdmFyIGRpYWdub3N0aWNJbmZvID0gewotICAgICAgICAgICAgZmFp
bDogewotICAgICAgICAgICAgICAgIHRleHQ6ICdwcmV0dHkgZGlmZicsCi0gICAgICAgICAgICAg
ICAgdXJsOiB1cmxTdGVtICsgJy1wcmV0dHktZGlmZi5odG1sJywKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBmbGFreTogewotICAgICAgICAgICAgICAgIHRleHQ6ICdwcmV0dHkgZGlmZiAo
Zmxha3kpJywKLSAgICAgICAgICAgICAgICB1cmw6IHVybFN0ZW0gKyAnLXByZXR0eS1kaWZmLmh0
bWwnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHRpbWVvdXQ6IHsKLSAgICAgICAgICAg
ICAgICB0ZXh0OiAndGltZWQgb3V0JywKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBjcmFz
aDogewotICAgICAgICAgICAgICAgIHRleHQ6ICdjcmFzaCBsb2cnLAotICAgICAgICAgICAgICAg
IHVybDogdXJsU3RlbSArICctY3Jhc2gtbG9nLnR4dCcsCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgJ3dlYnByb2Nlc3MgY3Jhc2gnOiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ3dlYiBw
cm9jZXNzIGNyYXNoIGxvZycsCi0gICAgICAgICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1jcmFz
aC1sb2cudHh0JywKLSAgICAgICAgICAgIH0sCi0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJu
IGRpYWdub3N0aWNJbmZvW3Rlc3RSZXN1bHQuZmFpbHVyZVR5cGVdOwotICAgIH0sCi0KLSAgICBn
ZXRCdWlsZE5hbWVzOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICB0aGlzLl9nZXRCdWls
ZE5hbWVzRnJvbVJlc3VsdHNEaXJlY3RvcnkodGhpcy5idWlsZGJvdC5iYXNlVVJMICsgJ3Jlc3Vs
dHMvJyArIHRoaXMubmFtZSwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBnZXRNb3N0UmVjZW50
Q29tcGxldGVkQnVpbGROdW1iZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBj
YWNoZUtleSA9ICdnZXRNb3N0UmVjZW50Q29tcGxldGVkQnVpbGROdW1iZXInOwotICAgICAgICBp
ZiAoY2FjaGVLZXkgaW4gdGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMu
X2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGdldFJlc291cmNlKHNlbGYuYnVpbGRib3Qu
YmFzZVVSTCArICdqc29uL2J1aWxkZXJzLycgKyBzZWxmLm5hbWUsIGZ1bmN0aW9uKHhocikgewot
ICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOwotCi0g
ICAgICAgICAgICB2YXIgY3VycmVudEJ1aWxkcyA9IHt9OwotICAgICAgICAgICAgaWYgKCdjdXJy
ZW50QnVpbGRzJyBpbiBkYXRhKQotICAgICAgICAgICAgICAgIGRhdGEuY3VycmVudEJ1aWxkcy5m
b3JFYWNoKGZ1bmN0aW9uKGJ1aWxkTnVtYmVyKSB7IGN1cnJlbnRCdWlsZHNbYnVpbGROdW1iZXJd
ID0gdHJ1ZSB9KTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRhdGEuY2FjaGVkQnVpbGRz
Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEuY2Fj
aGVkQnVpbGRzW2ldIGluIGN1cnJlbnRCdWlsZHMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gZGF0YS5jYWNo
ZWRCdWlsZHNbaV07Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YS5jYWNoZWRCdWlsZHNb
aV0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gLTE7Ci0gICAgICAgICAgICBjYWxsYmFjayhzZWxm
Ll9jYWNoZVtjYWNoZUtleV0pOwotICAgICAgICB9LAotICAgICAgICBmdW5jdGlvbih4aHIpIHsK
LSAgICAgICAgICAgIHNlbGYuX2NhY2hlW2NhY2hlS2V5XSA9IC0xOwotICAgICAgICAgICAgY2Fs
bGJhY2soc2VsZi5fY2FjaGVbY2FjaGVLZXldKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAg
IGdldE51bWJlck9mRmFpbGluZ1Rlc3RzOiBmdW5jdGlvbihidWlsZE51bWJlciwgY2FsbGJhY2sp
IHsKLSAgICAgICAgdmFyIGNhY2hlS2V5ID0gdGhpcy5uYW1lICsgJ19nZXROdW1iZXJPZkZhaWxp
bmdUZXN0c18nICsgYnVpbGROdW1iZXI7Ci0gICAgICAgIGNvbnN0IGN1cnJlbnRDYWNoZWREYXRh
VmVyc2lvbiA9IDM7Ci0gICAgICAgIGlmIChQZXJzaXN0ZW50Q2FjaGUuY29udGFpbnMoY2FjaGVL
ZXkpKSB7Ci0gICAgICAgICAgICB2YXIgY2FjaGVkRGF0YSA9IFBlcnNpc3RlbnRDYWNoZS5nZXQo
Y2FjaGVLZXkpOwotICAgICAgICAgICAgaWYgKGNhY2hlZERhdGEudmVyc2lvbiA9PT0gY3VycmVu
dENhY2hlZERhdGFWZXJzaW9uKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soY2FjaGVkRGF0
YS5mYWlsdXJlQ291bnQsIGNhY2hlZERhdGEudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVz
dWx0ID0geyBmYWlsdXJlQ291bnQ6IC0xLCB0b29NYW55RmFpbHVyZXM6IGZhbHNlLCB2ZXJzaW9u
OiBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24gfTsKLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
Ci0gICAgICAgIHNlbGYuX2dldEJ1aWxkSlNPTihidWlsZE51bWJlciwgZnVuY3Rpb24oZGF0YSkg
ewotICAgICAgICAgICAgdmFyIGxheW91dFRlc3RTdGVwID0gZGF0YS5zdGVwcy5maW5kRmlyc3Qo
ZnVuY3Rpb24oc3RlcCkgeyByZXR1cm4gc3RlcC5uYW1lID09PSAnbGF5b3V0LXRlc3QnOyB9KTsK
LSAgICAgICAgICAgIGlmICghbGF5b3V0VGVzdFN0ZXApIHsKLSAgICAgICAgICAgICAgICBQZXJz
aXN0ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCEoJ2lz
RmluaXNoZWQnIGluIGxheW91dFRlc3RTdGVwKSkgewotICAgICAgICAgICAgICAgIC8vIHJ1bi13
ZWJraXQtdGVzdHMgbmV2ZXIgZXZlbiByYW4sIG9yIGRpZG4ndCBmaW5pc2ggcnVubmluZy4KLSAg
ICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29NYW55
RmFpbHVyZXMpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCEoJ3Jlc3VsdHMnIGluIGxheW91dFRlc3RTdGVwKSB8fCBsYXlvdXRUZXN0
U3RlcC5yZXN1bHRzWzBdID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEoJ3RpbWVzJyBp
biBsYXlvdXRUZXN0U3RlcCkgfHwgbGF5b3V0VGVzdFN0ZXAudGltZXMubGVuZ3RoIDwgMiB8fCBs
YXlvdXRUZXN0U3RlcC50aW1lc1sxXSAtIGxheW91dFRlc3RTdGVwLnRpbWVzWzBdIDwgc2VsZi5f
bWluaW11bVN1Y2Nlc3NmdWxMYXlvdXRUZXN0U3RlcFJ1blRpbWUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gRWl0aGVyIHNvbWV0aGluZyBjYXVzZWQgdGhlIHN0YXJ0L3N0b3AgdGltZXMgbm90
IHRvIGJlIHJlY29yZGVkLCBvcgotICAgICAgICAgICAgICAgICAgICAvLyBydW4td2Via2l0LXRl
c3RzIHJhbiBzbyBxdWlja2x5IHRoYXQgd2UgY2FuJ3QgYmVsaWV2ZSB0aGVyZSB3YXNuJ3QgYW4g
ZXJyb3IKLSAgICAgICAgICAgICAgICAgICAgLy8gKGUuZy4sIGEgYnVnIGluIHRoZSBzY3JpcHQg
dGhhdCBtYWRlIGl0IG5vdCBmaW5kIGFueSB0ZXN0cyB0byBydW4pLgotICAgICAgICAgICAgICAg
ICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFpbHVyZUNvdW50LCByZXN1bHQudG9vTWFueUZhaWx1
cmVzKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIC8vIEFsbCB0ZXN0cyBwYXNzZWQuCi0gICAgICAgICAgICAgICAgcmVz
dWx0LmZhaWx1cmVDb3VudCA9IDA7Ci0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNl
dChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFp
bHVyZUNvdW50LCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChsYXlvdXRUZXN0U3RlcC5yZXN1
bHRzWzBdID09PSA0KSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBidWlsZCBzdGVwIHdhcyBp
bnRlcnJ1cHRlZCAocGVyaGFwcyBkdWUgdG8gdGhlIGJ1aWxkIHNsYXZlIHJlc3RhcnRpbmcpLgot
ICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0g
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01h
bnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoL0V4aXRpbmcgZWFybHkvLnRlc3QobGF5b3V0VGVzdFN0ZXAucmVzdWx0
c1sxXVswXSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHRydWU7
Ci0KLSAgICAgICAgICAgIHJlc3VsdC5mYWlsdXJlQ291bnQgPSBsYXlvdXRUZXN0U3RlcC5yZXN1
bHRzWzFdLnJlZHVjZShmdW5jdGlvbihzdW0sIG91dHB1dExpbmUpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2ggPSAvXihcZCspXHMvLmV4ZWMob3V0cHV0TGluZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFtYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAg
ICAgICAgICAvLyBEb24ndCBjb3VudCBsZWFrcywgbmV3IHRlc3RzLCBvciBwYXNzZXMgYXMgZmFp
bHVyZXMuCi0gICAgICAgICAgICAgICAgaWYgKG91dHB1dExpbmUuY29udGFpbnMoJ2xlYWsnKSB8
fCBvdXRwdXRMaW5lLmNvbnRhaW5zKCd3ZXJlIG5ldycpIHx8IG91dHB1dExpbmUuY29udGFpbnMo
J25ldyBwYXNzZXMnKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3VtICsgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgICAg
IH0sIDApOwotCi0gICAgICAgICAgICBpZiAoIXJlc3VsdC5mYWlsdXJlQ291bnQpIHsKLSAgICAg
ICAgICAgICAgICAvLyBydW4td2Via2l0LXRlc3RzIGV4aXRlZCB3aXRoIGEgbm9uLXplcm8gZXhp
dCBzdGF0dXMsIGJ1dCB3ZQotICAgICAgICAgICAgICAgIC8vIGRpZG4ndCBmaW5kIGFueSBvdXRw
dXQgYWJvdXQgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCi0gICAgICAgICAgICAgICAgLy8g
U29tZXRoaW5nIG11c3QgaGF2ZSBnb25lIHdyb25nIChlLmcuLCBydW4td2Via2l0LXRlc3RzIHRp
bWVkCi0gICAgICAgICAgICAgICAgLy8gb3V0IGFuZCB3YXMga2lsbGVkIGJ5IGJ1aWxkYm90KS4K
LSAgICAgICAgICAgICAgICByZXN1bHQuZmFpbHVyZUNvdW50ID0gLTE7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFpbHVyZUNvdW50LCByZXN1bHQudG9vTWFueUZh
aWx1cmVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIGdldE9sZEJ1aWxkTmFtZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICAgIHRoaXMuX2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0
c0RpcmVjdG9yeSh0aGlzLmJ1aWxkYm90LmJhc2VVUkwgKyAnb2xkLXJlc3VsdHMvJyArIHRoaXMu
bmFtZSwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICByZXN1bHRzRGlyZWN0b3J5VVJMOiBmdW5j
dGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRib3QucmVzdWx0c0Rp
cmVjdG9yeVVSTCh0aGlzLm5hbWUsIGJ1aWxkTmFtZSk7Ci0gICAgfSwKLQotICAgIHJlc3VsdHNQ
YWdlVVJMOiBmdW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0
c0RpcmVjdG9yeVVSTChidWlsZE5hbWUpICsgJ3Jlc3VsdHMuaHRtbCc7Ci0gICAgfSwKLQotICAg
IF9nZXRCdWlsZEpTT046IGZ1bmN0aW9uKGJ1aWxkTnVtYmVyLCBjYWxsYmFjaykgewotICAgICAg
ICB2YXIgY2FjaGVLZXkgPSAnZ2V0QnVpbGRKU09OXycgKyBidWlsZE51bWJlcjsKLSAgICAgICAg
aWYgKGNhY2hlS2V5IGluIHRoaXMuX2NhY2hlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlz
Ll9jYWNoZVtjYWNoZUtleV0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBnZXRSZXNvdXJjZShzZWxmLmJ1aWxkYm90
LmJhc2VVUkwgKyAnanNvbi9idWlsZGVycy8nICsgc2VsZi5uYW1lICsgJy9idWlsZHMvJyArIGJ1
aWxkTnVtYmVyLCBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5w
YXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIHNlbGYuX2NhY2hlW2NhY2hlS2V5
XSA9IGRhdGE7Ci0gICAgICAgICAgICBjYWxsYmFjayhkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAg
fSwKLQotICAgIF9nZXRCdWlsZE5hbWVzRnJvbVJlc3VsdHNEaXJlY3Rvcnk6IGZ1bmN0aW9uKGRp
cmVjdG9yeVVSTCwgY2FsbGJhY2spIHsKLSAgICAgICAgdmFyIGNhY2hlS2V5ID0gJ19nZXRCdWls
ZE5hbWVzRnJvbVJlc3VsdHNEaXJlY3RvcnkuJyArIGRpcmVjdG9yeVVSTDsKLSAgICAgICAgaWYg
KGNhY2hlS2V5IGluIHRoaXMuX2NhY2hlKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9j
YWNoZVtjYWNoZUtleV0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIGZ1bmN0aW9uIGJ1aWxkTmFtZXNGcm9tRGly
ZWN0b3J5WEhSKHhocikgewotICAgICAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdodG1sJyk7Ci0gICAgICAgICAgICByb290LmlubmVySFRNTCA9IHhoci5yZXNwb25z
ZVRleHQ7Ci0KLSAgICAgICAgICAgIHZhciBidWlsZE5hbWVzID0gQXJyYXkucHJvdG90eXBlLm1h
cC5jYWxsKHJvb3QucXVlcnlTZWxlY3RvckFsbCgndGQ6Zmlyc3QtY2hpbGQgPiBhID4gYicpLCBm
dW5jdGlvbihlbGVtKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uaW5uZXJUZXh0LnJl
cGxhY2UoL1wvJC8sICcnKTsKLSAgICAgICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbihmaWxlbmFt
ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1l
KGZpbGVuYW1lKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnVpbGROYW1lcy5yZXZl
cnNlKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBidWlsZE5hbWVzOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZ2V0UmVzb3VyY2UoZGlyZWN0b3J5VVJMLCBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAg
ICAgIHZhciBidWlsZE5hbWVzID0gYnVpbGROYW1lc0Zyb21EaXJlY3RvcnlYSFIoeGhyKTsKLSAg
ICAgICAgICAgIHNlbGYuX2NhY2hlW2NhY2hlS2V5XSA9IGJ1aWxkTmFtZXM7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhidWlsZE5hbWVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIC8vIEFu
eSBzdWNjZXNzZnVsIHJ1bnMgb2YgcnVuLXdlYmtpdC10ZXN0cyB0aGF0IHRvb2sgbGVzcyB0aGFu
IHRoaXMgbnVtYmVyIG9mIHNlY29uZHMgYXJlCi0gICAgLy8gYXNzdW1lZCB0byBiZSBlcnJvcnMu
Ci0gICAgX21pbmltdW1TdWNjZXNzZnVsTGF5b3V0VGVzdFN0ZXBSdW5UaW1lOiAyMCwKLX07Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVpbGRlcl91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXJfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGVyX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSwyNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxlKCJCdWls
ZGVyIik7Ci0KLWZ1bmN0aW9uIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rlc3RzVGVzdChqc29uRGF0
YSwgY2FsbGJhY2spIHsKLSAgICB2YXIgbW9ja0J1aWxkYm90ID0ge307Ci0gICAgbW9ja0J1aWxk
Ym90LmJhc2VVUkwgPSAnaHR0cDovL2V4YW1wbGUuY29tLyc7Ci0KLSAgICB2YXIgYnVpbGRlciA9
IG5ldyBCdWlsZGVyKCd0ZXN0IGJ1aWxkZXInLCBtb2NrQnVpbGRib3QpOwotCi0gICAgdmFyIHJl
YWxHZXRSZXNvdXJjZSA9IHdpbmRvdy5nZXRSZXNvdXJjZTsKLSAgICB3aW5kb3cuZ2V0UmVzb3Vy
Y2UgPSBmdW5jdGlvbih1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAg
ICAgICB2YXIgbW9ja1hIUiA9IHt9OwotICAgICAgICBtb2NrWEhSLnJlc3BvbnNlVGV4dCA9IEpT
T04uc3RyaW5naWZ5KGpzb25EYXRhKTsKLQotICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUg
YmV0dGVyIGZvciB0aGlzIGNhbGxiYWNrIHRvIGhhcHBlbgotICAgICAgICAvLyBhc3luY2hyb25v
dXNseSwgdG8gbWF0Y2ggd2hhdCBoYXBwZW5zIGZvciByZWFsIHJlcXVlc3RzLgotICAgICAgICBz
dWNjZXNzQ2FsbGJhY2sobW9ja1hIUik7Ci0gICAgfTsKLQotICAgIC8vIEZJWE1FOiBJdCdzIGxh
bWUgdG8gYmUgbW9kaWZ5aW5nIHNpbmdsZXRvbnMgbGlrZSB0aGlzLiBXZSBzaG91bGQgZ2V0IHJp
ZAotICAgIC8vIG9mIG91ciBzaW5nbGV0b24gdXNhZ2UgZW50aXJlbHkhCi0gICAgb2soISgiUGVy
c2lzdGVudENhY2hlIiBpbiB3aW5kb3cpKTsKLSAgICB3aW5kb3cuUGVyc2lzdGVudENhY2hlID0g
ewotICAgICAgICBjb250YWluczogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwKLSAgICAg
ICAgc2V0OiBmdW5jdGlvbigpIHsgfSwKLSAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgfSwKLSAg
ICB9OwotCi0gICAgYnVpbGRlci5nZXROdW1iZXJPZkZhaWxpbmdUZXN0cygxLCBjYWxsYmFjayk7
Ci0KLSAgICB3aW5kb3cuZ2V0UmVzb3VyY2UgPSByZWFsR2V0UmVzb3VyY2U7Ci0gICAgZXF1YWwo
d2luZG93LmdldFJlc291cmNlLCByZWFsR2V0UmVzb3VyY2UpOwotICAgIGRlbGV0ZSB3aW5kb3cu
UGVyc2lzdGVudENhY2hlOwotfQotCi10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyBzaG91
bGRuJ3QgaW5jbHVkZSBsZWFrcyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRh
ID0gewotICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlz
RmluaXNoZWQ6IHRydWUsCi0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLAotICAgICAg
ICAgICAgICAgIG5hbWU6ICdsYXlvdXQtdGVzdCcsCi0gICAgICAgICAgICAgICAgcmVzdWx0czog
WwotICAgICAgICAgICAgICAgICAgICAyLAotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiMjE3OCB0b3RhbCBsZWFrcyBmb3VuZCEiLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICIyIHRlc3QgY2FzZXMgKDwxJSkgaGFkIGluY29ycmVjdCBsYXlvdXQiLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICIyIHRlc3QgY2FzZXMgKDwxJSkgY3Jhc2hlZCIsCi0g
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICB0aW1lczogWwotICAgICAgICAgICAgICAgICAgICAxMzEwNTk5MjA0LjEyMzEyMjksCi0gICAg
ICAgICAgICAgICAgICAgIDEzMTA2MDAxNTIuOTczNjU5LAotICAgICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgIH0sCi0gICAgICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFp
bGluZ1Rlc3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFp
bHVyZXMpIHsKLSAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCA0KTsKLSAgICAgICAgZXF1YWwo
dG9vTWFueUZhaWx1cmVzLCBmYWxzZSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiZ2V0TnVtYmVy
T2ZGYWlsaW5nVGVzdHMgZGV0ZWN0cyBzcHVyaW91cyBydW4td2Via2l0LXRlc3RzIGZhaWx1cmVz
IiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAgIHN0ZXBz
OiBbCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNGaW5pc2hlZDogdHJ1ZSwgCi0g
ICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLCAKLSAgICAgICAgICAgICAgICBuYW1lOiAi
bGF5b3V0LXRlc3QiLCAKLSAgICAgICAgICAgICAgICByZXN1bHRzOiBbCi0gICAgICAgICAgICAg
ICAgICAgIDIsIAotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAibGF5b3V0LXRlc3QiCi0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBd
LCAKLSAgICAgICAgICAgICAgICBzdGVwX251bWJlcjogNywgCi0gICAgICAgICAgICAgICAgdGV4
dDogWwotICAgICAgICAgICAgICAgICAgICAibGF5b3V0LXRlc3QiCi0gICAgICAgICAgICAgICAg
XSwgCi0gICAgICAgICAgICAgICAgdGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMDQz
NzczNi4wMDQ5NCwgCi0gICAgICAgICAgICAgICAgICAgIDEzMTA0NDAxMTguMDM4MDIzCi0gICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sIAotICAgICAgICBdLAotICAgIH07Ci0KLSAg
ICBydW5HZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1
cmVDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwg
LTEpOwotICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIGZhbHNlKTsKLSAgICB9KTsKLX0p
OwotCi10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyB1bmRlcnN0YW5kcyBOUldUIGV4aXRp
bmcgZWFybHkgZHVlIHRvIHRvbyBtYW55IGZhaWx1cmVzIiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAg
Y29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAgIHN0ZXBzOiBbCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaXNGaW5pc2hlZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAgaXNTdGFydGVk
OiB0cnVlLCAKLSAgICAgICAgICAgICAgICBuYW1lOiAibGF5b3V0LXRlc3QiLCAKLSAgICAgICAg
ICAgICAgICByZXN1bHRzOiBbCi0gICAgICAgICAgICAgICAgICAyLCAKLSAgICAgICAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAiMjAxMS0wNy0xMyAwNDozODo0NiwzMTUgMTEy
NDcgbWFuYWdlci5weTo3ODAgV0FSTklORyBFeGl0aW5nIGVhcmx5IGFmdGVyIDIwIGNyYXNoZXMg
YW5kIDAgdGltZW91dHMuIDIyNTEgdGVzdHMgcnVuLiIsIAotICAgICAgICAgICAgICAgICAgICAg
ICIyMCBmYWlsZWQiCi0gICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgXSwgCi0g
ICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDQsIAotICAgICAgICAgICAgICAgIHRleHQ6IFsK
LSAgICAgICAgICAgICAgICAgICAgIjIwMTEtMDctMTMgMDQ6Mzg6NDYsMzE1IDExMjQ3IG1hbmFn
ZXIucHk6NzgwIFdBUk5JTkcgRXhpdGluZyBlYXJseSBhZnRlciAyMCBjcmFzaGVzIGFuZCAwIHRp
bWVvdXRzLiAyMjUxIHRlc3RzIHJ1bi4iLCAKLSAgICAgICAgICAgICAgICAgICAgIjIwIGZhaWxl
ZCIKLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICB0aW1lczogWwotICAgICAg
ICAgICAgICAgICAgICAxMzEwNTU3MTE1Ljc5MzA4MiwgCi0gICAgICAgICAgICAgICAgICAgIDEz
MTA1NTcxMjkuODMyMTA0Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwgCi0gICAg
ICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rlc3RzVGVzdChqc29u
RGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAg
ZXF1YWwoZmFpbHVyZUNvdW50LCAyMCk7Ci0gICAgICAgIGVxdWFsKHRvb01hbnlGYWlsdXJlcywg
dHJ1ZSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMgdHJl
YXRzIGJ1aWxkIHN0ZXAgaW50ZXJydXB0aW9ucyBhcyBlcnJvcnMiLCA0LCBmdW5jdGlvbigpIHsK
LSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLAotICAgICAgICAgICAgICAgIGlzU3Rh
cnRlZDogdHJ1ZSwKLSAgICAgICAgICAgICAgICBuYW1lOiAibGF5b3V0LXRlc3QiLAotICAgICAg
ICAgICAgICAgIHJlc3VsdHM6IFsKLSAgICAgICAgICAgICAgICAgIDQsCi0gICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgImludGVycnVwdGVkIiwKLSAgICAgICAgICAg
ICAgICAgIF0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIHN0ZXBfbnVtYmVy
OiA1LAotICAgICAgICAgICAgICAgIHRleHQ6IFsKLSAgICAgICAgICAgICAgICAgICAgImxheW91
dC10ZXN0IiwKLSAgICAgICAgICAgICAgICAgICAgImludGVycnVwdGVkIiwKLSAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEz
MTA1OTkyMDQuMTIzMTIyOSwKLSAgICAgICAgICAgICAgICAgICAgMTMxMDYwMDE1Mi45NzM2NTks
Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwKLSAgICAgICAgXSwKLSAgICB9Owot
Ci0gICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihm
YWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291
bnQsIC0xKTsKLSAgICAgICAgZXF1YWwodG9vTWFueUZhaWx1cmVzLCBmYWxzZSk7Ci0gICAgfSk7
Ci19KTsKLQotdGVzdCgiZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMgdHJlYXRzIHVuZmluaXNoZWQg
dGVzdCBydW5zIGFzIGVycm9ycyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRh
ID0gewotICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlz
U3RhcnRlZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAgbmFtZTogImxheW91dC10ZXN0IiwgCi0g
ICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDUsIAotICAgICAgICAgICAgICAgIHRleHQ6IFsK
LSAgICAgICAgICAgICAgICAgICAgImxheW91dC10ZXN0cyBydW5uaW5nIgotICAgICAgICAgICAg
ICAgIF0sIAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEz
MTI5ODkyOTUuNTE4NDgxLCAKLSAgICAgICAgICAgICAgICAgICAgbnVsbAotICAgICAgICAgICAg
ICAgIF0KLSAgICAgICAgICAgIH0sIAotICAgICAgICBdLAotICAgIH07Ci0KLSAgICBydW5HZXRO
dW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwg
dG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgLTEpOwotICAg
ICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIGZhbHNlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0
KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyB0cmVhdHMgc3VjY2Vzc2Z1bCBidXQgdW5iZWxpZXZh
Ymx5IHNob3J0IHRlc3QgcnVucyBhcyBlcnJvcnMiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBjb25z
dCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKLSAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRy
dWUsIAotICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsIAotICAgICAgICAgICAg
ICAgIHN0ZXBfbnVtYmVyOiA3LCAKLSAgICAgICAgICAgICAgICB0ZXh0OiBbCi0gICAgICAgICAg
ICAgICAgICAgICJsYXlvdXQtdGVzdCIKLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAg
ICAgICB0aW1lczogWwotICAgICAgICAgICAgICAgICAgICAxMzExMjg4Nzk3LjcyMDcwMTksIAot
ICAgICAgICAgICAgICAgICAgICAxMzExMjg4ODAyLjc3OTE5NDEKLSAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICB9LCAKLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVy
T2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01h
bnlGYWlsdXJlcykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIC0xKTsKLSAgICAgICAg
ZXF1YWwodG9vTWFueUZhaWx1cmVzLCBmYWxzZSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiZ2V0
TnVtYmVyT2ZGYWlsaW5nVGVzdHMgZG9lc24ndCBjYXJlIGlmIGEgZmFpbGluZyBydW4gaXMgdW5i
ZWxpZXZhYmx5IHNob3J0IiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7
Ci0gICAgICAgIHN0ZXBzOiBbCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNGaW5p
c2hlZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLCAKLSAgICAgICAg
ICAgICAgICBuYW1lOiAibGF5b3V0LXRlc3QiLCAKLSAgICAgICAgICAgICAgICByZXN1bHRzOiBb
Ci0gICAgICAgICAgICAgICAgICAyLCAKLSAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAiMjAxMS0wNy0xMyAwNDozODo0NiwzMTUgMTEyNDcgbWFuYWdlci5weTo3ODAg
V0FSTklORyBFeGl0aW5nIGVhcmx5IGFmdGVyIDIwIGNyYXNoZXMgYW5kIDAgdGltZW91dHMuIDIy
NTEgdGVzdHMgcnVuLiIsIAotICAgICAgICAgICAgICAgICAgICAgICIyMCBmYWlsZWQiCi0gICAg
ICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgXSwgCi0gICAgICAgICAgICAgICAgc3Rl
cF9udW1iZXI6IDQsIAotICAgICAgICAgICAgICAgIHRleHQ6IFsKLSAgICAgICAgICAgICAgICAg
ICAgIjIwMTEtMDctMTMgMDQ6Mzg6NDYsMzE1IDExMjQ3IG1hbmFnZXIucHk6NzgwIFdBUk5JTkcg
RXhpdGluZyBlYXJseSBhZnRlciAyMCBjcmFzaGVzIGFuZCAwIHRpbWVvdXRzLiAyMjUxIHRlc3Rz
IHJ1bi4iLCAKLSAgICAgICAgICAgICAgICAgICAgIjIwIGZhaWxlZCIKLSAgICAgICAgICAgICAg
ICBdLCAKLSAgICAgICAgICAgICAgICB0aW1lczogWwotICAgICAgICAgICAgICAgICAgICAxMzEw
NTU3MTE1Ljc5MzA4MiwgCi0gICAgICAgICAgICAgICAgICAgIDEzMTA1NTcxMTkuODMyMTA0Ci0g
ICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwgCi0gICAgICAgIF0sCi0gICAgfTsKLQot
ICAgIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rlc3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFp
bHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50
LCAyMCk7Ci0gICAgICAgIGVxdWFsKHRvb01hbnlGYWlsdXJlcywgdHJ1ZSk7Ci0gICAgfSk7Ci19
KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzCShy
ZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24g
RmFpbGluZ1Rlc3RzQnVnRm9ybSh0ZXN0ZXIsIGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWls
ZE5hbWUsIGZhaWxpbmdUZXN0cykgewotICAgIFRlc3RSZWxhdGVkQnVnRm9ybS5jYWxsKHRoaXMs
IHRlc3Rlcik7Ci0KLSAgICB0aGlzLl9mYWlsaW5nQnVpbGROYW1lID0gZmFpbGluZ0J1aWxkTmFt
ZTsKLSAgICB0aGlzLl9wYXNzaW5nQnVpbGROYW1lID0gcGFzc2luZ0J1aWxkTmFtZTsKLSAgICB0
aGlzLl9mYWlsaW5nVGVzdHMgPSBmYWlsaW5nVGVzdHM7Ci0KLSAgICB0aGlzLmRlc2NyaXB0aW9u
ID0gdGhpcy5fY3JlYXRlQnVnRGVzY3JpcHRpb24oKTsKLSAgICAvLyBGSVhNRTogV2hlbiBhIG5l
d2x5LWFkZGVkIHRlc3QgaGFzIGJlZW4gZmFpbGluZyBzaW5jZSBpdHMgaW50cm9kdWN0aW9uLCBp
dCBpc24ndCByZWFsbHkgYQotICAgIC8vICJyZWdyZXNzaW9uIi4gV2Ugc2hvdWxkIHVzZSBkaWZm
ZXJlbnQga2V5d29yZHMgaW4gdGhhdCBjYXNlLiA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTY0NT4K
LSAgICB0aGlzLmtleXdvcmRzICs9ICcsICcgKyBXZWJLaXRCdWd6aWxsYS5LZXl3b3JkLlJlZ3Jl
c3Npb247Ci0gICAgdGhpcy50aXRsZSA9IHRoaXMuX2NyZWF0ZUJ1Z1RpdGxlKCk7Ci0gICAgdGhp
cy51cmwgPSB0aGlzLl9mYWlsaW5nUmVzdWx0c0hUTUxVUkwoKTsKLX0KLQotRmFpbGluZ1Rlc3Rz
QnVnRm9ybS5wcm90b3R5cGUgPSB7Ci0gICAgX2NyZWF0ZUJ1Z0Rlc2NyaXB0aW9uOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgdmFyIGZpcnN0U3VzcGVjdFJldmlzaW9uID0gdGhpcy5fcGFzc2luZ1Jl
dmlzaW9uKCkgPyB0aGlzLl9wYXNzaW5nUmV2aXNpb24oKSArIDEgOiB0aGlzLl9mYWlsaW5nUmV2
aXNpb24oKTsKLSAgICAgICAgdmFyIGxhc3RTdXNwZWN0UmV2aXNpb24gPSB0aGlzLl9mYWlsaW5n
UmV2aXNpb24oKTsKLQotICAgICAgICB2YXIgZW5kT2ZGaXJzdFNlbnRlbmNlOwotICAgICAgICBp
ZiAodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkgewotICAgICAgICAgICAgZW5kT2ZGaXJzdFNlbnRl
bmNlID0gJ3N0YXJ0ZWQgZmFpbGluZyBvbiAnICsgdGhpcy5fdGVzdGVyLm5hbWU7Ci0gICAgICAg
ICAgICBpZiAoZmlyc3RTdXNwZWN0UmV2aXNpb24gPT09IGxhc3RTdXNwZWN0UmV2aXNpb24pCi0g
ICAgICAgICAgICAgICAgZW5kT2ZGaXJzdFNlbnRlbmNlICs9ICcgaW4gcicgKyBmaXJzdFN1c3Bl
Y3RSZXZpc2lvbiArICcgPCcgKyB0cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1c3BlY3RSZXZpc2lv
bikgKyAnPic7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW5kT2ZGaXJzdFNl
bnRlbmNlICs9ICcgYmV0d2VlbiByJyArIGZpcnN0U3VzcGVjdFJldmlzaW9uICsgJyBhbmQgcicg
KyBsYXN0U3VzcGVjdFJldmlzaW9uICsgJyAoaW5jbHVzaXZlKSc7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgZW5kT2ZGaXJzdFNlbnRlbmNlID0gKHRoaXMuX2ZhaWxpbmdUZXN0cy5sZW5n
dGggPT09IDEgPyAnaGFzJyA6ICdoYXZlJykgKyAnIGJlZW4gZmFpbGluZyBvbiAnICsgdGhpcy5f
dGVzdGVyLm5hbWUgKyAnIHNpbmNlIGF0IGxlYXN0IHInICsgZmlyc3RTdXNwZWN0UmV2aXNpb24g
KyAnIDwnICsgdHJhYy5jaGFuZ2VzZXRVUkwoZmlyc3RTdXNwZWN0UmV2aXNpb24pICsgJz4nOwot
ICAgICAgICB2YXIgZGVzY3JpcHRpb247Ci0gICAgICAgIGlmICh0aGlzLl9mYWlsaW5nVGVzdHMu
bGVuZ3RoID09PSAxKQotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLl9mYWlsaW5nVGVz
dHNbMF0gKyAnICcgKyBlbmRPZkZpcnN0U2VudGVuY2UgKyAnLlxuXG4nOwotICAgICAgICBlbHNl
IGlmICh0aGlzLl9mYWlsaW5nVGVzdHMubGVuZ3RoID09PSAyKQotICAgICAgICAgICAgZGVzY3Jp
cHRpb24gPSB0aGlzLl9mYWlsaW5nVGVzdHMuam9pbignIGFuZCAnKSArICcgJyArIGVuZE9mRmly
c3RTZW50ZW5jZSArICcuXG5cbic7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZGVzY3Jp
cHRpb24gPSAnVGhlIGZvbGxvd2luZyB0ZXN0cyAnICsgZW5kT2ZGaXJzdFNlbnRlbmNlICsgJzpc
blxuJwotICAgICAgICAgICAgICAgICsgdGhpcy5fZmFpbGluZ1Rlc3RzLm1hcChmdW5jdGlvbih0
ZXN0KSB7IHJldHVybiAnICAgICcgKyB0ZXN0IH0pLmpvaW4oJ1xuJykKLSAgICAgICAgICAgICAg
ICArICdcblxuJzsKLSAgICAgICAgfQotICAgICAgICBpZiAoZmlyc3RTdXNwZWN0UmV2aXNpb24g
IT09IGxhc3RTdXNwZWN0UmV2aXNpb24pCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiArPSB0cmFj
LmxvZ1VSTCgndHJ1bmsnLCBmaXJzdFN1c3BlY3RSZXZpc2lvbiwgbGFzdFN1c3BlY3RSZXZpc2lv
bikgKyAnXG5cbic7Ci0gICAgICAgIGlmICh0aGlzLl9wYXNzaW5nQnVpbGROYW1lKQotICAgICAg
ICAgICAgZGVzY3JpcHRpb24gKz0gdGhpcy5fdGVzdGVyLnJlc3VsdHNQYWdlVVJMKHRoaXMuX3Bh
c3NpbmdCdWlsZE5hbWUpICsgJyBwYXNzZWRcbic7Ci0gICAgICAgIGRlc2NyaXB0aW9uICs9IHRo
aXMuX2ZhaWxpbmdSZXN1bHRzSFRNTFVSTCgpICsgJyBmYWlsZWRcbic7Ci0KLSAgICAgICAgcmV0
dXJuIGRlc2NyaXB0aW9uOwotICAgIH0sCi0KLSAgICBfY3JlYXRlQnVnVGl0bGU6IGZ1bmN0aW9u
KCkgewotICAgICAgICAvLyBGSVhNRTogV2hlbiBhIG5ld2x5LWFkZGVkIHRlc3QgaGFzIGJlZW4g
ZmFpbGluZyBzaW5jZSBpdHMgaW50cm9kdWN0aW9uLCBpdCBpc24ndCByZWFsbHkgYQotICAgICAg
ICAvLyAicmVncmVzc2lvbiIuIFdlIHNob3VsZCB1c2UgYSBkaWZmZXJlbnQgdGl0bGUgaW4gdGhh
dCBjYXNlLiA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTY0NT4KLQotICAgICAgICB2YXIgdGl0bGVQ
cmVmaXggPSAnUkVHUkVTU0lPTiAoJyArIHRoaXMuX3JlZ3Jlc3Npb25SYW5nZVN0cmluZygpICsg
Jyk6ICc7Ci0gICAgICAgIHZhciB0aXRsZVN1ZmZpeCA9ICcgZmFpbGluZyBvbiAnICsgdGhpcy5f
dGVzdGVyLm5hbWU7Ci0gICAgICAgIHZhciB0aXRsZSA9IHRpdGxlUHJlZml4ICsgdGhpcy5fZmFp
bGluZ1Rlc3RzLmpvaW4oJywgJykgKyB0aXRsZVN1ZmZpeDsKLQotICAgICAgICBpZiAodGl0bGUu
bGVuZ3RoIDw9IGJ1Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGgpCi0gICAgICAgICAgICBy
ZXR1cm4gdGl0bGU7Ci0KLSAgICAgICAgdmFyIHBhdGhQcmVmaXggPSBsb25nZXN0Q29tbW9uUGF0
aFByZWZpeCh0aGlzLl9mYWlsaW5nVGVzdHMpOwotICAgICAgICBpZiAocGF0aFByZWZpeCkgewot
ICAgICAgICAgICAgdGl0bGUgPSB0aXRsZVByZWZpeCArIHRoaXMuX2ZhaWxpbmdUZXN0cy5sZW5n
dGggKyAnICcgKyBwYXRoUHJlZml4ICsgJyB0ZXN0cycgKyB0aXRsZVN1ZmZpeDsKLSAgICAgICAg
ICAgIGlmICh0aXRsZS5sZW5ndGggPD0gYnVnemlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7Ci0gICAgICAgIH0KLQotICAgICAgICB0aXRs
ZSA9IHRpdGxlUHJlZml4ICsgdGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0aCArICcgdGVzdHMnICsg
dGl0bGVTdWZmaXg7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGl0bGUubGVuZ3RoIDw9IGJ1
Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGgpOwotICAgICAgICByZXR1cm4gdGl0bGU7Ci0g
ICAgfSwKLQotICAgIF9mYWlsaW5nUmVzdWx0c0hUTUxVUkw6IGZ1bmN0aW9uKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5fdGVzdGVyLnJlc3VsdHNQYWdlVVJMKHRoaXMuX2ZhaWxpbmdCdWlsZE5h
bWUpOwotICAgIH0sCi0KLSAgICBfZmFpbGluZ1JldmlzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3Rlc3Rlci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSh0aGlzLl9mYWls
aW5nQnVpbGROYW1lKS5yZXZpc2lvbjsKLSAgICB9LAotCi0gICAgX3Bhc3NpbmdSZXZpc2lvbjog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICghdGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkKLSAgICAg
ICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdGVyLmJ1aWxkYm90
LnBhcnNlQnVpbGROYW1lKHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUpLnJldmlzaW9uOwotICAgIH0s
Ci0KLSAgICBfcmVncmVzc2lvblJhbmdlU3RyaW5nOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IGZhaWxpbmdSZXZpc2lvbiA9IHRoaXMuX2ZhaWxpbmdSZXZpc2lvbigpOwotICAgICAgICB2YXIg
cGFzc2luZ1JldmlzaW9uID0gdGhpcy5fcGFzc2luZ1JldmlzaW9uKCk7Ci0gICAgICAgIGlmICgh
cGFzc2luZ1JldmlzaW9uIHx8IGZhaWxpbmdSZXZpc2lvbiAtIHBhc3NpbmdSZXZpc2lvbiA8PSAx
KQotICAgICAgICAgICAgcmV0dXJuICdyJyArIGZhaWxpbmdSZXZpc2lvbjsKLSAgICAgICAgcmV0
dXJuICdyJyArIHBhc3NpbmdSZXZpc2lvbiArICctcicgKyBmYWlsaW5nUmV2aXNpb247Ci0gICAg
fSwKLX07Ci0KLUZhaWxpbmdUZXN0c0J1Z0Zvcm0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRlc3RS
ZWxhdGVkQnVnRm9ybS5wcm90b3R5cGU7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmFpbGluZ1Rl
c3RzQnVnRm9ybV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0Zh
aWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwxNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxl
KCdGYWlsaW5nVGVzdHNCdWdGb3JtJyk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3RGb3JtKHRlc3Rl
ck5hbWUsIGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0cykg
ewotICAgIHZhciBtb2NrQnVpbGRib3QgPSB7fTsKLSAgICBtb2NrQnVpbGRib3QucGFyc2VCdWls
ZE5hbWUgPSBmdW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gLyhcZCsp
Ly5leGVjKGJ1aWxkTmFtZSk7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICByZXZpc2lv
bjogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSwKLSAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBwYXJz
ZUludChtYXRjaFsyXSwgMTApLAotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgbW9ja0J1
aWxkZXIgPSB7fTsKLSAgICBtb2NrQnVpbGRlci5uYW1lID0gdGVzdGVyTmFtZTsKLSAgICBtb2Nr
QnVpbGRlci5idWlsZGJvdCA9IG1vY2tCdWlsZGJvdDsKLSAgICBtb2NrQnVpbGRlci5yZXN1bHRz
UGFnZVVSTCA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gJ1tSRVNVTFRT
IFBBR0UgVVJMICcgKyB0aGlzLm5hbWUgKyAnLCAnICsgYnVpbGROYW1lICsgJ10nOwotICAgIH0K
LQotICAgIHJldHVybiBuZXcgRmFpbGluZ1Rlc3RzQnVnRm9ybShtb2NrQnVpbGRlciwgZmFpbGlu
Z0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3RzKTsKLX0KLQotdGVzdCgn
a2V5d29yZHMgYXJlIHNldCcsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciBmb3JtID0gY3JlYXRl
VGVzdEZvcm0oJ1dpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLCAncjEwICg1KScsICdyOCAoMikn
LCBbJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCddKTsKLQotICAgIGRlZXBFcXVh
bChmb3JtLmtleXdvcmRzLnNwbGl0KCcsICcpLCBbV2ViS2l0QnVnemlsbGEuS2V5d29yZC5MYXlv
dXRUZXN0RmFpbHVyZSwgV2ViS2l0QnVnemlsbGEuS2V5d29yZC5NYWtpbmdCb3RzUmVkLCBXZWJL
aXRCdWd6aWxsYS5LZXl3b3JkLlJlZ3Jlc3Npb25dKTsKLX0pOwotCi1jb25zdCB0ZXN0Q2FzZXMg
PSBbCi0gICAgewotICAgICAgICBmYWlsaW5nQnVpbGROYW1lOiAncjEwICg1KScsCi0gICAgICAg
IGZhaWxpbmdUZXN0czogWwotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0
b3IuaHRtbCcsCi0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgaGFzIGJlZW4gZmFpbGluZyBvbiBXaW5kb3dz
IDcgUmVsZWFzZSAoVGVzdHMpIHNpbmNlIGF0IGxlYXN0IHIxMCA8aHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTA+LlxuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFz
ZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdS
RUdSRVNTSU9OIChyMTApOiBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGlu
ZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywKLSAgICB9LAotICAgIHsKLSAgICAgICAg
ZmFpbGluZ0J1aWxkTmFtZTogJ3IxMCAoNSknLAotICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAn
cjkgKDMpJywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiBbCi0gICAgICAgICAgICAnY3NzMS9iYXNp
Yy9jbGFzc19hc19zZWxlY3Rvci5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAgZXhwZWN0ZWRE
ZXNjcmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBzdGFydGVkIGZh
aWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBpbiByMTAgPGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzEwPi5cblxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJl
bGVhc2UgKFRlc3RzKSwgcjkgKDMpXSBwYXNzZWRcbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3Mg
NyBSZWxlYXNlIChUZXN0cyksIHIxMCAoNSldIGZhaWxlZFxuJywKLSAgICAgICAgZXhwZWN0ZWRU
aXRsZTogJ1JFR1JFU1NJT04gKHIxMCk6IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRt
bCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAotICAgIH0sCi0gICAgewot
ICAgICAgICBmYWlsaW5nQnVpbGROYW1lOiAncjEwICg1KScsCi0gICAgICAgIHBhc3NpbmdCdWls
ZE5hbWU6ICdyOCAoMiknLAotICAgICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAgICAgICAgICdj
c3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAotICAgICAgICBdLAotICAgICAgICBl
eHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIHN0
YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIGJldHdlZW4gcjkgYW5k
IHIxMCAoaW5jbHVzaXZlKS5cblxuaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2
PTEwJnN0b3BfcmV2PTkmbGltaXQ9M1xuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVs
ZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3
IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4nLAotICAgICAgICBleHBlY3RlZFRp
dGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5o
dG1sIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKLSAgICAgICAgcGFzc2luZ0J1
aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdUZXN0czogWwotICAgICAgICAgICAg
J2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCcsCi0gICAgICAgICAgICAnZmFzdC9j
c3MvZXgtYWZ0ZXItZm9udC12YXJpYW50Lmh0bWwnLAotICAgICAgICBdLAotICAgICAgICBleHBl
Y3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGFuZCBm
YXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQuaHRtbCBzdGFydGVkIGZhaWxpbmcgb24gV2lu
ZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBiZXR3ZWVuIHI5IGFuZCByMTAgKGluY2x1c2l2ZSkuXG5c
bmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMCZzdG9wX3Jldj05JmxpbWl0
PTNcblxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjggKDIp
XSBwYXNzZWRcbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHIx
MCAoNSldIGZhaWxlZFxuJywKLSAgICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHI4
LXIxMCk6IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCwgZmFzdC9jc3MvZXgtYWZ0
ZXItZm9udC12YXJpYW50Lmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
JywKLSAgICB9LAotICAgIHsKLSAgICAgICAgZmFpbGluZ0J1aWxkTmFtZTogJ3IxMCAoNSknLAot
ICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIpJywKLSAgICAgICAgZmFpbGluZ1Rlc3Rz
OiBbCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjEuaHRtbCcsCi0g
ICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjIuaHRtbCcsCi0gICAgICAg
ICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjMuaHRtbCcsCi0gICAgICAgICAgICAn
Y3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjQuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9i
YXNpYy9jbGFzc19hc19zZWxlY3RvcjUuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9j
bGFzc19hc19zZWxlY3RvcjYuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19h
c19zZWxlY3RvcjcuaHRtbCcsCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxl
Y3RvcjguaHRtbCcsCi0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdU
aGUgZm9sbG93aW5nIHRlc3RzIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAo
VGVzdHMpIGJldHdlZW4gcjkgYW5kIHIxMCAoaW5jbHVzaXZlKTpcblxuICAgIGNzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3IxLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9y
Mi5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjMuaHRtbFxuICAgIGNzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yNS5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjYuaHRtbFxuICAg
IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I3Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yOC5odG1sXG5cbmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jl
dj0xMCZzdG9wX3Jldj05JmxpbWl0PTNcblxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJl
bGVhc2UgKFRlc3RzKSwgcjggKDIpXSBwYXNzZWRcbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3Mg
NyBSZWxlYXNlIChUZXN0cyksIHIxMCAoNSldIGZhaWxlZFxuJywKLSAgICAgICAgZXhwZWN0ZWRU
aXRsZTogJ1JFR1JFU1NJT04gKHI4LXIxMCk6IDggY3NzMS9iYXNpYyB0ZXN0cyBmYWlsaW5nIG9u
IFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAotICAgIH0sCi0gICAgewotICAgICAgICBmYWls
aW5nQnVpbGROYW1lOiAncjEwICg1KScsCi0gICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOCAo
MiknLAotICAgICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2Ns
YXNzX2FzX3NlbGVjdG9yMS5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2Fz
X3NlbGVjdG9yMi5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVj
dG9yMy5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNC5o
dG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNS5odG1sJywK
LSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNi5odG1sJywKLSAgICAg
ICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1sJywKLSAgICAgICAgICAg
ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sJywKLSAgICAgICAgICAgICdjc3Mx
L2NsYXNzX2FzX3NlbGVjdG9yOS5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAgZXhwZWN0ZWRU
aXRsZTogJ1JFR1JFU1NJT04gKHI4LXIxMCk6IDkgY3NzMSB0ZXN0cyBmYWlsaW5nIG9uIFdpbmRv
d3MgNyBSZWxlYXNlIChUZXN0cyknLAotICAgIH0sCi0gICAgewotICAgICAgICBmYWlsaW5nQnVp
bGROYW1lOiAncjEwICg1KScsCi0gICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOCAoMiknLAot
ICAgICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2Fz
X3NlbGVjdG9yMS5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVj
dG9yMi5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMy5o
dG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNC5odG1sJywK
LSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNS5odG1sJywKLSAgICAg
ICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNi5odG1sJywKLSAgICAgICAgICAg
ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1sJywKLSAgICAgICAgICAgICdjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2NsYXNz
X2FzX3NlbGVjdG9yOS5odG1sJywKLSAgICAgICAgICAgICdmYXN0L2Nzcy9leC1hZnRlci1mb250
LXZhcmlhbnQuaHRtbCcsCi0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdS
RVNTSU9OIChyOC1yMTApOiAxMCB0ZXN0cyBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChU
ZXN0cyknLAotICAgIH0sCi1dOwotCi10ZXN0KCd0aXRsZXMnLCA3LCBmdW5jdGlvbigpIHsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RDYXNlcy5sZW5ndGg7ICsraSkgewotICAgICAgICB2
YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgdGVz
dENhc2VzW2ldLmZhaWxpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5wYXNzaW5nQnVpbGROYW1l
LCB0ZXN0Q2FzZXNbaV0uZmFpbGluZ1Rlc3RzKTsKLSAgICAgICAgZXF1YWwoZm9ybS50aXRsZSwg
dGVzdENhc2VzW2ldLmV4cGVjdGVkVGl0bGUpOwotICAgIH0KLX0pOwotCi10ZXN0KCdkZXNjcmlw
dGlvbnMnLCA1LCBmdW5jdGlvbigpIHsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RDYXNl
cy5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoISgnZXhwZWN0ZWREZXNjcmlwdGlvbicgaW4g
dGVzdENhc2VzW2ldKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgZm9ybSA9
IGNyZWF0ZVRlc3RGb3JtKCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgdGVzdENhc2VzW2ld
LmZhaWxpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5wYXNzaW5nQnVpbGROYW1lLCB0ZXN0Q2Fz
ZXNbaV0uZmFpbGluZ1Rlc3RzKTsKLSAgICAgICAgZXF1YWwoZm9ybS5kZXNjcmlwdGlvbiwgdGVz
dENhc2VzW2ldLmV4cGVjdGVkRGVzY3JpcHRpb24pOwotICAgIH0KLX0pOwotCi19KSgpOwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qcwkocmV2aXNpb24g
OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBGbGFr
eUxheW91dFRlc3REZXRlY3RvcigpIHsKLSAgICB0aGlzLl90ZXN0cyA9IHt9OwotICAgIHRoaXMu
X2J1aWxkQ291bnQgPSAwOwotfQotCi1GbGFreUxheW91dFRlc3REZXRlY3Rvci5wcm90b3R5cGUg
PSB7Ci0gICAgaW5jb3Jwb3JhdGVUZXN0UmVzdWx0czogZnVuY3Rpb24oYnVpbGROYW1lLCBmYWls
aW5nVGVzdHMsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICB2YXIgbmV3Rmxha3lUZXN0cyA9
IFtdOwotCi0gICAgICAgIGlmICh0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgIC8vIFNv
bWV0aGluZyB3YXMgZ29pbmcgaG9ycmlibHkgd3JvbmcgZHVyaW5nIHRoaXMgdGVzdCBydW4uIFdl
IHNob3VsZG4ndCBhc3N1bWUgdGhhdCBhbnkKLSAgICAgICAgICAgIC8vIHBhc3Nlcy9mYWlsdXJl
cyBhcmUgZHVlIHRvIGZsYWtpbmVzcy4KLSAgICAgICAgICAgIHJldHVybiBuZXdGbGFreVRlc3Rz
OwotICAgICAgICB9Ci0KLSAgICAgICAgKyt0aGlzLl9idWlsZENvdW50OwotCi0gICAgICAgIC8v
IFJlY29yZCBmYWlsaW5nIHRlc3RzLgotICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBmYWls
aW5nVGVzdHMpIHsKLSAgICAgICAgICAgIGlmICghKHRlc3ROYW1lIGluIHRoaXMuX3Rlc3RzKSkg
ewotICAgICAgICAgICAgICAgaWYgKHRoaXMuX2J1aWxkQ291bnQgPiB0aGlzLl9tYXhpbXVtRmFp
bE9yUGFzc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgLy8gVGhpcyB0ZXN0IGhhc24ndCBm
YWlsZWQgaW4gdGhlIF9tYXhpbXVtRmFpbE9yUGFzc0NvdW50IG1vc3QgcmVjZW50IGJ1aWxkcywg
c28KLSAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBjb25zaWRlciBpdCB0byBiZSBmbGFreS4g
SW4gZmFjdCwgd2UgZG9uJ3QgaGF2ZSB0byB0cmFjayBpdCBhdCBhbGwhCi0gICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0aGlz
Ll90ZXN0c1t0ZXN0TmFtZV0gPSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlOiB0aGlzLl9z
dGF0ZXMuTGFzdFNlZW5GYWlsaW5nLAotICAgICAgICAgICAgICAgICAgICBjb3VudDogMCwKLSAg
ICAgICAgICAgICAgICAgICAgaGlzdG9yeTogW10sCi0gICAgICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIHRlc3REYXRhID0gdGhpcy5fdGVzdHNbdGVzdE5h
bWVdOwotICAgICAgICAgICAgdGVzdERhdGEuaGlzdG9yeS5wdXNoKHsgYnVpbGQ6IGJ1aWxkTmFt
ZSwgcmVzdWx0OiBmYWlsaW5nVGVzdHNbdGVzdE5hbWVdIH0pOwotCi0gICAgICAgICAgICBpZiAo
dGVzdERhdGEuc3RhdGUgPT09IHRoaXMuX3N0YXRlcy5MYXN0U2VlbkZhaWxpbmcpIHsKLSAgICAg
ICAgICAgICAgICArK3Rlc3REYXRhLmNvdW50OwotICAgICAgICAgICAgICAgIGlmICh0ZXN0RGF0
YS5jb3VudCA+IHRoaXMuX21heGltdW1GYWlsT3JQYXNzQ291bnQpCi0gICAgICAgICAgICAgICAg
ICAgIHRlc3REYXRhLnN0YXRlID0gdGhpcy5fc3RhdGVzLk5vdEZsYWt5OwotICAgICAgICAgICAg
fSBlbHNlIGlmICh0ZXN0RGF0YS5zdGF0ZSA9PT0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuUGFzc2lu
ZykgewotICAgICAgICAgICAgICAgIHRlc3REYXRhLnN0YXRlID0gdGhpcy5fc3RhdGVzLlBvc3Np
Ymx5Rmxha3k7Ci0gICAgICAgICAgICAgICAgbmV3Rmxha3lUZXN0cy5wdXNoKHRlc3ROYW1lKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlY29yZCBwYXNzaW5nIHRl
c3RzLgotICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0aGlzLl90ZXN0cykgewotICAgICAg
ICAgICAgaWYgKHRlc3ROYW1lIGluIGZhaWxpbmdUZXN0cykKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgdmFyIHRlc3REYXRhID0gdGhpcy5fdGVzdHNbdGVzdE5hbWVd
OwotICAgICAgICAgICAgdGVzdERhdGEuaGlzdG9yeS5wdXNoKHsgYnVpbGQ6IGJ1aWxkTmFtZSwg
cmVzdWx0OiB7IGZhaWx1cmVUeXBlOiAncGFzcycgfSB9KTsKLQotICAgICAgICAgICAgaWYgKHRl
c3REYXRhLnN0YXRlID09PSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5QYXNzaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgKyt0ZXN0RGF0YS5jb3VudDsKLSAgICAgICAgICAgICAgICBpZiAodGVzdERhdGEu
Y291bnQgPiB0aGlzLl9tYXhpbXVtRmFpbE9yUGFzc0NvdW50KQotICAgICAgICAgICAgICAgICAg
ICB0ZXN0RGF0YS5zdGF0ZSA9IHRoaXMuX3N0YXRlcy5Ob3RGbGFreTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAodGVzdERhdGEuc3RhdGUgPT09IHRoaXMuX3N0YXRlcy5MYXN0U2VlbkZhaWxpbmcp
IHsKLSAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zdGF0ZSA9IHRoaXMuX3N0YXRlcy5MYXN0U2Vl
blBhc3Npbmc7Ci0gICAgICAgICAgICAgICAgdGVzdERhdGEuY291bnQgPSAxOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ld0ZsYWt5VGVzdHM7Ci0gICAgfSwK
LQotICAgIGFsbEZhaWx1cmVzOiBmdW5jdGlvbih0ZXN0TmFtZSkgewotICAgICAgICBpZiAoISh0
ZXN0TmFtZSBpbiB0aGlzLl90ZXN0cykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAg
ICAgICByZXR1cm4gdGhpcy5fdGVzdHNbdGVzdE5hbWVdLmhpc3RvcnkuZmlsdGVyKGZ1bmN0aW9u
KGhpc3RvcnlJdGVtKSB7IHJldHVybiBoaXN0b3J5SXRlbS5yZXN1bHQuZmFpbHVyZVR5cGUgIT09
ICdwYXNzJyB9KTsKLSAgICB9LAotCi0gICAgZ2V0IHBvc3NpYmx5Rmxha3lUZXN0cygpIHsKLSAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc2VsZi5f
dGVzdHMpLmZpbHRlcihmdW5jdGlvbih0ZXN0TmFtZSkgeyByZXR1cm4gc2VsZi5fdGVzdHNbdGVz
dE5hbWVdLnN0YXRlID09PSBzZWxmLl9zdGF0ZXMuUG9zc2libHlGbGFreSB9KTsKLSAgICB9LAot
Ci0gICAgLy8gSWYgYSB0ZXN0IGhhcyByZWNlbnRseSBmYWlsZWQgb3IgcGFzc2VkIG1vcmUgdGhh
biB0aGlzIG51bWJlciBvZiB0aW1lcyBpbiBhIHJvdyB3ZSBkb24ndAotICAgIC8vIGNvbnNpZGVy
IGl0IHRvIGJlIGZsYWt5LgotICAgIF9tYXhpbXVtRmFpbE9yUGFzc0NvdW50OiA5LAotCi0gICAg
X3N0YXRlczogewotICAgICAgICBMYXN0U2VlbkZhaWxpbmc6IDAsCi0gICAgICAgIExhc3RTZWVu
UGFzc2luZzogMSwKLSAgICAgICAgUG9zc2libHlGbGFreTogMiwKLSAgICAgICAgTm90Rmxha3k6
IDMsCi0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmxha3lMYXlvdXRUZXN0RGV0
ZWN0b3JfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GbGFreUxh
eW91dFRlc3REZXRlY3Rvcl91bml0dGVzdHMuanMJKHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9k
dWxlKCdGbGFreUxheW91dFRlc3REZXRlY3RvcicpOwotCi1jb25zdCBydW5zID0gWwotICAgIHsK
LSAgICAgICAgYnVpbGROYW1lOiAnYnVpbGQ2JywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiB7Ci0g
ICAgICAgICAgICBiOiAnZmFpbCcsCi0gICAgICAgIH0sCi0gICAgICAgIHRvb01hbnlGYWlsdXJl
czogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGJ1aWxkTmFtZTogJ2J1aWxkNScsCi0g
ICAgICAgIGZhaWxpbmdUZXN0czogewotICAgICAgICAgICAgYTogJ2ZhaWwnLAotICAgICAgICAg
ICAgYjogJ2ZhaWwnLAotICAgICAgICB9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNl
LAotICAgIH0sCi0gICAgewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDQnLAotICAgICAgICBm
YWlsaW5nVGVzdHM6IHsKLSAgICAgICAgICAgIGI6ICdmYWlsJywKLSAgICAgICAgfSwKLSAgICAg
ICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgYnVpbGRO
YW1lOiAnYnVpbGQzJywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiB7Ci0gICAgICAgICAgICBhOiAn
Y3Jhc2gnLAotICAgICAgICAgICAgYjogJ2ZhaWwnLAotICAgICAgICB9LAotICAgICAgICB0b29N
YW55RmFpbHVyZXM6IGZhbHNlLAotICAgIH0sCi0gICAgewotICAgICAgICBidWlsZE5hbWU6ICdi
dWlsZDInLAotICAgICAgICBmYWlsaW5nVGVzdHM6IHsKLSAgICAgICAgICAgIGE6ICdmYWlsJywK
LSAgICAgICAgfSwKLSAgICAgICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAgICB9LAotICAg
IHsKLSAgICAgICAgYnVpbGROYW1lOiAnYnVpbGQxJywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiB7
fSwKLSAgICAgICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAgICB9LAotXTsKLQotdGVzdCgn
cG9zc2libHlGbGFreVRlc3RzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0g
bmV3IEZsYWt5TGF5b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgcnVucy5mb3JFYWNoKGZ1bmN0aW9u
KHJ1bikgeyBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKHJ1bi5idWlsZE5hbWUsIHJ1
bi5mYWlsaW5nVGVzdHMsIHJ1bi50b29NYW55RmFpbHVyZXMpIH0pOwotCi0gICAgZGVlcEVxdWFs
KGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cywgWydhJ10pOwotfSk7Ci0KLXRlc3QoJ2FsbEZh
aWx1cmVzJywgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0gbmV3IEZsYWt5TGF5
b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgcnVucy5mb3JFYWNoKGZ1bmN0aW9uKHJ1bikgeyBkZXRl
Y3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKHJ1bi5idWlsZE5hbWUsIHJ1bi5mYWlsaW5nVGVz
dHMsIHJ1bi50b29NYW55RmFpbHVyZXMpIH0pOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLmFs
bEZhaWx1cmVzKCdhJyksIFsKLSAgICAgICAgeyBidWlsZDogJ2J1aWxkNScsIHJlc3VsdDogJ2Zh
aWwnIH0sCi0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDMnLCByZXN1bHQ6ICdjcmFzaCcgfSwKLSAg
ICAgICAgeyBidWlsZDogJ2J1aWxkMicsIHJlc3VsdDogJ2ZhaWwnIH0sCi0gICAgXSk7Ci0KLSAg
ICBkZWVwRXF1YWwoZGV0ZWN0b3IuYWxsRmFpbHVyZXMoJ2InKSwgWwotICAgICAgICB7IGJ1aWxk
OiAnYnVpbGQ2JywgcmVzdWx0OiAnZmFpbCcgfSwKLSAgICAgICAgeyBidWlsZDogJ2J1aWxkNScs
IHJlc3VsdDogJ2ZhaWwnIH0sCi0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDQnLCByZXN1bHQ6ICdm
YWlsJyB9LAotICAgICAgICB7IGJ1aWxkOiAnYnVpbGQzJywgcmVzdWx0OiAnZmFpbCcgfSwKLSAg
ICBdKTsKLQotICAgIGVxdWFsKGRldGVjdG9yLmFsbEZhaWx1cmVzKCdjJyksIG51bGwpOwotfSk7
Ci0KLXRlc3QoJ2ZhaWxpbmcgbWFueSB0aW1lcyBpbiBhIHJvdyBzaG91bGQgbm90IGNvdW50IGFz
IGZsYWt5JywgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0gbmV3IEZsYWt5TGF5
b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQotICAg
ICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwn
IH0sIGZhbHNlKTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMs
IFtdKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQotICAgICAgICBkZXRlY3Rv
ci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0KLSAgICBkZWVw
RXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci0KLSAgICBkZXRlY3Rvci5p
bmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLQot
ICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKLX0pOwotCi10
ZXN0KCdmYWlsaW5nIGFmdGVyIHBhc3NpbmcgbWFueSB0aW1lcyBpbiBhIHJvdyBzaG91bGQgbm90
IGNvdW50IGFzIGZsYWt5JywgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0gbmV3
IEZsYWt5TGF5b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0
UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0KLSAgICBkZWVwRXF1YWwo
ZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1
aWxkJywge30sIGZhbHNlKTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5
VGVzdHMsIFtdKTsKLQotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxk
JywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3Np
Ymx5Rmxha3lUZXN0cywgW10pOwotfSk7Ci0KLXRlc3QoJ2ZsYWtpbmcgbm93IHNob3VsZCBvdmVy
cmlkZSBtYW55IHBhc3QgZmFpbHVyZXMnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGV0ZWN0
b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBv
cmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLSAgICBkZXRl
Y3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0gICAgZGV0
ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxz
ZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFs
c2UpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgZGV0ZWN0b3Iu
aW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0g
ICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cywgWydhJ10pOwotfSk7Ci0K
LXRlc3QoJ3Bhc3Npbmcgbm93IHNob3VsZCBvdmVycmlkZSBwYXN0IGZsYWtpbmVzcycsIDEsIGZ1
bmN0aW9uKCkgewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3Rv
cigpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgZGV0ZWN0b3Iu
aW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotICAgIGRldGVjdG9y
LmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwot
ICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsK
LSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwn
IH0sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcs
IHt9LCBmYWxzZSk7Ci0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cywg
W10pOwotfSk7Ci0KLXRlc3QoJ3RvbyBtYW55IGZhaWx1cmVzIG5vdyBzaG91bGQgbm90IG92ZXJy
aWRlIHBhc3QgZmxha2luZXNzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0g
bmV3IEZsYWt5TGF5b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDsgKytpKQotICAgICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcs
IHt9LCB0cnVlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcs
IHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1
bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVz
dWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jw
b3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotICAgIGRlZXBFcXVhbChkZXRl
Y3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFsnYSddKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL0ZsYWt5VGVzdEJ1Z0Zvcm0uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL0ZsYWt5VGVzdEJ1Z0Zvcm0uanMJKHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL0ZsYWt5VGVzdEJ1Z0Zvcm0uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLWZ1bmN0aW9uIEZsYWt5VGVzdEJ1Z0Zvcm0odGVzdGVyLCBmYWlsaW5n
QnVpbGROYW1lcywgZmFpbGluZ1Rlc3QsIG9sZGVzdEFuYWx5emVkQnVpbGQsIG5ld2VzdEFuYWx5
emVkQnVpbGQsIGFuYWx5emVkQnVpbGRDb3VudCkgewotICAgIFRlc3RSZWxhdGVkQnVnRm9ybS5j
YWxsKHRoaXMsIHRlc3Rlcik7Ci0KLSAgICB0aGlzLl9mYWlsaW5nQnVpbGROYW1lcyA9IGZhaWxp
bmdCdWlsZE5hbWVzOwotICAgIHRoaXMuX2ZhaWxpbmdUZXN0ID0gZmFpbGluZ1Rlc3Q7Ci0gICAg
dGhpcy5fb2xkZXN0QW5hbHl6ZWRCdWlsZCA9IG9sZGVzdEFuYWx5emVkQnVpbGQ7Ci0gICAgdGhp
cy5fbmV3ZXN0QW5hbHl6ZWRCdWlsZCA9IG5ld2VzdEFuYWx5emVkQnVpbGQ7Ci0gICAgdGhpcy5f
YW5hbHl6ZWRCdWlsZENvdW50ID0gYW5hbHl6ZWRCdWlsZENvdW50OwotCi0gICAgdGhpcy5kZXNj
cmlwdGlvbiA9IHRoaXMuX2NyZWF0ZUJ1Z0Rlc2NyaXB0aW9uKCk7Ci0gICAgdGhpcy50aXRsZSA9
IHRoaXMuX2NyZWF0ZUJ1Z1RpdGxlKCk7Ci0gICAgdGhpcy51cmwgPSB0aGlzLl90ZXN0ZXIucmVz
dWx0c1BhZ2VVUkwodGhpcy5fZmFpbGluZ0J1aWxkTmFtZXNbMF0pOwotfQotCi1GbGFreVRlc3RC
dWdGb3JtLnByb3RvdHlwZSA9IHsKLSAgICBfY3JlYXRlQnVnRGVzY3JpcHRpb246IGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IHNl
bGYuX2ZhaWxpbmdUZXN0Ci0gICAgICAgICAgICArICcgZmFpbGVkICcgKyBzZWxmLl9mYWlsaW5n
QnVpbGROYW1lcy5sZW5ndGggKyAnIG91dCBvZiAnICsgc2VsZi5fYW5hbHl6ZWRCdWlsZENvdW50
ICsgJyB0aW1lcycKLSAgICAgICAgICAgICsgJyBvbiAnICsgc2VsZi5fdGVzdGVyLm5hbWUKLSAg
ICAgICAgICAgICsgJyBiZXR3ZWVuIHInICsgc2VsZi5fdGVzdGVyLmJ1aWxkYm90LnBhcnNlQnVp
bGROYW1lKHNlbGYuX29sZGVzdEFuYWx5emVkQnVpbGQpLnJldmlzaW9uCi0gICAgICAgICAgICAr
ICcgYW5kIHInICsgc2VsZi5fdGVzdGVyLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKHNlbGYuX25l
d2VzdEFuYWx5emVkQnVpbGQpLnJldmlzaW9uCi0gICAgICAgICAgICArICcgKGluY2x1c2l2ZSku
XG5cbic7Ci0KLSAgICAgICAgcmVzdWx0ICs9ICdGYWlsdXJlczpcblxuJzsKLSAgICAgICAgcmVz
dWx0ICs9IHNlbGYuX2ZhaWxpbmdCdWlsZE5hbWVzLm1hcChmdW5jdGlvbihidWlsZE5hbWUpIHsK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0ZXIucmVzdWx0c1BhZ2VVUkwoYnVpbGROYW1l
KSArICdcbic7Ci0gICAgICAgIH0pLmpvaW4oJycpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfSwKLQotICAgIF9jcmVhdGVCdWdUaXRsZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9mYWlsaW5nVGVzdCArICcgc29tZXRpbWVzIGZhaWxzIG9uICcgKyB0aGlzLl90
ZXN0ZXIubmFtZTsKLSAgICB9LAotfTsKLQotRmxha3lUZXN0QnVnRm9ybS5wcm90b3R5cGUuX19w
cm90b19fID0gVGVzdFJlbGF0ZWRCdWdGb3JtLnByb3RvdHlwZTsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9GbGFreVRlc3RCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMJKHJldmlzaW9uIDkzMjU0KQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0ZsYWt5VGVzdEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLW1v
ZHVsZSgnRmxha3lUZXN0QnVnRm9ybScpOwotCi1mdW5jdGlvbiBjcmVhdGVUZXN0Rm9ybShmYWls
aW5nQnVpbGROYW1lcywgZmFpbGluZ1Rlc3QsIG9sZGVzdEFuYWx5emVkQnVpbGQsIG5ld2VzdEFu
YWx5emVkQnVpbGQsIGFuYWx5emVkQnVpbGRDb3VudCkgewotICAgIHZhciBtb2NrQnVpbGRib3Qg
PSB7fTsKLSAgICBtb2NrQnVpbGRib3QucGFyc2VCdWlsZE5hbWUgPSBmdW5jdGlvbihidWlsZE5h
bWUpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gLyhcZCspLy5leGVjKGJ1aWxkTmFtZSk7Ci0gICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICByZXZpc2lvbjogcGFyc2VJbnQobWF0Y2hbMV0sIDEw
KSwKLSAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBwYXJzZUludChtYXRjaFsyXSwgMTApLAotICAg
ICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgbW9ja0J1aWxkZXIgPSB7fTsKLSAgICBtb2NrQnVp
bGRlci5uYW1lID0gJ1tCVUlMREVSIE5BTUVdJzsKLSAgICBtb2NrQnVpbGRlci5idWlsZGJvdCA9
IG1vY2tCdWlsZGJvdDsKLSAgICBtb2NrQnVpbGRlci5yZXN1bHRzUGFnZVVSTCA9IGZ1bmN0aW9u
KGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gJ1tSRVNVTFRTIFBBR0UgVVJMICcgKyB0aGlz
Lm5hbWUgKyAnLCAnICsgYnVpbGROYW1lICsgJ10nOwotICAgIH0KLQotICAgIHJldHVybiBuZXcg
Rmxha3lUZXN0QnVnRm9ybShtb2NrQnVpbGRlciwgZmFpbGluZ0J1aWxkTmFtZXMsIGZhaWxpbmdU
ZXN0LCBvbGRlc3RBbmFseXplZEJ1aWxkLCBuZXdlc3RBbmFseXplZEJ1aWxkLCBhbmFseXplZEJ1
aWxkQ291bnQpOwotfQotCi1jb25zdCB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBvbGRl
c3RBbmFseXplZEJ1aWxkOiAncjEgKDEpJywKLSAgICAgICAgbmV3ZXN0QW5hbHl6ZWRCdWlsZDog
J3IxNSAoOCknLAotICAgICAgICBhbmFseXplZEJ1aWxkQ291bnQ6IDgsCi0gICAgICAgIGZhaWxp
bmdCdWlsZE5hbWVzOiBbCi0gICAgICAgICAgICAncjEwICg1KScsCi0gICAgICAgICAgICAncjgg
KDIpJywKLSAgICAgICAgXSwKLSAgICAgICAgZmFpbGluZ1Rlc3Q6ICdjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwnLAotICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9i
YXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGZhaWxlZCAyIG91dCBvZiA4IHRpbWVzIG9uIFtC
VUlMREVSIE5BTUVdIGJldHdlZW4gcjEgYW5kIHIxNSAoaW5jbHVzaXZlKS5cblxuRmFpbHVyZXM6
XG5cbltSRVNVTFRTIFBBR0UgVVJMIFtCVUlMREVSIE5BTUVdLCByMTAgKDUpXVxuW1JFU1VMVFMg
UEFHRSBVUkwgW0JVSUxERVIgTkFNRV0sIHI4ICgyKV1cbicsCi0gICAgICAgIGV4cGVjdGVkVGl0
bGU6ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgc29tZXRpbWVzIGZhaWxzIG9u
IFtCVUlMREVSIE5BTUVdJywKLSAgICAgICAgZXhwZWN0ZWRVUkw6ICdbUkVTVUxUUyBQQUdFIFVS
TCBbQlVJTERFUiBOQU1FXSwgcjEwICg1KV0nLAotICAgIH0sCi1dOwotCi10ZXN0KCd0aXRsZXMn
LCAxLCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbih0ZXN0Q2Fz
ZSkgewotICAgICAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKHRlc3RDYXNlLmZhaWxpbmdC
dWlsZE5hbWVzLCB0ZXN0Q2FzZS5mYWlsaW5nVGVzdCwgdGVzdENhc2Uub2xkZXN0QW5hbHl6ZWRC
dWlsZCwgdGVzdENhc2UubmV3ZXN0QW5hbHl6ZWRCdWlsZCwgdGVzdENhc2UuYW5hbHl6ZWRCdWls
ZENvdW50KTsKLSAgICAgICAgZXF1YWwoZm9ybS50aXRsZSwgdGVzdENhc2UuZXhwZWN0ZWRUaXRs
ZSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgnZGVzY3JpcHRpb25zJywgMSwgZnVuY3Rpb24oKSB7
Ci0gICAgdGVzdENhc2VzLmZvckVhY2goZnVuY3Rpb24odGVzdENhc2UpIHsKLSAgICAgICAgdmFy
IGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSh0ZXN0Q2FzZS5mYWlsaW5nQnVpbGROYW1lcywgdGVzdENh
c2UuZmFpbGluZ1Rlc3QsIHRlc3RDYXNlLm9sZGVzdEFuYWx5emVkQnVpbGQsIHRlc3RDYXNlLm5l
d2VzdEFuYWx5emVkQnVpbGQsIHRlc3RDYXNlLmFuYWx5emVkQnVpbGRDb3VudCk7Ci0gICAgICAg
IGVxdWFsKGZvcm0uZGVzY3JpcHRpb24sIHRlc3RDYXNlLmV4cGVjdGVkRGVzY3JpcHRpb24pOwot
ICAgIH0pOwotfSk7Ci0KLXRlc3QoJ1VSTHMnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB0ZXN0Q2Fz
ZXMuZm9yRWFjaChmdW5jdGlvbih0ZXN0Q2FzZSkgewotICAgICAgICB2YXIgZm9ybSA9IGNyZWF0
ZVRlc3RGb3JtKHRlc3RDYXNlLmZhaWxpbmdCdWlsZE5hbWVzLCB0ZXN0Q2FzZS5mYWlsaW5nVGVz
dCwgdGVzdENhc2Uub2xkZXN0QW5hbHl6ZWRCdWlsZCwgdGVzdENhc2UubmV3ZXN0QW5hbHl6ZWRC
dWlsZCwgdGVzdENhc2UuYW5hbHl6ZWRCdWlsZENvdW50KTsKLSAgICAgICAgZXF1YWwoZm9ybS51
cmwsIHRlc3RDYXNlLmV4cGVjdGVkVVJMKTsKLSAgICB9KTsKLX0pOwotCi19KSgpOwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMJKHJldmlzaW9u
IDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBM
YXlvdXRUZXN0SGlzdG9yeUFuYWx5emVyKGJ1aWxkZXIpIHsKLSAgICB0aGlzLl9idWlsZGVyID0g
YnVpbGRlcjsKLSAgICB0aGlzLl9mbGFraW5lc3NEZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRl
c3REZXRlY3RvcigpOwotICAgIHRoaXMuX2hpc3RvcnkgPSB7fTsKLSAgICB0aGlzLl9sb2FkZXIg
PSBuZXcgTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIoYnVpbGRlcik7Ci0gICAgdGhpcy5fdGVzdFJ1
bnNTaW5jZUxhc3RJbnRlcmVzdGluZ0NoYW5nZSA9IDA7Ci19Ci0KLUxheW91dFRlc3RIaXN0b3J5
QW5hbHl6ZXIucHJvdG90eXBlID0gewotICAgIC8qCi0gICAgICogUGVyaW9kaWNhbGx5IGNhbGxz
IGNhbGxiYWNrIHVudGlsIGFsbCBjdXJyZW50IGZhaWx1cmVzIGhhdmUgYmVlbiBleHBsYWluZWQu
IENhbGxiYWNrIGlzCi0gICAgICogcGFzc2VkIGFuIG9iamVjdCBsaWtlIHRoZSBmb2xsb3dpbmc6
Ci0gICAgICogewotICAgICAqICAgICAnaGlzdG9yeSc6IHsKLSAgICAgKiAgICAgICAgICdyMTIz
NDcgKDY4MSknOiB7Ci0gICAgICogICAgICAgICAgICAgJ3Rvb01hbnlGYWlsdXJlcyc6IGZhbHNl
LAotICAgICAqICAgICAgICAgICAgICd0ZXN0cyc6IHsKLSAgICAgKiAgICAgICAgICAgICAgICAg
J2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnOiAnZmFpbCcsCi0gICAgICogICAg
ICAgICAgICAgfSwKLSAgICAgKiAgICAgICAgIH0sCi0gICAgICogICAgICAgICAncjEyMzQ2ICg2
ODApJzogewotICAgICAqICAgICAgICAgICAgICd0b29NYW55RmFpbHVyZXMnOiBmYWxzZSwKLSAg
ICAgKiAgICAgICAgICAgICAndGVzdHMnOiB7fSwKLSAgICAgKiAgICAgICAgIH0sCi0gICAgICog
ICAgICAgICAncjEyMzQ1ICg2NzkpJzogewotICAgICAqICAgICAgICAgICAgICd0b29NYW55RmFp
bHVyZXMnOiBmYWxzZSwKLSAgICAgKiAgICAgICAgICAgICAndGVzdHMnOiB7Ci0gICAgICogICAg
ICAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnOiAnY3Jhc2gn
LAotICAgICAqICAgICAgICAgICAgIH0sCi0gICAgICogICAgICAgICB9LAotICAgICAqICAgICB9
LAotICAgICAqICAgICAncG9zc2libHlGbGFreSc6IHsKLSAgICAgKiAgICAgICAgICdmYXN0L3dv
cmtlcnMvd29ya2VyLXRlc3QuaHRtbCc6IFsKLSAgICAgKiAgICAgICAgICAgICB7ICdidWlsZCc6
ICdyMTIzNDQgKDY3OCknLCAncmVzdWx0JzogJ2ZhaWwnIH0sCi0gICAgICogICAgICAgICAgICAg
eyAnYnVpbGQnOiAncjEyMzQwICg2NzYpJywgJ3Jlc3VsdCc6ICdjcmFzaCcgfSwKLSAgICAgKiAg
ICAgICAgIF0sCi0gICAgICogICAgIH0sCi0gICAgICogfQotICAgICAqIEVhY2ggYnVpbGQgY29u
dGFpbnMganVzdCB0aGUgZmFpbHVyZXMgdGhhdCBhKSBhcmUgc3RpbGwgb2NjdXJyaW5nIG9uIHRo
ZSBib3RzLCBhbmQgYikgd2VyZSBuZXcKLSAgICAgKiBpbiB0aGF0IGJ1aWxkLgotICAgICAqLwot
ICAgIHN0YXJ0OiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
Ci0gICAgICAgIHNlbGYuX2J1aWxkZXIuZ2V0QnVpbGROYW1lcyhmdW5jdGlvbihidWlsZE5hbWVz
KSB7Ci0gICAgICAgICAgICBzZWxmLl9hbmFseXplQnVpbGRzKGJ1aWxkTmFtZXMsIGNhbGxiYWNr
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzZWxmLl9idWlsZGVyLmdldE9sZEJ1aWxk
TmFtZXMoZnVuY3Rpb24ob2xkQnVpbGROYW1lcykgewotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9hbmFseXplQnVpbGRzKG9sZEJ1aWxkTmFtZXMsIGNhbGxiYWNrKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2FuYWx5
emVCdWlsZHM6IGZ1bmN0aW9uKGJ1aWxkTmFtZXMsIGNhbGxiYWNrLCBhbmFseXplZEFsbEJ1aWxk
c0NhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZnVuY3Rpb24g
aW5uZXIoYnVpbGRJbmRleCkgewotICAgICAgICAgICAgc2VsZi5faW5jb3Jwb3JhdGVCdWlsZEhp
c3RvcnkoYnVpbGROYW1lcywgYnVpbGRJbmRleCwgZnVuY3Rpb24oY2FsbEFnYWluKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGRhdGEgPSB7Ci0gICAgICAgICAgICAgICAgICAgIGhpc3Rvcnk6IHNl
bGYuX2hpc3RvcnksCi0gICAgICAgICAgICAgICAgICAgIHBvc3NpYmx5Rmxha3k6IHt9LAotICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmxha2luZXNzRGV0ZWN0b3Iu
cG9zc2libHlGbGFreVRlc3RzLmZvckVhY2goZnVuY3Rpb24odGVzdE5hbWUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5wb3NzaWJseUZsYWt5W3Rlc3ROYW1lXSA9IHNlbGYuX2ZsYWtpbmVz
c0RldGVjdG9yLmFsbEZhaWx1cmVzKHRlc3ROYW1lKTsKLSAgICAgICAgICAgICAgICB9KTsKLQot
ICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSBidWlsZEluZGV4ICsgMTsKLSAgICAgICAg
ICAgICAgICB2YXIgYW5hbHl6ZWRBbGxCdWlsZHMgPSBuZXh0SW5kZXggPj0gYnVpbGROYW1lcy5s
ZW5ndGg7Ci0gICAgICAgICAgICAgICAgdmFyIGhhdmVNb3JlRGF0YVRvRmV0Y2ggPSAhYW5hbHl6
ZWRBbGxCdWlsZHMgfHwgYW5hbHl6ZWRBbGxCdWlsZHNDYWxsYmFjazsKLQotICAgICAgICAgICAg
ICAgIHZhciBjYWxsYmFja1JlcXVlc3RlZFN0b3AgPSAhY2FsbGJhY2soZGF0YSwgaGF2ZU1vcmVE
YXRhVG9GZXRjaCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrUmVxdWVzdGVkU3RvcCkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgaWYgKCFjYWxs
QWdhaW4pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGlm
IChhbmFseXplZEFsbEJ1aWxkcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoYW5hbHl6ZWRB
bGxCdWlsZHNDYWxsYmFjaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuYWx5emVkQWxsQnVp
bGRzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlubmVyKG5l
eHRJbmRleCkgfSwgMCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICBpbm5l
cigwKTsKLSAgICB9LAotCi0gICAgX2luY29ycG9yYXRlQnVpbGRIaXN0b3J5OiBmdW5jdGlvbihi
dWlsZE5hbWVzLCBidWlsZEluZGV4LCBjYWxsYmFjaykgewotICAgICAgICB2YXIgcHJldmlvdXNC
dWlsZE5hbWUgPSBPYmplY3Qua2V5cyh0aGlzLl9oaXN0b3J5KS5sYXN0KCk7Ci0gICAgICAgIHZh
ciBuZXh0QnVpbGROYW1lID0gYnVpbGROYW1lc1tidWlsZEluZGV4XTsKLQotICAgICAgICB2YXIg
c2VsZiA9IHRoaXM7Ci0gICAgICAgIHNlbGYuX2xvYWRlci5zdGFydChuZXh0QnVpbGROYW1lLCBm
dW5jdGlvbih0ZXN0cywgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICBpZiAodG9vTWFu
eUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZpcnN0QnVpbGROYW1lID0gT2JqZWN0
LmtleXMoc2VsZi5faGlzdG9yeSlbMF07Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0
IChpLmUuLCBjdXJyZW50IG9yIG1vc3QgcmVjZW50KSBidWlsZCBleGl0ZWQgZWFybHkgZHVlIHRv
IHRvbyBtYW55Ci0gICAgICAgICAgICAgICAgLy8gZmFpbHVyZXMsIHdlIHdhbnQgdG8gcHJvY2Vz
cyBvdGhlciB0b28tbWFueS1mYWlsdXJlcyBidWlsZHMgbm9ybWFsbHkgdG8gdHJ5IHRvCi0gICAg
ICAgICAgICAgICAgLy8gZmlndXJlIG91dCB3aGVuIHRoZSB0b28tbWFueS1mYWlsdXJlcyBzdGFy
dGVkIG9jY3VycmluZy4gSWYgdGhlIGZpcnN0L2N1cnJlbnQKLSAgICAgICAgICAgICAgICAvLyBi
dWlsZCBkaWQgbm90IGV4aXQgZHVlIHRvIHRvbyBtYW55IGZhaWx1cmVzLCB0aGVuIHRvby1tYW55
LWZhaWx1cmVzIGJ1aWxkcyB3aWxsCi0gICAgICAgICAgICAgICAgLy8gb25seSBjb25mdXNlIG91
ciBhbmFseXNpcyAoc2luY2UgdGhleSBydW4gYSBzZW1pLWFyYml0cmFyeSBzdWJzZXQgb2YgdGVz
dHMpLCBzbwotICAgICAgICAgICAgICAgIC8vIHdlIHNob3VsZCBqdXN0IHNraXAgdGhlbSBlbnRp
cmVseS4KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RCdWlsZE5hbWUgJiYgIXNlbGYuX2hpc3Rv
cnlbZmlyc3RCdWlsZE5hbWVdLnRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKytzZWxmLl90ZXN0UnVuc1Np
bmNlTGFzdEludGVyZXN0aW5nQ2hhbmdlOwotCi0gICAgICAgICAgICB2YXIgaGlzdG9yeUl0ZW0g
PSB7Ci0gICAgICAgICAgICAgICAgdG9vTWFueUZhaWx1cmVzOiB0b29NYW55RmFpbHVyZXMsCi0g
ICAgICAgICAgICAgICAgdGVzdHM6IHt9LAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHNl
bGYuX2hpc3RvcnlbbmV4dEJ1aWxkTmFtZV0gPSBoaXN0b3J5SXRlbTsKLQotICAgICAgICAgICAg
dmFyIHByZXZpb3VzSGlzdG9yeUl0ZW07Ci0gICAgICAgICAgICBpZiAocHJldmlvdXNCdWlsZE5h
bWUpCi0gICAgICAgICAgICAgICAgcHJldmlvdXNIaXN0b3J5SXRlbSA9IHNlbGYuX2hpc3Rvcnlb
cHJldmlvdXNCdWlsZE5hbWVdOwotCi0gICAgICAgICAgICB2YXIgbmV3Rmxha3lUZXN0cyA9IHNl
bGYuX2ZsYWtpbmVzc0RldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMobmV4dEJ1aWxkTmFt
ZSwgdGVzdHMsIHRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICBpZiAobmV3Rmxha3lUZXN0
cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0UnVuc1NpbmNlTGFzdEludGVy
ZXN0aW5nQ2hhbmdlID0gMDsKLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIHBvc3NpYmx5
IGZsYWt5IHRlc3RzIGZyb20gdGhlIGZhaWx1cmUgaGlzdG9yeSwgc2luY2Ugd2hlbiB0aGV5IGZh
aWxlZAotICAgICAgICAgICAgICAgIC8vIGlzIG5vIGxvbmdlciBtZWFuaW5nZnVsLgotICAgICAg
ICAgICAgICAgIG5ld0ZsYWt5VGVzdHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0TmFtZSkgewotICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBidWlsZE5hbWUgaW4gc2VsZi5faGlzdG9yeSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWxmLl9oaXN0b3J5W2J1aWxkTmFtZV0udGVz
dHNbdGVzdE5hbWVdOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0ZXN0cykgewotICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c0hpc3RvcnlJdGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKHRlc3RO
YW1lIGluIHByZXZpb3VzSGlzdG9yeUl0ZW0udGVzdHMpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwcmV2aW91c0hpc3RvcnlJ
dGVtLnRlc3RzW3Rlc3ROYW1lXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aGlzdG9yeUl0ZW0udGVzdHNbdGVzdE5hbWVdID0gdGVzdHNbdGVzdE5hbWVdOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB2YXIgcHJldmlvdXNVbmV4cGxhaW5lZEZhaWx1cmVzQ291bnQg
PSBwcmV2aW91c0J1aWxkTmFtZSA/IE9iamVjdC5rZXlzKHNlbGYuX2hpc3RvcnlbcHJldmlvdXNC
dWlsZE5hbWVdLnRlc3RzKS5sZW5ndGggOiAwOwotICAgICAgICAgICAgdmFyIHVuZXhwbGFpbmVk
RmFpbHVyZXNDb3VudCA9IE9iamVjdC5rZXlzKHNlbGYuX2hpc3RvcnlbbmV4dEJ1aWxkTmFtZV0u
dGVzdHMpLmxlbmd0aDsKLQotICAgICAgICAgICAgaWYgKHByZXZpb3VzVW5leHBsYWluZWRGYWls
dXJlc0NvdW50ICYmICF1bmV4cGxhaW5lZEZhaWx1cmVzQ291bnQpCi0gICAgICAgICAgICAgICAg
c2VsZi5fdGVzdFJ1bnNTaW5jZUxhc3RJbnRlcmVzdGluZ0NoYW5nZSA9IDA7Ci0KLSAgICAgICAg
ICAgIGNvbnN0IG1pbmltdW1SZXF1aXJlZFRlc3RSdW5zV2l0aG91dEludGVyZXN0aW5nQ2hhbmdl
cyA9IDU7Ci0gICAgICAgICAgICBjYWxsYmFjayh1bmV4cGxhaW5lZEZhaWx1cmVzQ291bnQgfHwg
c2VsZi5fdGVzdFJ1bnNTaW5jZUxhc3RJbnRlcmVzdGluZ0NoYW5nZSA8IG1pbmltdW1SZXF1aXJl
ZFRlc3RSdW5zV2l0aG91dEludGVyZXN0aW5nQ2hhbmdlcyk7Ci0gICAgICAgIH0sCi0gICAgICAg
IGZ1bmN0aW9uKHRlc3RzKSB7Ci0gICAgICAgICAgICAvLyBTb21lIHRlc3RzIGZhaWxlZCwgYnV0
IHdlIGNvdWxkbid0IGZldGNoIHJlc3VsdHMuaHRtbCAocGVyaGFwcyBiZWNhdXNlIHRoZSB0ZXN0
Ci0gICAgICAgICAgICAvLyBydW4gYWJvcnRlZCBlYXJseSBmb3Igc29tZSByZWFzb24pLiBKdXN0
IHNraXAgdGhpcyBidWlsZCBlbnRpcmVseS4KLSAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwot
ICAgICAgICB9KTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9MYXlvdXRUZXN0
UmVzdWx0c0xvYWRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVz
dFJlc3VsdHNMb2FkZXIuanMJKHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0xh
eW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIoYnVpbGRlcikg
ewotICAgIHRoaXMuX2J1aWxkZXIgPSBidWlsZGVyOwotfQotCi1MYXlvdXRUZXN0UmVzdWx0c0xv
YWRlci5wcm90b3R5cGUgPSB7Ci0gICAgc3RhcnQ6IGZ1bmN0aW9uKGJ1aWxkTmFtZSwgY2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spIHsKLSAgICAgICAgdmFyIGNhY2hlS2V5ID0gJ0xheW91dFRlc3RS
ZXN1bHRzTG9hZGVyLicgKyB0aGlzLl9idWlsZGVyLm5hbWUgKyAnLicgKyBidWlsZE5hbWU7Ci0g
ICAgICAgIGNvbnN0IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiA9IDg7Ci0gICAgICAgIGlmIChQ
ZXJzaXN0ZW50Q2FjaGUuY29udGFpbnMoY2FjaGVLZXkpKSB7Ci0gICAgICAgICAgICB2YXIgY2Fj
aGVkRGF0YSA9IFBlcnNpc3RlbnRDYWNoZS5nZXQoY2FjaGVLZXkpOwotICAgICAgICAgICAgaWYg
KGNhY2hlZERhdGEudmVyc2lvbiA9PT0gY3VycmVudENhY2hlZERhdGFWZXJzaW9uKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNhY2hlZERhdGEuZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIGVy
cm9yQ2FsbGJhY2soY2FjaGVkRGF0YS50ZXN0cywgY2FjaGVkRGF0YS50b29NYW55RmFpbHVyZXMp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soY2Fj
aGVkRGF0YS50ZXN0cywgY2FjaGVkRGF0YS50b29NYW55RmFpbHVyZXMpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXN1
bHQgPSB7IHRlc3RzOiB7fSwgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwgZXJyb3I6IGZhbHNlLCB2
ZXJzaW9uOiBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24gfTsKLQotICAgICAgICBmdW5jdGlvbiBj
YWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxsYmFjayhwYXJzZVJlc3VsdCkgewotICAgICAgICAg
ICAgcmVzdWx0LnRlc3RzID0gcGFyc2VSZXN1bHQudGVzdHM7Ci0gICAgICAgICAgICByZXN1bHQu
dG9vTWFueUZhaWx1cmVzID0gcGFyc2VSZXN1bHQudG9vTWFueUZhaWx1cmVzOwotCi0gICAgICAg
ICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0LnRlc3RzLCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgc2VsZi5fZmV0Y2hBbmRQYXJz
ZU5SV1RSZXN1bHRzKGJ1aWxkTmFtZSwgY2FjaGVQYXJzZVJlc3VsdHNBbmRDYWxsQ2FsbGJhY2ss
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc2VsZi5fZmV0Y2hBbmRQYXJzZU9SV1RSZXN1bHRz
KGJ1aWxkTmFtZSwgY2FjaGVQYXJzZVJlc3VsdHNBbmRDYWxsQ2FsbGJhY2ssIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIC8vIFdlIGNvdWxkbid0IGZldGNoIHJlc3VsdHMgZm9yIHRoaXMg
YnVpbGQuCi0gICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAg
ICAgIGVycm9yQ2FsbGJhY2socmVzdWx0LnRlc3RzLCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2ZldGNoQW5kUGFy
c2VOUldUUmVzdWx0czogZnVuY3Rpb24oYnVpbGROYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spIHsKLSAgICAgICAgZ2V0UmVzb3VyY2UodGhpcy5fYnVpbGRlci5yZXN1bHRzRGly
ZWN0b3J5VVJMKGJ1aWxkTmFtZSkgKyAnZnVsbF9yZXN1bHRzLmpzb24nLCBmdW5jdGlvbih4aHIp
IHsKLSAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygobmV3IE5SV1RSZXN1bHRzUGFyc2VyKCkp
LnBhcnNlKHhoci5yZXNwb25zZVRleHQpKTsKLSAgICAgICAgfSwKLSAgICAgICAgZnVuY3Rpb24o
eGhyKSB7Ci0gICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH0s
Ci0KLSAgICBfZmV0Y2hBbmRQYXJzZU9SV1RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgcGFyc2VkQnVpbGRO
YW1lID0gdGhpcy5fYnVpbGRlci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShidWlsZE5hbWUpOwot
Ci0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvNjIzODAgd2FzIGZpeGVkIGluIHI4OTYx
MC4KLSAgICAgICAgdmFyIHJlc3VsdHNIVE1MU3VwcG9ydHNUb29NYW55RmFpbHVyZXNJbmZvID0g
cGFyc2VkQnVpbGROYW1lLnJldmlzaW9uID49IDg5NjEwOwotCi0gICAgICAgIHZhciByZXN1bHQg
PSB7IHRlc3RzOiB7fSwgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSB9OwotCi0gICAgICAgIHZhciBz
ZWxmID0gdGhpczsKLQotICAgICAgICBmdW5jdGlvbiBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUwo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBnZXRSZXNvdXJj
ZShzZWxmLl9idWlsZGVyLnJlc3VsdHNQYWdlVVJMKGJ1aWxkTmFtZSksIGZ1bmN0aW9uKHhocikg
ewotICAgICAgICAgICAgICAgIHZhciBwYXJzZVJlc3VsdCA9IChuZXcgT1JXVFJlc3VsdHNQYXJz
ZXIoKSkucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnRl
c3RzID0gcGFyc2VSZXN1bHQudGVzdHM7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdHNIVE1M
U3VwcG9ydHNUb29NYW55RmFpbHVyZXNJbmZvKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQu
dG9vTWFueUZhaWx1cmVzID0gcGFyc2VSZXN1bHQudG9vTWFueUZhaWx1cmVzOwotICAgICAgICAg
ICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKHhocikgewotICAgICAgICAgICAgICAgIC8vIFdlIGZhaWxlZCB0byBmZXRjaCByZXN1
bHRzLmh0bWwuCi0gICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBmZXRjaE51bWJlck9mRmFpbGluZ1Rl
c3RzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICAgICAgc2VsZi5f
YnVpbGRlci5nZXROdW1iZXJPZkZhaWxpbmdUZXN0cyhwYXJzZWRCdWlsZE5hbWUuYnVpbGROdW1i
ZXIsIGZ1bmN0aW9uKGZhaWxpbmdUZXN0Q291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAg
ICAgICAgICAgIHJlc3VsdC50b29NYW55RmFpbHVyZXMgPSB0b29NYW55RmFpbHVyZXM7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoZmFpbGluZ1Rlc3RDb3VudCA8IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIG51bWJlciBvZiBmYWlsaW5nIHRlc3RzIGNvdWxkbid0IGJlIGRldGVybWlu
ZWQuCi0gICAgICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjayhmYWlsaW5nVGVzdENvdW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHJlc3VsdHNIVE1MU3VwcG9ydHNUb29NYW55RmFpbHVyZXNJbmZvKSB7
Ci0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUwoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgZmV0Y2hOdW1iZXJPZkZhaWxp
bmdUZXN0cyhmdW5jdGlvbihmYWlsaW5nVGVzdENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghZmFpbGluZ1Rlc3RDb3VudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxs
IHRlc3RzIHBhc3NlZCwgc28gbm8gcmVzdWx0cy5odG1sIHdhcyBnZW5lcmF0ZWQuCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggZmV0Y2hpbmcgcmVzdWx0cy4KLSAg
ICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIH0sIGVy
cm9yQ2FsbGJhY2spOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBmZXRjaE51bWJlck9mRmFpbGluZ1Rlc3RzKGZ1bmN0aW9uKGZhaWxp
bmdUZXN0Q291bnQpIHsKLSAgICAgICAgICAgIGlmICghZmFpbGluZ1Rlc3RDb3VudCkgewotICAg
ICAgICAgICAgICAgIC8vIEFsbCB0ZXN0cyBwYXNzZWQuCi0gICAgICAgICAgICAgICAgc3VjY2Vz
c0NhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAvLyBGaW5kIG91dCB3aGljaCB0ZXN0cyBmYWlsZWQuCi0gICAgICAg
ICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUwoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICB9LCBlcnJvckNhbGxiYWNr
KTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvTlJXVFJlc3VsdHNQYXJzZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL05SV1RSZXN1bHRzUGFyc2VyLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9OUldUUmVzdWx0c1BhcnNlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gTlJXVFJlc3VsdHNQYXJzZXIoKSB7Ci19Ci0KLU5SV1RS
ZXN1bHRzUGFyc2VyLnByb3RvdHlwZSA9IHsKLSAgICBwYXJzZTogZnVuY3Rpb24odW5leHBlY3Rl
ZFJlc3VsdHNKUykgewotICAgICAgICB2YXIgZGF0YTsKLSAgICAgICAgZnVuY3Rpb24gQUREX1JF
U1VMVFMoeCkgewotICAgICAgICAgICAgZGF0YSA9IHg7Ci0gICAgICAgIH0KLQotICAgICAgICBl
dmFsKHVuZXhwZWN0ZWRSZXN1bHRzSlMpOwotICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhKTsK
LQotICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlGYWlsdXJlczogZGF0
YS5pbnRlcnJ1cHRlZCB9OwotCi0gICAgICAgIGZ1bmN0aW9uIGZvckVhY2hUZXN0KHRyZWUsIGhh
bmRsZXIsIG9wdF9wcmVmaXgpIHsKLSAgICAgICAgICAgIHZhciBwcmVmaXggPSBvcHRfcHJlZml4
IHx8ICcnOwotCi0gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdHJlZSkgewotICAgICAgICAg
ICAgICAgIHZhciBuZXdQcmVmaXggPSBwcmVmaXggPyAocHJlZml4ICsgJy8nICsga2V5KSA6IGtl
eTsKLSAgICAgICAgICAgICAgICBpZiAoJ2FjdHVhbCcgaW4gdHJlZVtrZXldKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciB0ZXN0T2JqZWN0ID0gdHJlZVtrZXldOwotICAgICAgICAgICAgICAg
ICAgICB0ZXN0T2JqZWN0Lm5hbWUgPSBuZXdQcmVmaXg7Ci0gICAgICAgICAgICAgICAgICAgIGhh
bmRsZXIodGVzdE9iamVjdCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGZvckVhY2hUZXN0KHRyZWVba2V5XSwgaGFuZGxlciwgbmV3UHJlZml4KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGlzRmFpbHVyZUV4cGVjdGVk
KGV4cGVjdGVkLCBhY3R1YWwpIHsKLSAgICAgICAgICAgIGlmIChhY3R1YWwgPT09ICdTS0lQJykK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgdmFyIGV4cGVjdGVk
QXJyYXkgPSBleHBlY3RlZC5zcGxpdCgnICcpOwotICAgICAgICAgICAgdmFyIGFjdHVhbEFycmF5
ID0gYWN0dWFsLnNwbGl0KCcgJyk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFj
dHVhbEFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGFjdHVhbFZhbHVl
ID0gYWN0dWFsQXJyYXlbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkQXJyYXkuY29u
dGFpbnMoYWN0dWFsVmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICBpZiAoZXhwZWN0ZWRBcnJheS5jb250YWlucygnRkFJTCcpICYmIFsnSU1BR0Un
LCAnVEVYVCcsICdJTUFHRStURVhUJ10uY29udGFpbnMoYWN0dWFsVmFsdWUpKQotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gY29udmVydE5SV1RSZXN1bHRTdHJpbmcobnJ3dFJlc3VsdCkgewotICAgICAg
ICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gewotICAgICAgICAgICAgICAgIENSQVNIOiAnY3Jh
c2gnLAotICAgICAgICAgICAgICAgICdJTUFHRStURVhUJzogJ2ZhaWwnLAotICAgICAgICAgICAg
ICAgIElNQUdFOiAnZmFpbCcsCi0gICAgICAgICAgICAgICAgVEVYVDogJ2ZhaWwnLAotICAgICAg
ICAgICAgICAgIFRJTUVPVVQ6ICd0aW1lb3V0JywKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAg
ICAgIGlmIChucnd0UmVzdWx0IGluIHRyYW5zbGF0aW9ucykKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJhbnNsYXRpb25zW25yd3RSZXN1bHRdOwotCi0gICAgICAgICAgICBpZiAobnJ3dFJlc3Vs
dC5jb250YWlucygnICcpKQotICAgICAgICAgICAgICAgIHJldHVybiAnZmxha3knOwotCi0gICAg
ICAgICAgICByZXR1cm4gJ3Vua25vd24gZmFpbHVyZSB0eXBlICcgKyBucnd0UmVzdWx0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yRWFjaFRlc3QoZGF0YS50ZXN0cywgZnVuY3Rpb24odGVzdCkg
ewotICAgICAgICAgICAgaWYgKGlzRmFpbHVyZUV4cGVjdGVkKHRlc3QuZXhwZWN0ZWQsIHRlc3Qu
YWN0dWFsKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZXN1bHQudGVz
dHNbdGVzdC5uYW1lXSA9IHsgZmFpbHVyZVR5cGU6IGNvbnZlcnROUldUUmVzdWx0U3RyaW5nKHRl
c3QuYWN0dWFsKSB9OwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0sCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05ld0J1Z0Zvcm0uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL05ld0J1Z0Zvcm0uanMJKHJldmlzaW9uIDkzMjU0KQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL05ld0J1Z0Zvcm0uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLWZ1bmN0aW9uIE5ld0J1Z0Zvcm0oKSB7Ci19Ci0KLU5ld0J1Z0Zvcm0u
cHJvdG90eXBlID0gewotICAgIGRvbUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg
Zm9ybURhdGEgPSB7fTsKLQotICAgICAgICBpZiAodGhpcy5jb21wb25lbnQpCi0gICAgICAgICAg
ICBmb3JtRGF0YS5jb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudDsKLSAgICAgICAgaWYgKHRoaXMu
ZGVzY3JpcHRpb24pCi0gICAgICAgICAgICBmb3JtRGF0YS5jb21tZW50ID0gdGhpcy5kZXNjcmlw
dGlvbjsKLSAgICAgICAgaWYgKHRoaXMua2V5d29yZHMpCi0gICAgICAgICAgICBmb3JtRGF0YS5r
ZXl3b3JkcyA9IHRoaXMua2V5d29yZHM7Ci0gICAgICAgIGlmICh0aGlzLm9wZXJhdGluZ1N5c3Rl
bSkKLSAgICAgICAgICAgIGZvcm1EYXRhLm9wX3N5cyA9IHRoaXMub3BlcmF0aW5nU3lzdGVtOwot
ICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybSkKLSAgICAgICAgICAgIGZvcm1EYXRhLnJlcF9wbGF0
Zm9ybSA9IHRoaXMucGxhdGZvcm07Ci0gICAgICAgIGlmICh0aGlzLnByb2R1Y3QpCi0gICAgICAg
ICAgICBmb3JtRGF0YS5wcm9kdWN0ID0gdGhpcy5wcm9kdWN0OwotICAgICAgICBpZiAodGhpcy50
aXRsZSkKLSAgICAgICAgICAgIGZvcm1EYXRhLnNob3J0X2Rlc2MgPSB0aGlzLnRpdGxlOwotICAg
ICAgICBpZiAodGhpcy51cmwpCi0gICAgICAgICAgICBmb3JtRGF0YS5idWdfZmlsZV9sb2MgPSB0
aGlzLnVybDsKLSAgICAgICAgaWYgKHRoaXMudmVyc2lvbikKLSAgICAgICAgICAgIGZvcm1EYXRh
LnZlcnNpb24gPSB0aGlzLnZlcnNpb247Ci0KLSAgICAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdmb3JtJyk7Ci0gICAgICAgIGZvcm0ubWV0aG9kID0gJ1BPU1QnOwotICAg
ICAgICBmb3JtLmFjdGlvbiA9IGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL2VudGVyX2J1Zy5jZ2kn
OwotCi0gICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRGF0YSkgewotICAgICAgICAgICAgdmFy
IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKLSAgICAgICAgICAgIGlu
cHV0LnR5cGUgPSAnaGlkZGVuJzsKLSAgICAgICAgICAgIGlucHV0Lm5hbWUgPSBrZXk7Ci0gICAg
ICAgICAgICBpbnB1dC52YWx1ZSA9IGZvcm1EYXRhW2tleV07Ci0gICAgICAgICAgICBmb3JtLmFw
cGVuZENoaWxkKGlucHV0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmb3JtOwotICAg
IH0sCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05ld0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5qcwkocmV2
aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTmV3QnVnRm9ybV91bml0dGVzdHMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigp
IHsKLQotbW9kdWxlKCdOZXdCdWdGb3JtJyk7Ci0KLWNvbnN0IHRlc3RGb3JtRGF0YSA9IHsKLSAg
ICBjb21wb25lbnQ6IHsgZm9ybU5hbWU6ICdjb21wb25lbnQnLCB2YWx1ZTogJ1Rvb2xzIC8gVGVz
dHMnIH0sCi0gICAgZGVzY3JpcHRpb246IHsgZm9ybU5hbWU6ICdjb21tZW50JywgdmFsdWU6ICdU
aGlzIGlzIGEgZGVzY3JpcHRpb25cblxud2l0aFxubmV3bGluZXMnIH0sCi0gICAga2V5d29yZHM6
IHsgZm9ybU5hbWU6ICdrZXl3b3JkcycsIHZhbHVlOiAnUXQsIFBsYXRmb3JtT25seScgfSwKLSAg
ICBvcGVyYXRpbmdTeXN0ZW06IHsgZm9ybU5hbWU6ICdvcF9zeXMnLCB2YWx1ZTogJ1dpbmRvd3Mg
NycgfSwKLSAgICBwbGF0Zm9ybTogeyBmb3JtTmFtZTogJ3JlcF9wbGF0Zm9ybScsIHZhbHVlOiAn
UEMnIH0sCi0gICAgcHJvZHVjdDogeyBmb3JtTmFtZTogJ3Byb2R1Y3QnLCB2YWx1ZTogJ1dlYktp
dCcgfSwKLSAgICB0aXRsZTogeyBmb3JtTmFtZTogJ3Nob3J0X2Rlc2MnLCB2YWx1ZTogJ1RoaXMg
aXMgYSBidWcgdGl0bGUnIH0sCi0gICAgdXJsOiB7IGZvcm1OYW1lOiAnYnVnX2ZpbGVfbG9jJywg
dmFsdWU6ICdodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT1mb28jYW5jaG9yJyB9LAotICAg
IHZlcnNpb246IHsgZm9ybU5hbWU6ICd2ZXJzaW9uJywgdmFsdWU6ICc1MjgrIChOaWdodGx5IEJ1
aWxkKScgfSwKLX07Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3RGb3JtKCkgewotICAgIHZhciBmb3Jt
ID0gbmV3IE5ld0J1Z0Zvcm0oKTsKLSAgICBmb3IgKHZhciBrZXkgaW4gdGVzdEZvcm1EYXRhKSB7
Ci0gICAgICAgIGZvcm1ba2V5XSA9IHRlc3RGb3JtRGF0YVtrZXldLnZhbHVlOwotICAgIH0KLSAg
ICByZXR1cm4gZm9ybTsKLX0KLQotdGVzdCgncHJvcGVydGllcyBhcmUgc2V0JywgOSwgZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgpOwotCi0gICAgZm9yICh2YXIg
a2V5IGluIHRlc3RGb3JtRGF0YSkgewotICAgICAgICBlcXVhbChmb3JtW2tleV0sIHRlc3RGb3Jt
RGF0YVtrZXldLnZhbHVlKTsKLSAgICB9Ci19KTsKLQotdGVzdCgnZG9tRWxlbWVudCgpIHBvc3Rz
IHRvIGVudGVyX2J1Zy5jZ2knLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZm9ybUVsZW1lbnQg
PSBjcmVhdGVUZXN0Rm9ybSgpLmRvbUVsZW1lbnQoKTsKLSAgICBlcXVhbChmb3JtRWxlbWVudC50
YWdOYW1lLCAnRk9STScpOwotICAgIGVxdWFsKGZvcm1FbGVtZW50Lm1ldGhvZCwgJ1BPU1QnKTsK
LSAgICBlcXVhbChmb3JtRWxlbWVudC5hY3Rpb24sICdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9l
bnRlcl9idWcuY2dpJyk7Ci19KTsKLQotdGVzdCgnZG9tRWxlbWVudCgpIGNvbnRhaW5zIG9ubHkg
aGlkZGVuIGlucHV0IGVsZW1lbnRzJywgOSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1lbnRz
ID0gY3JlYXRlVGVzdEZvcm0oKS5kb21FbGVtZW50KCkuZWxlbWVudHM7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICBlcXVhbChlbGVtZW50
c1tpXS50eXBlLCAnaGlkZGVuJyk7Ci0gICAgfQotfSk7Ci0KLXRlc3QoJ2RvbUVsZW1lbnQoKSBj
b250YWlucyBhbGwgZm9ybSB2YWx1ZXMnLCA5LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZm9ybUVs
ZW1lbnQgPSBjcmVhdGVUZXN0Rm9ybSgpLmRvbUVsZW1lbnQoKTsKLQotICAgIGZvciAodmFyIGtl
eSBpbiB0ZXN0Rm9ybURhdGEpIHsKLSAgICAgICAgdmFyIGRhdGEgPSB0ZXN0Rm9ybURhdGFba2V5
XTsKLSAgICAgICAgZXF1YWwoZm9ybUVsZW1lbnRbZGF0YS5mb3JtTmFtZV0udmFsdWUsIGRhdGEu
dmFsdWUsIGtleSk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
T1JXVFJlc3VsdHNQYXJzZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL09SV1RS
ZXN1bHRzUGFyc2VyLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9PUldU
UmVzdWx0c1BhcnNlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotZnVuY3Rpb24gT1JXVFJlc3VsdHNQYXJzZXIoKSB7Ci19Ci0KLU9SV1RSZXN1bHRzUGFy
c2VyLnByb3RvdHlwZSA9IHsKLSAgICBwYXJzZTogZnVuY3Rpb24ocmVzdWx0c0hUTUxTdHJpbmcp
IHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IHsgdGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGZh
bHNlIH07Ci0KLSAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdodG1s
Jyk7Ci0gICAgICAgIHJvb3QuaW5uZXJIVE1MID0gcmVzdWx0c0hUTUxTdHJpbmc7Ci0KLSAgICAg
ICAgLy8gTm90ZSB0aGF0IHNvbWUgb2xkIHJlc3VsdHMuaHRtbCBmaWxlcyB3b24ndCBjb250YWlu
IHRoaXMgZWxlbWVudCBldmVuIGlmIHdlIGhhZCB0byBzdG9wCi0gICAgICAgIC8vIHJ1bm5pbmcg
ZWFybHkgZHVlIHRvIHRvbyBtYW55IGZhaWx1cmVzLiBPdXIgY2FsbGVyIHdpbGwgaGF2ZSB0byBm
aWd1cmUgdGhhdCBvdXQKLSAgICAgICAgLy8gdGhlbXNlbHZlcy4KLSAgICAgICAgcmVzdWx0LnRv
b01hbnlGYWlsdXJlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RvcHBlZC1ydW5u
aW5nLWVhcmx5LW1lc3NhZ2UnKS5sZW5ndGggPiAwOwotCi0gICAgICAgIGZ1bmN0aW9uIHBhcnNl
UmVzdWx0VGFibGUocmVnZXgpIHsKLSAgICAgICAgICAgIHZhciBwYXJhZ3JhcGggPSBBcnJheS5w
cm90b3R5cGUuZmluZEZpcnN0LmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdwJyksIGZ1bmN0
aW9uKHBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHBhcmFn
cmFwaC5pbm5lclRleHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBpZiAoIXBhcmFn
cmFwaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAgICAgICB2YXIgdGFibGUg
PSBwYXJhZ3JhcGgubmV4dEVsZW1lbnRTaWJsaW5nOwotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGFibGUubm9kZU5hbWUgPT09ICdUQUJMRScpOwotICAgICAgICAgICAgcmV0dXJuIEFycmF5
LnByb3RvdHlwZS5tYXAuY2FsbCh0YWJsZS5yb3dzLCBmdW5jdGlvbihyb3cpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgbGlua3MgPSByb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTsKLSAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gewotICAgICAgICAgICAgICAgICAgICBuYW1lOiBsaW5r
c1swXS5pbm5lclRleHQsCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBtYXRjaCA9IC9eY3Jhc2ggbG9nIFwoKC4qKVwpJC8uZXhlYyhsaW5rc1tpXS5pbm5lclRl
eHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmFzaGluZ1N5bWJv
bCA9IG1hdGNoWzFdOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvZGlkIG5vdCBtYXRjaCBleHBlY3Rl
ZCByZXN1bHRzLykuZm9yRWFjaChmdW5jdGlvbih0ZXN0RGF0YSkgewotICAgICAgICAgICAgcmVz
dWx0LnRlc3RzW3Rlc3REYXRhLm5hbWVdID0geyBmYWlsdXJlVHlwZTogJ2ZhaWwnIH07Ci0gICAg
ICAgIH0pOwotICAgICAgICBwYXJzZVJlc3VsdFRhYmxlKC90aW1lZCBvdXQvKS5mb3JFYWNoKGZ1
bmN0aW9uKHRlc3REYXRhKSB7Ci0gICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFt
ZV0gPSB7IGZhaWx1cmVUeXBlOiAndGltZW91dCcgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHBh
cnNlUmVzdWx0VGFibGUoL3Rvb2wgdG8gY3Jhc2gvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3REYXRh
KSB7Ci0gICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7Ci0gICAgICAg
ICAgICAgICAgZmFpbHVyZVR5cGU6ICdjcmFzaCcsCi0gICAgICAgICAgICAgICAgY3Jhc2hpbmdT
eW1ib2w6IHRlc3REYXRhLmNyYXNoaW5nU3ltYm9sLAotICAgICAgICAgICAgfTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHBhcnNlUmVzdWx0VGFibGUoL1dlYiBwcm9jZXNzIHRvIGNyYXNoLykuZm9y
RWFjaChmdW5jdGlvbih0ZXN0RGF0YSkgewotICAgICAgICAgICAgcmVzdWx0LnRlc3RzW3Rlc3RE
YXRhLm5hbWVdID0gewotICAgICAgICAgICAgICAgIGZhaWx1cmVUeXBlOiAnd2VicHJvY2VzcyBj
cmFzaCcsCi0gICAgICAgICAgICAgICAgY3Jhc2hpbmdTeW1ib2w6IHRlc3REYXRhLmNyYXNoaW5n
U3ltYm9sLAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9QZXJzaXN0ZW50Q2FjaGUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1BlcnNpc3RlbnRDYWNoZS5qcwkocmV2
aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvUGVyc2lzdGVudENhY2hlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgUGVyc2lzdGVudENh
Y2hlID0gewotICAgIGNvbnRhaW5zOiBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgcmV0dXJuIGtl
eSBpbiBsb2NhbFN0b3JhZ2U7Ci0gICAgfSwKLQotICAgIGdldDogZnVuY3Rpb24oa2V5KSB7Ci0g
ICAgICAgIHZhciBzdHJpbmcgPSBsb2NhbFN0b3JhZ2Vba2V5XTsKLSAgICAgICAgaWYgKCFzdHJp
bmcpCi0gICAgICAgICAgICByZXR1cm4gc3RyaW5nOwotCi0gICAgICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCB1cGRhdGUgdGhlIGRhdGUgc3RvcmVkIHdpdGggdGhlIHZhbHVlIGhlcmUgdG8gbWFrZSB0
aGlzIG1vcmUgb2YgYW4gTVJVCi0gICAgICAgIC8vIGNhY2hlIChpbnN0ZWFkIG9mIG1vc3QtcmVj
ZW50bHktc3RvcmVkKSwgYnV0IHRoYXQgd291bGQgcmVzdWx0IGluIGV4dHJhIGRpc2sgYWNjZXNz
IHRoYXQKLSAgICAgICAgLy8gbWlnaHQgbm90IGJlIHNvIGdyZWF0LgotICAgICAgICByZXR1cm4g
SlNPTi5wYXJzZSh0aGlzLl9wYXJzZURhdGVBbmRKU09ORnJvbVN0cmluZyhzdHJpbmcpLmpzb24p
OwotICAgIH0sCi0KLSAgICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZVtrZXldID0gdGhpcy5fYWRkRGF0ZVRvSlNPTlN0
cmluZyhKU09OLnN0cmluZ2lmeSh2YWx1ZSkpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgICAgICBpZiAoZS5jb2RlICE9PSAyMikgLy8gUVVPVEFfRVhDRUVERURfRVJSCi0gICAgICAg
ICAgICAgICAgdGhyb3cgZTsKLQotICAgICAgICAgICAgLy8gV2UndmUgcnVuIG91dCBvZiBzcGFj
ZSBpbiBsb2NhbFN0b3JhZ2UuIExldCdzIGp1c3QgdGhyb3cgYXdheSBldmVyeXRoaW5nIGFuZCB0
cnkKLSAgICAgICAgICAgIC8vIGFnYWluLgotICAgICAgICAgICAgdGhpcy5fZW1wdHlDYWNoZSgp
OwotICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9LAot
Ci0gICAgcHJ1bmU6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTsK
LSAgICAgICAgZm9yICh2YXIga2V5IGluIGxvY2FsU3RvcmFnZSkgewotICAgICAgICAgICAgdmFy
IGRhdGUgPSB0aGlzLl9wYXJzZURhdGVBbmRKU09ORnJvbVN0cmluZyhsb2NhbFN0b3JhZ2Vba2V5
XSkuZGF0ZTsKLSAgICAgICAgICAgIGlmIChub3cgLSBkYXRlIDw9IHRoaXMuX2RhdGFBZ2VMaW1p
dE1TKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZGVsZXRlIGxvY2Fs
U3RvcmFnZVtrZXldOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5zZXQodGhpcy5fbGFzdFBy
dW5lRGF0ZUtleSwgbm93KTsKLSAgICB9LAotCi0gICAgX2FkZERhdGVUb0pTT05TdHJpbmc6IGZ1
bmN0aW9uKGpzb25TdHJpbmcpIHsKLSAgICAgICAgcmV0dXJuIERhdGUubm93KCkgKyB0aGlzLl9k
YXRlQW5kSlNPTlNlcGFyYXRvciArIGpzb25TdHJpbmc7Ci0gICAgfSwKLQotICAgIF9kYXRhQWdl
TGltaXRNUzogMTAwMCAqIDYwICogNjAgKiAyNCAqIDEuMSwgLy8gSnVzdCBvdmVyIG9uZSBkYXkK
LQotICAgIF9kYXRlQW5kSlNPTlNlcGFyYXRvcjogJzogJywKLQotICAgIF9lbXB0eUNhY2hlOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgZm9yICh2YXIga2V5IGluIGxvY2FsU3RvcmFnZSkKLSAgICAg
ICAgICAgIGRlbGV0ZSBsb2NhbFN0b3JhZ2Vba2V5XTsKLSAgICB9LAotCi0gICAgX3BhcnNlRGF0
ZUFuZEpTT05Gcm9tU3RyaW5nOiBmdW5jdGlvbihzdHJpbmcpIHsKLSAgICAgICAgdmFyIHNlcGFy
YXRvckluZGV4ID0gc3RyaW5nLmluZGV4T2YodGhpcy5fZGF0ZUFuZEpTT05TZXBhcmF0b3IpOwot
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUocGFyc2VJbnQoc3Ry
aW5nLnN1YnN0cmluZygwLCBzZXBhcmF0b3JJbmRleCksIDEwKSksCi0gICAgICAgICAgICBqc29u
OiBzdHJpbmcuc3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgdGhpcy5fZGF0ZUFuZEpTT05TZXBh
cmF0b3IubGVuZ3RoKSwKLSAgICAgICAgfTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9UZXN0RmFpbHVyZXMuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9UZXN0
RmFpbHVyZXMuY3NzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9UZXN0RmFp
bHVyZXMuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
YXNpZGUgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDNweDsKLSAgICByaWdo
dDogNXB4OwotICAgIGNvbG9yOiAjODg4OwotICAgIGZvbnQtc2l6ZTogMC45ZW07Ci19Ci0KLWNv
ZGUgewotICAgIGZvbnQtc2l6ZTogMC45ZW07Ci19Ci0KLW9sIHsKLSAgICBsaXN0LXN0eWxlLXR5
cGU6IG5vbmU7Ci19Ci0KLWR0IHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICBmb250LXdlaWdodDog
Ym9sZDsKLSAgICBtYXJnaW4tcmlnaHQ6IDNweDsKLX0KLQotZHQ6OmFmdGVyIHsKLSAgICBjb250
ZW50OiAnOic7Ci19Ci0KLSNmYWlsdXJlLWhpc3RvcnksICNwb3NzaWJseS1mbGFreS10ZXN0cyB7
Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDAgMCAwIDE1cHg7Ci19Ci0KLSNmYWlsdXJl
LWhpc3RvcnkgPiBsaSB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMTBweDsKLSAgICBwYWRkaW5nOiAx
MHB4OwotfQotCi0jcG9zc2libHktZmxha3ktdGVzdHMgPiBsaSB7Ci0gICAgcGFkZGluZzogMXB4
IDBweDsKLX0KLQotI2ZhaWx1cmUtaGlzdG9yeSA+IGxpLCAjcG9zc2libHktZmxha3ktdGVzdHMg
PiBsaSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDsKLSAgICBwYWRkaW5nLWxlZnQ6
IDUwcHg7Ci19Ci0KLSNwb3NzaWJseS1mbGFreS10ZXN0cyA+IGxpID4gOmZpcnN0LWNoaWxkIHsK
LSAgICBtYXJnaW4tbGVmdDogLTUwcHg7Ci19Ci0KLS5mbGFraW5lc3MtZXhhbXBsZXMtbGlzdCB7
Ci0gICAgcGFkZGluZzogMDsKLX0KLQotLnRlc3QtbGlzdCB7Ci0gICAgbWFyZ2luOiAwIDAgMCAt
NDBweDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0uaW5mbyB7Ci0gICAgZm9udC1zdHlsZTogaXRh
bGljOwotfQotCi0uZXhpc3RpbmctYW5kLW5ldy1idWdzIHsKLSAgICBtYXJnaW4tYm90dG9tOiAw
OwotfQotCi0uZXhpc3RpbmctYnVncy1saXN0LCAuc3VzcGVjdC1yZXZpc2lvbnMtbGlzdCwgLmZs
YWtpbmVzcy1leGFtcGxlcy1saXN0IHsKLSAgICBmb250LXNpemU6IHNtYWxsZXI7Ci19Ci0KLS5u
ZXctYnVnLWZvcm0gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5kaXNjbG9zdXJlLXRyaWFu
Z2xlIHsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMXM7Ci0g
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBjdXJzb3I6IGRlZmF1bHQ7Ci0gICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIHBhZGRpbmc6IDBweCAzcHg7Ci19Ci0KLS5leHBh
bmRlZCA+IC5kaXNjbG9zdXJlLXRyaWFuZ2xlIHsKLSAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90
YXRlWig5MGRlZyk7Ci19Ci0KLS5leHBhbmRhYmxlIHsKLSAgICBoZWlnaHQ6IDBweDsKLSAgICBv
dmVyZmxvdzogaGlkZGVuOwotfQotCi0uZXhwYW5kZWQgPiAuZXhwYW5kYWJsZSB7Ci0gICAgaGVp
Z2h0OiBhdXRvOwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1Rlc3RSZWxhdGVkQnVnRm9ybS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzCShy
ZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9UZXN0UmVsYXRlZEJ1Z0Zvcm0uanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFRl
c3RSZWxhdGVkQnVnRm9ybSh0ZXN0ZXIpIHsKLSAgICBOZXdCdWdGb3JtLmNhbGwodGhpcyk7Ci0K
LSAgICB0aGlzLl90ZXN0ZXIgPSB0ZXN0ZXI7Ci0KLSAgICB0aGlzLmNvbXBvbmVudCA9IFdlYktp
dEJ1Z3ppbGxhLkNvbXBvbmVudC5Ub29sc1Rlc3RzOwotICAgIHRoaXMua2V5d29yZHMgPSBbCi0g
ICAgICAgIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTGF5b3V0VGVzdEZhaWx1cmUsCi0gICAgICAg
IFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTWFraW5nQm90c1JlZCwKLSAgICBdLmpvaW4oJywgJyk7
Ci0gICAgdGhpcy5vcGVyYXRpbmdTeXN0ZW0gPSB0aGlzLl9jb21wdXRlT3BlcmF0aW5nU3lzdGVt
KCk7Ci0gICAgdGhpcy5wbGF0Zm9ybSA9IHRoaXMuX2NvbXB1dGVQbGF0Zm9ybSgpOwotICAgIHRo
aXMucHJvZHVjdCA9IFdlYktpdEJ1Z3ppbGxhLlByb2R1Y3QuV2ViS2l0OwotICAgIHRoaXMudmVy
c2lvbiA9IFdlYktpdEJ1Z3ppbGxhLlZlcnNpb24uTmlnaHRseTsKLX0KLQotVGVzdFJlbGF0ZWRC
dWdGb3JtLnByb3RvdHlwZSA9IHsKLSAgICBkb21FbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmFyIGZvcm0gPSBOZXdCdWdGb3JtLnByb3RvdHlwZS5kb21FbGVtZW50LmNhbGwodGhpcyk7
Ci0gICAgICAgIGZvcm0uY2xhc3NOYW1lID0gJ25ldy1idWctZm9ybSc7Ci0gICAgICAgIGZvcm0u
dGFyZ2V0ID0gJ19ibGFuayc7Ci0gICAgICAgIHJldHVybiBmb3JtOwotICAgIH0sCi0KLSAgICBf
Y29tcHV0ZU9wZXJhdGluZ1N5c3RlbTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICgvV2luZG93
cyA3Ly50ZXN0KHRoaXMuX3Rlc3Rlci5uYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXRC
dWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93czc7Ci0gICAgICAgIGlmICgvV2luZG93cyBY
UC8udGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVn
emlsbGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUDsKLSAgICAgICAgaWYgKC9Tbm93TGVvcGFy
ZC8udGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVn
emlsbGEuT3BlcmF0aW5nU3lzdGVtLlNub3dMZW9wYXJkOwotICAgICAgICBpZiAoL0xlb3BhcmQv
LnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3pp
bGxhLk9wZXJhdGluZ1N5c3RlbS5MZW9wYXJkOwotICAgICAgICByZXR1cm4gJyc7Ci0gICAgfSwK
LQotICAgIF9jb21wdXRlUGxhdGZvcm06IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoL1dpbmRv
d3MvLnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1
Z3ppbGxhLlBsYXRmb3JtLlBDOwotICAgICAgICBpZiAoL0xlb3BhcmQvLnRlc3QodGhpcy5fdGVz
dGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLk1h
Y2ludG9zaDsKLSAgICAgICAgcmV0dXJuICcnOwotICAgIH0sCi19OwotCi1UZXN0UmVsYXRlZEJ1
Z0Zvcm0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IE5ld0J1Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL1Rlc3RSZWxhdGVkQnVnRm9ybV91bml0dGVzdHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL1Rlc3RSZWxhdGVkQnVnRm9ybV91bml0dGVzdHMuanMJKHJl
dmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1Rlc3RSZWxhdGVkQnVnRm9ybV91bml0
dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShm
dW5jdGlvbigpIHsKLQotbW9kdWxlKCdUZXN0UmVsYXRlZEJ1Z0Zvcm0nKTsKLQotZnVuY3Rpb24g
Y3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSkgewotICAgIHZhciBtb2NrQnVpbGRib3QgPSB7fTsK
LSAgICBtb2NrQnVpbGRib3QucGFyc2VCdWlsZE5hbWUgPSBmdW5jdGlvbihidWlsZE5hbWUpIHsK
LSAgICAgICAgdmFyIG1hdGNoID0gLyhcZCspLy5leGVjKGJ1aWxkTmFtZSk7Ci0gICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICByZXZpc2lvbjogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSwKLSAg
ICAgICAgICAgIGJ1aWxkTnVtYmVyOiBwYXJzZUludChtYXRjaFsyXSwgMTApLAotICAgICAgICB9
OwotICAgIH07Ci0KLSAgICB2YXIgbW9ja0J1aWxkZXIgPSB7fTsKLSAgICBtb2NrQnVpbGRlci5u
YW1lID0gdGVzdGVyTmFtZTsKLSAgICBtb2NrQnVpbGRlci5idWlsZGJvdCA9IG1vY2tCdWlsZGJv
dDsKLSAgICBtb2NrQnVpbGRlci5yZXN1bHRzUGFnZVVSTCA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkg
ewotICAgICAgICByZXR1cm4gJ1tSRVNVTFRTIFBBR0UgVVJMICcgKyB0aGlzLm5hbWUgKyAnLCAn
ICsgYnVpbGROYW1lICsgJ10nOwotICAgIH0KLQotICAgIHJldHVybiBuZXcgVGVzdFJlbGF0ZWRC
dWdGb3JtKG1vY2tCdWlsZGVyKTsKLX0KLQotdGVzdCgnY29tcG9uZW50IGFuZCBrZXl3b3JkcyBh
cmUgc2V0JywgMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgn
V2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScpOwotCi0gICAgZXF1YWwoZm9ybS5jb21wb25lbnQs
IFdlYktpdEJ1Z3ppbGxhLkNvbXBvbmVudC5Ub29sc1Rlc3RzKTsKLSAgICBkZWVwRXF1YWwoZm9y
bS5rZXl3b3Jkcy5zcGxpdCgnLCAnKSwgW1dlYktpdEJ1Z3ppbGxhLktleXdvcmQuTGF5b3V0VGVz
dEZhaWx1cmUsIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTWFraW5nQm90c1JlZF0pOwotfSk7Ci0K
LWNvbnN0IHRlc3RlcnMgPSB7Ci0gICAgJ0dUSyBMaW51eCAzMi1iaXQgUmVsZWFzZSc6IHsKLSAg
ICAgICAgb3BlcmF0aW5nU3lzdGVtOiAnJywKLSAgICAgICAgcGxhdGZvcm06ICcnLAotICAgIH0s
Ci0gICAgJ0xlb3BhcmQgSW50ZWwgUmVsZWFzZSAoVGVzdHMpJzogewotICAgICAgICBvcGVyYXRp
bmdTeXN0ZW06IFdlYktpdEJ1Z3ppbGxhLk9wZXJhdGluZ1N5c3RlbS5MZW9wYXJkLAotICAgICAg
ICBwbGF0Zm9ybTogV2ViS2l0QnVnemlsbGEuUGxhdGZvcm0uTWFjaW50b3NoLAotICAgIH0sCi0g
ICAgJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKSc6IHsKLSAgICAgICAgb3BlcmF0
aW5nU3lzdGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uU25vd0xlb3BhcmQsCi0g
ICAgICAgIHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0Zm9ybS5NYWNpbnRvc2gsCi0gICAg
fSwKLSAgICAnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSc6IHsKLSAgICAgICAgb3BlcmF0aW5n
U3lzdGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93czcsCi0gICAgICAg
IHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0Zm9ybS5QQywKLSAgICB9LAotICAgICdXaW5k
b3dzIFhQIERlYnVnIChUZXN0cyknOiB7Ci0gICAgICAgIG9wZXJhdGluZ1N5c3RlbTogV2ViS2l0
QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUCwKLSAgICAgICAgcGxhdGZvcm06IFdl
YktpdEJ1Z3ppbGxhLlBsYXRmb3JtLlBDLAotICAgIH0sCi19OwotCi10ZXN0KCdvcGVyYXRpbmcg
c3lzdGVtIGlzIGRlZHVjZWQnLCA1LCBmdW5jdGlvbigpIHsKLSAgICBmb3IgKHZhciBuYW1lIGlu
IHRlc3RlcnMpIHsKLSAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybShuYW1lKTsKLSAg
ICAgICAgZXF1YWwoZm9ybS5vcGVyYXRpbmdTeXN0ZW0sIHRlc3RlcnNbbmFtZV0ub3BlcmF0aW5n
U3lzdGVtKTsKLSAgICB9Ci19KTsKLQotdGVzdCgncGxhdGZvcm0gaXMgZGVkdWNlZCcsIDUsIGZ1
bmN0aW9uKCkgewotICAgIGZvciAodmFyIG5hbWUgaW4gdGVzdGVycykgewotICAgICAgICB2YXIg
Zm9ybSA9IGNyZWF0ZVRlc3RGb3JtKG5hbWUpOwotICAgICAgICBlcXVhbChmb3JtLnBsYXRmb3Jt
LCB0ZXN0ZXJzW25hbWVdLnBsYXRmb3JtKTsKLSAgICB9Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9UcmFjLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9UcmFj
LmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9UcmFjLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHRyYWMgPSB0cmFjIHx8
IHt9OwotCi0oZnVuY3Rpb24oKSB7Ci0KLWZ1bmN0aW9uIGZpbmRVc2luZ1JlZ0V4cChzdHJpbmcs
IHJlZ2V4cCkKLXsKLSAgICB2YXIgbWF0Y2ggPSByZWdleHAuZXhlYyhzdHJpbmcpOwotICAgIGlm
IChtYXRjaCkKLSAgICAgICAgcmV0dXJuIG1hdGNoWzFdOwotICAgIHJldHVybiBudWxsOwotfQot
Ci1mdW5jdGlvbiBmaW5kUmV2aWV3ZXIobWVzc2FnZSkKLXsKLSAgICB2YXIgcmVnZXhwID0gL1Jl
dmlld2VkIGJ5IChbXi5dKykvOwotICAgIHJldHVybiBmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwg
cmVnZXhwKTsKLX0KLQotZnVuY3Rpb24gZmluZEF1dGhvcihtZXNzYWdlKQotewotICAgIHZhciBy
ZWdleHAgPSAvUGF0Y2ggYnkgKFtePF0rKSA8LzsKLSAgICByZXR1cm4gZmluZFVzaW5nUmVnRXhw
KG1lc3NhZ2UsIHJlZ2V4cCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmRCdWdJRChtZXNzYWdlKQotewot
ICAgIHZhciByZWdleHAgPSAvXC9zaG93X2J1Zy5jZ2lcP2lkPShcZCspLzsKLSAgICByZXR1cm4g
cGFyc2VJbnQoZmluZFVzaW5nUmVnRXhwKG1lc3NhZ2UsIHJlZ2V4cCksIDEwKTsKLX0KLQotZnVu
Y3Rpb24gZmluZFJldmlzaW9uKHRpdGxlKQotewotICAgIHZhciByZWdleHAgPSAvXlJldmlzaW9u
IChcZCspOi87Ci0gICAgcmV0dXJuIHBhcnNlSW50KGZpbmRVc2luZ1JlZ0V4cCh0aXRsZSwgcmVn
ZXhwKSwgMTApOwotfQotCi1mdW5jdGlvbiBmaW5kU3VtbWFyeShtZXNzYWdlKQotewotICAgIHZh
ciBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoJ1xuJyk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
aW5lcy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2ldCi0gICAgICAg
IGlmIChmaW5kQnVnSUQobGluZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYg
KGZpbmRSZXZpZXdlcihsaW5lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBP
bGQtc3R5bGUgY29tbWl0IG1lc3NhZ2UuCi0gICAgICAgIGlmICgvXlxkXGRcZFxkLVxkXGQtXGRc
ZC8uZXhlYyhsaW5lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobGluZS5s
ZW5ndGggPiAwKQotICAgICAgICAgICAgcmV0dXJuIGxpbmU7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBmaW5kUmV2ZXJ0KG1lc3NhZ2UpCi17Ci0gICAgdmFyIHJlZ2V4cCA9IC9yb2xsaW5nIG91dCBy
KFxkKylcLi87Ci0gICAgdmFyIHJldmlzaW9uID0gZmluZFVzaW5nUmVnRXhwKG1lc3NhZ2UsIHJl
Z2V4cCk7Ci0gICAgaWYgKCFyZXZpc2lvbikKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAg
ICByZXR1cm4gcGFyc2VJbnQocmV2aXNpb24sIDEwKTsKLX0KLQotLy8gRklYTUU6IENvbnNpZGVy
IGV4cG9zaW5nIHRoaXMgbWV0aG9kIGZvciB1bml0IHRlc3RpbmcuCi1mdW5jdGlvbiBwYXJzZUNv
bW1pdERhdGEocmVzcG9uc2VYTUwpCi17Ci0gICAgdmFyIGNvbW1pdHMgPSBBcnJheS5wcm90b3R5
cGUubWFwLmNhbGwocmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2l0ZW0nKSwgZnVu
Y3Rpb24oaXRlbSkgewotICAgICAgICB2YXIgdGl0bGUgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCd0aXRsZScpWzBdLnRleHRDb250ZW50OwotICAgICAgICB2YXIgYXV0aG9yID0gaXRlbS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnYXV0aG9yJylbMF0udGV4dENvbnRlbnQ7Ci0gICAgICAgIHZh
ciB0aW1lID0gaXRlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgncHViRGF0ZScpWzBdLnRleHRDb250
ZW50OwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGEgdmVyeSBoaWdoLWZpZGVsaXR5
IHJlcHJvZHVjdGlvbiBvZiB0aGUgY29tbWl0IG1lc3NhZ2UsCi0gICAgICAgIC8vIGJ1dCBpdCdz
IGdvb2QgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMuCi0gICAgICAgIHZhciBjb250YWluZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgY29udGFpbmVyLmlubmVySFRN
TCA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Rlc2NyaXB0aW9uJylbMF0udGV4dENvbnRl
bnQ7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gY29udGFpbmVyLmlubmVyVGV4dDsKLQotICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgJ3JldmlzaW9uJzogZmluZFJldmlzaW9uKHRpdGxlKSwK
LSAgICAgICAgICAgICd0aXRsZSc6IHRpdGxlLAotICAgICAgICAgICAgJ3RpbWUnOiB0aW1lLAot
ICAgICAgICAgICAgJ3N1bW1hcnknOiBmaW5kU3VtbWFyeShtZXNzYWdlKSwKLSAgICAgICAgICAg
ICdhdXRob3InOiBmaW5kQXV0aG9yKG1lc3NhZ2UpIHx8IGF1dGhvciwKLSAgICAgICAgICAgICdy
ZXZpZXdlcic6IGZpbmRSZXZpZXdlcihtZXNzYWdlKSwKLSAgICAgICAgICAgICdidWdJRCc6IGZp
bmRCdWdJRChtZXNzYWdlKSwKLSAgICAgICAgICAgICdtZXNzYWdlJzogbWVzc2FnZSwKLSAgICAg
ICAgICAgICdyZXZlcnRlZFJldmlzaW9uJzogZmluZFJldmVydChtZXNzYWdlKSwKLSAgICAgICAg
fTsKLSAgICB9KTsKLQotICAgIHJldHVybiBjb21taXRzOwotfQotCi12YXIgZ19jYWNoZSA9IG5l
dyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKLSAgICB2
YXIgZXhwbG9kZWRLZXkgPSBrZXkuc3BsaXQoJ1xuJyk7Ci0KLSAgICB2YXIgcGF0aCA9IGV4cGxv
ZGVkS2V5WzBdOwotICAgIHZhciBzdGFydFJldmlzaW9uID0gZXhwbG9kZWRLZXlbMV07Ci0gICAg
dmFyIGVuZFJldmlzaW9uID0gZXhwbG9kZWRLZXlbMl07Ci0KLSAgICB2YXIgdXJsID0gdHJhYy5s
b2dVUkwocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sIHRydWUsIHRydWUpOwotCi0g
ICAgbmV0LmdldCh1cmwsIGZ1bmN0aW9uKGNvbW1pdERhdGEpIHsKLSAgICAgICAgY2FsbGJhY2so
cGFyc2VDb21taXREYXRhKGNvbW1pdERhdGEpKTsKLSAgICB9KTsKLX0pOwotCi10cmFjLmNoYW5n
ZXNldFVSTCA9IGZ1bmN0aW9uKHJldmlzaW9uKQotewotICAgIHJldHVybiBjb25maWcua1RyYWNV
UkwgKyAnL2NoYW5nZXNldC8nICsgcmV2aXNpb247Ci19OwotCi10cmFjLmxvZ1VSTCA9IGZ1bmN0
aW9uKHBhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBzaG93RnVsbENvbW1pdExvZ3Ms
IGZvcm1hdEFzUlNTKQotewotICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB7Ci0gICAgICAgIHJl
djogZW5kUmV2aXNpb24sCi0gICAgICAgIHN0b3BfcmV2OiBzdGFydFJldmlzaW9uLAotICAgICAg
ICAvLyBUcmFjIHJlcXVpcmVzIGxpbWl0IHRvIGJlIDEgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2Yg
cmV2aXNpb25zIHdlIGFjdHVhbGx5IHdhbnQgdG8gc2hvdy4KLSAgICAgICAgLy8gU2VlIDxodHRw
Oi8vdHJhYy5lZGdld2FsbC5vcmcvdGlja2V0LzEwMzE3Pi4KLSAgICAgICAgbGltaXQ6IGVuZFJl
dmlzaW9uIC0gc3RhcnRSZXZpc2lvbiArIDIsCi0gICAgfTsKLQotICAgIGlmIChzaG93RnVsbENv
bW1pdExvZ3MpCi0gICAgICAgIHF1ZXJ5UGFyYW1ldGVycy52ZXJib3NlID0gJ29uJzsKLSAgICBp
ZiAoZm9ybWF0QXNSU1MpCi0gICAgICAgIHF1ZXJ5UGFyYW1ldGVycy5mb3JtYXQgPSAncnNzJzsK
LQotICAgIHJldHVybiBjb25maWcua1RyYWNVUkwgKyAnL2xvZy8nICsgcGF0aCArICc/JyArICQu
cGFyYW0ocXVlcnlQYXJhbWV0ZXJzKTsKLX07Ci0KLXRyYWMucmVjZW50Q29tbWl0RGF0YSA9IGZ1
bmN0aW9uKHBhdGgsIGxpbWl0LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgdXJsID0gY29uZmlnLmtU
cmFjVVJMICsgJy9sb2cvJyArIHBhdGggKyAnPycgKyAkLnBhcmFtKHsKLSAgICAgICAgJ3ZlcmJv
c2UnOiAnb24nLAotICAgICAgICAnZm9ybWF0JzogJ3JzcycsCi0gICAgICAgICdsaW1pdCc6IGxp
bWl0LAotICAgIH0pOwotCi0gICAgbmV0LmdldCh1cmwsIGZ1bmN0aW9uKGNvbW1pdERhdGEpIHsK
LSAgICAgICAgY2FsbGJhY2socGFyc2VDb21taXREYXRhKGNvbW1pdERhdGEpKTsKLSAgICB9KTsK
LX07Ci0KLXRyYWMuY29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UgPSBmdW5jdGlvbihwYXRoLCBz
dGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGtleSA9IFtw
YXRoLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbl0uam9pbignXG4nKTsKLSAgICBnX2NhY2hl
LmdldChrZXksIGNhbGxiYWNrKTsKLX07Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
VXRpbGl0aWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9VdGlsaXRpZXMuanMJ
KHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1V0aWxpdGllcy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIGNyZWF0ZURl
ZmluaXRpb25MaXN0KGl0ZW1zKSB7Ci0gICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkbCcpOwotICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24ocGFpcikgewotICAgICAgICB2
YXIgZHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkdCcpOwotICAgICAgICBkdC5hcHBlbmRD
aGlsZChwYWlyWzBdKTsKLSAgICAgICAgdmFyIGRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGQnKTsKLSAgICAgICAgZGQuYXBwZW5kQ2hpbGQocGFpclsxXSk7Ci0gICAgICAgIGxpc3QuYXBw
ZW5kQ2hpbGQoZHQpOwotICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGRkKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gbGlzdDsKLX0KLQotZnVuY3Rpb24gZmV0Y2hSZXNvdXJjZSh1cmwsIG1ldGhvZCwg
cXVlcnlQYXJhbWV0ZXJzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT09IDQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIC8vIEFsbG93IGEgc3RhdHVzIG9mIDAgZm9yIGVhc2llciB0ZXN0
aW5nIHdpdGggbG9jYWwgZmlsZXMuCi0gICAgICAgIGlmICghdGhpcy5zdGF0dXMgfHwgdGhpcy5z
dGF0dXMgPT09IDIwMCkKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOwotICAgICAgICBlbHNl
IGlmIChlcnJvckNhbGxiYWNrKQotICAgICAgICAgICAgZXJyb3JDYWxsYmFjayh0aGlzKTsKLSAg
ICB9OwotCi0gICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcgJiYgcXVlcnlQYXJhbWV0ZXJzKQotICAg
ICAgICB1cmwgPSBhZGRRdWVyeVBhcmFtZXRlcnNUb1VSTCh1cmwsIHF1ZXJ5UGFyYW1ldGVycyk7
Ci0KLSAgICB4aHIub3BlbihtZXRob2QsIHVybCk7Ci0KLSAgICBpZiAobWV0aG9kID09PSAnR0VU
JykgewotICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dmFyIGRhdGEgPSB1cmxFbmNvZGVRdWVyeVBhcmFtZXRlcnMocXVlcnlQYXJhbWV0ZXJzKTsKLSAg
ICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZCcpOwotICAgIHhoci5zZW5kKGRhdGEpOwotfQotCi1mdW5jdGlvbiBn
ZXRSZXNvdXJjZSh1cmwsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgZmV0Y2hSZXNv
dXJjZSh1cmwsICdHRVQnLCBudWxsLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1
bmN0aW9uIHVybEVuY29kZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMpIHsKLSAgICB2
YXIgZW5jb2RlZFBhcmFtZXRlcnMgPSBPYmplY3Qua2V5cyhxdWVyeVBhcmFtZXRlcnMpLm1hcChm
dW5jdGlvbihrZXkpIHsKLSAgICAgICAgcmV0dXJuIGtleSArICc9JyArIGVuY29kZVVSSUNvbXBv
bmVudChxdWVyeVBhcmFtZXRlcnNba2V5XSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGVuY29kZWRQ
YXJhbWV0ZXJzLmpvaW4oJyYnKTsKLX0KLQotZnVuY3Rpb24gYWRkUXVlcnlQYXJhbWV0ZXJzVG9V
UkwodXJsLCBxdWVyeVBhcmFtZXRlcnMpIHsKLSAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA8IDAp
Ci0gICAgICAgIHVybCArPSAnPyc7Ci0gICAgZWxzZQotICAgICAgICB1cmwgKz0gJyYnOwotCi0g
ICAgcmV0dXJuIHVybCArIHVybEVuY29kZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMp
OwotfQotCi1mdW5jdGlvbiBsb25nZXN0Q29tbW9uUGF0aFByZWZpeChwYXRocykgewotICAgIGNv
bnN0IHNlcGFyYXRvciA9ICcvJzsKLQotICAgIHZhciBzcGxpdFBhdGhzID0gcGF0aHMubWFwKGZ1
bmN0aW9uKHBhdGgpIHsgcmV0dXJuIHBhdGguc3BsaXQoc2VwYXJhdG9yKSB9KTsKLSAgICB2YXIg
Zmlyc3RTcGxpdFBhdGggPSBzcGxpdFBhdGhzLnNoaWZ0KCk7Ci0KLSAgICB2YXIgcmVzdWx0ID0g
W107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaXJzdFNwbGl0UGF0aC5sZW5ndGg7ICsraSkg
ewotICAgICAgICBpZiAoIXNwbGl0UGF0aHMuZXZlcnkoZnVuY3Rpb24oc3BsaXRQYXRoKSB7IHJl
dHVybiBzcGxpdFBhdGhbaV0gPT09IGZpcnN0U3BsaXRQYXRoW2ldIH0pKQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGZpcnN0U3BsaXRQYXRoW2ldKTsKLSAgICB9Ci0K
LSAgICBpZiAoIXJlc3VsdC5sZW5ndGgpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVy
biByZXN1bHQuam9pbihzZXBhcmF0b3IpOwotfQotCi1mdW5jdGlvbiByZW1vdmVQYXRoRXh0ZW5z
aW9uKHN0cmluZykgewotICAgIHZhciBkb3RJbmRleCA9IHN0cmluZy5sYXN0SW5kZXhPZignLicp
OwotICAgIGlmIChkb3RJbmRleCA8IDApCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0
dXJuIHN0cmluZy5zdWJzdHJpbmcoMCwgZG90SW5kZXgpOwotfQotCi1mdW5jdGlvbiBzb3J0ZWQo
YXJyYXksIHNvcnRGdW5jdGlvbikgewotICAgIHZhciBuZXdBcnJheSA9IGFycmF5LnNsaWNlKCk7
Ci0gICAgbmV3QXJyYXkuc29ydChzb3J0RnVuY3Rpb24pOwotICAgIHJldHVybiBuZXdBcnJheTsK
LX0KLQotQXJyYXkucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICBy
ZXR1cm4gdGhpcy5pbmRleE9mKHZhbHVlKSA+PSAwOwotfQotCi1BcnJheS5wcm90b3R5cGUuZmlu
ZEZpcnN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChwcmVkaWNhdGUodGhpc1tpXSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhpc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19Ci0KLUFy
cmF5LnByb3RvdHlwZS5maW5kTGFzdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkgewotICAgIGZvciAo
dmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGlmIChwcmVk
aWNhdGUodGhpc1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gdGhpc1tpXTsKLSAgICB9Ci0gICAg
cmV0dXJuIG51bGw7Ci19Ci0KLUFycmF5LnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24oKSB7Ci0g
ICAgaWYgKCF0aGlzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICByZXR1
cm4gdGhpc1t0aGlzLmxlbmd0aCAtIDFdOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS5oYXNTdHls
ZUNsYXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdc
XGInICsga2xhc3MgKyAnXFxiJyk7Ci0gICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5jbGFzc05h
bWUpOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS5hZGRTdHlsZUNsYXNzID0gZnVuY3Rpb24oa2xh
c3MpIHsKLSAgICBpZiAodGhpcy5oYXNTdHlsZUNsYXNzKGtsYXNzKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHRoaXMuY2xhc3NOYW1lICs9ICcgJyArIGtsYXNzOwotfQotCi1FbGVtZW50LnByb3Rv
dHlwZS5yZW1vdmVTdHlsZUNsYXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICB2YXIgcmVnZXgg
PSBuZXcgUmVnRXhwKCdcXGInICsga2xhc3MgKyAnXFxiJywgJ2cnKTsKLSAgICB0aGlzLmNsYXNz
TmFtZSA9IHRoaXMuY2xhc3NOYW1lLnJlcGxhY2UocmVnZXgsICcnKTsKLX0KLQotRWxlbWVudC5w
cm90b3R5cGUudG9nZ2xlU3R5bGVDbGFzcyA9IGZ1bmN0aW9uKGtsYXNzKSB7Ci0gICAgaWYgKHRo
aXMuaGFzU3R5bGVDbGFzcyhrbGFzcykpCi0gICAgICAgIHRoaXMucmVtb3ZlU3R5bGVDbGFzcyhr
bGFzcyk7Ci0gICAgZWxzZQotICAgICAgICB0aGlzLmFkZFN0eWxlQ2xhc3Moa2xhc3MpOwotfQot
Ci1Ob2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZHJlbiA9IGZ1bmN0aW9uKGNoaWxkcmVuKSB7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhp
cy5hcHBlbmRDaGlsZChjaGlsZHJlbltpXSk7Ci19Ci0KLU5vZGUucHJvdG90eXBlLnJlbW92ZUFs
bENoaWxkcmVuID0gZnVuY3Rpb24oKSB7Ci0gICAgd2hpbGUgKHRoaXMuZmlyc3RDaGlsZCkKLSAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZCh0aGlzLmZpcnN0Q2hpbGQpOwotfQotCi1TdHJpbmcucHJv
dG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24oc3Vic3RyaW5nKSB7Ci0gICAgcmV0dXJuIHRoaXMu
aW5kZXhPZihzdWJzdHJpbmcpID49IDA7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRpbGl0
aWVzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRpbGl0aWVz
X3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRpbGl0
aWVzX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxlKCdVdGlsaXRpZXMnKTsKLQotdGVzdCgnaGFz
U3R5bGVDbGFzcycsIDExLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygn
Zm9vJykpOwotICAgIG9rKCFlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsKLQotICAgIGVs
ZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdm
b28nKSkKLSAgICBvayghZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdiYXInKSk7Ci0KLSAgICBlbGVt
ZW50LmNsYXNzTmFtZSA9ICdmb28gZm9vJzsKLSAgICBvayhlbGVtZW50Lmhhc1N0eWxlQ2xhc3Mo
J2ZvbycpKQotICAgIG9rKCFlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsKLQotICAgIGVs
ZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBiYXInOwotICAgIG9rKGVsZW1lbnQuaGFzU3R5bGVDbGFz
cygnZm9vJykpCi0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdiYXInKSk7Ci0gICAgb2so
IWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnYmF6JykpOwotCi0gICAgZWxlbWVudC5jbGFzc05hbWUg
PSAnZm9vZCc7Ci0gICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vJykpOwotICAgIG9r
KGVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vZCcpKTsKLX0pOwotCi10ZXN0KCdhZGRTdHlsZUNs
YXNzJywgNCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKLQotICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAg
ZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgZm9vJyk7Ci0KLSAgICBlbGVtZW50LmFkZFN0eWxl
Q2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZvbycpOwotCi0g
ICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCdiYXInKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNz
TmFtZSwgJyBmb28gYmFyJyk7Ci0KLSAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoJ2ZvbycpOwot
ICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZvbyBiYXInKTsKLX0pOwotCi10ZXN0KCdy
ZW1vdmVTdHlsZUNsYXNzJywgOCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcnKTsKLQotICAgIGVsZW1l
bnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCdmb28n
KTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJycpOwotCi0gICAgZWxlbWVudC5jbGFz
c05hbWUgPSAnIGZvbyc7Ci0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCdmb28nKTsKLSAg
ICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyAnKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1l
ID0gJ2ZvbyBmb28nOwotICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAg
ZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9
ICdmb28gYmFyJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVx
dWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGJhcicpOwotCi0gICAgZWxlbWVudC5jbGFzc05hbWUg
PSAnZm9vIGJhciBmb28gYmFyJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2Jhcicp
OwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vICBmb28gJyk7Ci0KLSAgICBlbGVt
ZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2Zv
bycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vZCcpOwotCi0gICAgZWxlbWVu
dC5jbGFzc05hbWUgPSAnZm9vJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2Zvb2Qn
KTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJ2ZvbycpOwotfSk7Ci0KLXRlc3QoJ3Rv
Z2dsZVN0eWxlQ2xhc3MnLCA1LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgZWxlbWVudC50b2dnbGVTdHlsZUNsYXNz
KCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyBmb28nKTsKLQotICAgIGVs
ZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05h
bWUsICcgJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdiYXInOwotICAgIGVsZW1lbnQu
dG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICdi
YXIgZm9vJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAgICBlbGVtZW50
LnRvZ2dsZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAn
Zm9vZCBmb28nKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgZWxlbWVu
dC50b2dnbGVTdHlsZUNsYXNzKCdmb29kJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUs
ICdmb28gZm9vZCcpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVmlld0Nv
bnRyb2xsZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1ZpZXdDb250cm9sbGVy
LmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9WaWV3Q29udHJvbGxlci5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw0NjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9u
IFZpZXdDb250cm9sbGVyKGJ1aWxkYm90KSB7Ci0gICAgdGhpcy5fYnVpbGRib3QgPSBidWlsZGJv
dDsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uSUQgPSAwOwotCi0gICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgIGFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsgc2VsZi5sb2FkZWQoKSB9
LCBmYWxzZSk7Ci0gICAgYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkg
eyBzZWxmLnBhcnNlSGFzaChsb2NhdGlvbi5oYXNoKSB9LCBmYWxzZSk7Ci19Ci0KLVZpZXdDb250
cm9sbGVyLnByb3RvdHlwZSA9IHsKLSAgICBsb2FkZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0
aGlzLl9oZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMScpOwotICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlcik7Ci0gICAgICAgIHRoaXMuX21haW5D
b250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX21haW5Db250ZW50RWxlbWVudCk7Ci0gICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZG9tRm9yQXV4aWxpYXJ5VUlFbGVt
ZW50cygpKTsKLQotICAgICAgICB0aGlzLnBhcnNlSGFzaChsb2NhdGlvbi5oYXNoKTsKLSAgICB9
LAotCi0gICAgcGFyc2VIYXNoOiBmdW5jdGlvbihoYXNoKSB7Ci0gICAgICAgICsrdGhpcy5fbmF2
aWdhdGlvbklEOwotCi0gICAgICAgIHZhciBtYXRjaCA9IC8jXC8oLiopLy5leGVjKGhhc2gpOwot
ICAgICAgICBpZiAobWF0Y2gpCi0gICAgICAgICAgICB0aGlzLl9kaXNwbGF5QnVpbGRlcih0aGlz
Ll9idWlsZGJvdC5idWlsZGVyTmFtZWQoZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzFdKSkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9kaXNwbGF5VGVzdGVycygpOwotICAgIH0s
Ci0KLSAgICBfZGlzcGxheUJ1aWxkZXI6IGZ1bmN0aW9uKGJ1aWxkZXIpIHsKLSAgICAgICAgdGhp
cy5fc2V0VGl0bGUoYnVpbGRlci5uYW1lKTsKLSAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVt
ZW50LnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIG5hdmlnYXRpb25JRCA9IHRo
aXMuX25hdmlnYXRpb25JRDsKLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIChu
ZXcgTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplcihidWlsZGVyKSkuc3RhcnQoZnVuY3Rpb24oZGF0
YSwgc3RpbGxGZXRjaGluZ0RhdGEpIHsKLSAgICAgICAgICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9u
SUQgIT09IG5hdmlnYXRpb25JRCkgewotICAgICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGhhcyBu
YXZpZ2F0ZWQgc29tZXdoZXJlIGVsc2UuIFN0b3AgbG9hZGluZyBkYXRhIGFib3V0IHRoaXMgdGVz
dGVyLgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAg
ICAgICAgbGlzdC5pZCA9ICdmYWlsdXJlLWhpc3RvcnknOwotCi0gICAgICAgICAgICB2YXIgYnVp
bGROYW1lcyA9IE9iamVjdC5rZXlzKGRhdGEuaGlzdG9yeSkKLSAgICAgICAgICAgIGJ1aWxkTmFt
ZXMuZm9yRWFjaChmdW5jdGlvbihidWlsZE5hbWUsIGJ1aWxkSW5kZXgsIGJ1aWxkTmFtZUFycmF5
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZhaWxpbmdUZXN0TmFtZXMgPSBPYmplY3Qua2V5cyhk
YXRhLmhpc3RvcnlbYnVpbGROYW1lXS50ZXN0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFmYWls
aW5nVGVzdE5hbWVzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAg
ICAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0KLSAgICAgICAgICAgICAgICB2
YXIgdGVzdExpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAgICAgICAg
ICAgIGl0ZW0uYXBwZW5kQ2hpbGQodGVzdExpc3QpOwotCi0gICAgICAgICAgICAgICAgdGVzdExp
c3QuY2xhc3NOYW1lID0gJ3Rlc3QtbGlzdCc7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgdGVz
dE5hbWUgaW4gZGF0YS5oaXN0b3J5W2J1aWxkTmFtZV0udGVzdHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHRlc3RJdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdEl0ZW0uYXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yRmFpbGVkVGVz
dChidWlsZGVyLCBidWlsZE5hbWUsIHRlc3ROYW1lLCBkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50
ZXN0c1t0ZXN0TmFtZV0pKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdExpc3QuYXBwZW5kQ2hp
bGQodGVzdEl0ZW0pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChk
YXRhLmhpc3RvcnlbYnVpbGROYW1lXS50b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHAuY2xhc3NOYW1lID0gJ2luZm8nOwotICAgICAgICAgICAgICAgICAgICBwLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdydW4td2Via2l0LXRlc3RzIGV4aXRlZCBl
YXJseSBkdWUgdG8gdG9vIG1hbnkgZmFpbHVyZXMvY3Jhc2hlcy90aW1lb3V0cycpKTsKLSAgICAg
ICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChwKTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICB2YXIgcGFzc2luZ0J1aWxkTmFtZTsKLSAgICAgICAgICAgICAgICBp
ZiAoYnVpbGRJbmRleCArIDEgPCBidWlsZE5hbWVBcnJheS5sZW5ndGgpCi0gICAgICAgICAgICAg
ICAgICAgIHBhc3NpbmdCdWlsZE5hbWUgPSBidWlsZE5hbWVBcnJheVtidWlsZEluZGV4ICsgMV07
Ci0KLSAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKHNlbGYuX2RvbUZvclJlZ3Jlc3Np
b25SYW5nZShidWlsZGVyLCBidWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0
TmFtZXMpKTsKLQotICAgICAgICAgICAgICAgIGlmIChwYXNzaW5nQnVpbGROYW1lIHx8ICFzdGls
bEZldGNoaW5nRGF0YSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgYnVnRm9ybSA9IG5ldyBG
YWlsaW5nVGVzdHNCdWdGb3JtKGJ1aWxkZXIsIGJ1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwg
ZmFpbGluZ1Rlc3ROYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQo
c2VsZi5fZG9tRm9yTmV3QW5kRXhpc3RpbmdCdWdzKGJ1aWxkZXIsIGZhaWxpbmdUZXN0TmFtZXMs
IGJ1Z0Zvcm0pKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICBzZWxmLl9tYWluQ29udGVudEVsZW1lbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAg
ICAgICAgIHNlbGYuX21haW5Db250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChsaXN0KTsKLSAgICAg
ICAgICAgIHNlbGYuX21haW5Db250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JQ
b3NzaWJseUZsYWt5VGVzdHMoYnVpbGRlciwgZGF0YS5wb3NzaWJseUZsYWt5LCBidWlsZE5hbWVz
KSk7Ci0KLSAgICAgICAgICAgIGlmICghc3RpbGxGZXRjaGluZ0RhdGEpCi0gICAgICAgICAgICAg
ICAgUGVyc2lzdGVudENhY2hlLnBydW5lKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2Rpc3BsYXlUZXN0ZXJzOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgdGhpcy5fc2V0VGl0bGUoJ1Rlc3RlcnMnKTsKLSAgICAgICAgdGhpcy5fbWFpbkNv
bnRlbnRFbGVtZW50LnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIGxpc3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOwotICAgICAgICB0aGlzLl9tYWluQ29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQobGlzdCk7Ci0KLSAgICAgICAgdmFyIGxhdGVzdEJ1aWxkSW5mb3Mg
PSBbXTsKLSAgICAgICAgdmFyIG5hdmlnYXRpb25JRCA9IHRoaXMuX25hdmlnYXRpb25JRDsKLQot
ICAgICAgICBmdW5jdGlvbiB1cGRhdGVMaXN0KCkgewotICAgICAgICAgICAgbGF0ZXN0QnVpbGRJ
bmZvcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEudGVzdGVyLm5hbWUubG9jYWxlQ29t
cGFyZShiLnRlc3Rlci5uYW1lKSB9KTsKLSAgICAgICAgICAgIGxpc3QucmVtb3ZlQWxsQ2hpbGRy
ZW4oKTsKLSAgICAgICAgICAgIGxhdGVzdEJ1aWxkSW5mb3MuZm9yRWFjaChmdW5jdGlvbihidWls
ZEluZm8pIHsKLSAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2EnKTsKLSAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSAnIy8nICsgYnVpbGRJbmZvLnRl
c3Rlci5uYW1lOwotICAgICAgICAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoYnVpbGRJbmZvLnRlc3Rlci5uYW1lKSk7Ci0KLSAgICAgICAgICAgICAgICB2
YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICAgICAg
aXRlbS5hcHBlbmRDaGlsZChsaW5rKTsKLSAgICAgICAgICAgICAgICBpZiAoYnVpbGRJbmZvLnRv
b01hbnlGYWlsdXJlcykKLSAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnICh0b28gbWFueSBmYWlsdXJlcy9jcmFzaGVzL3RpbWVvdXRz
KScpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAoJyArIGJ1aWxkSW5mby5mYWlsdXJl
Q291bnQgKyAnIGZhaWxpbmcgdGVzdCcgKyAoYnVpbGRJbmZvLmZhaWx1cmVDb3VudCA+IDEgPyAn
cycgOiAnJykgKyAnKScpKTsKLSAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGl0ZW0p
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
Ci0gICAgICAgIHRoaXMuX2J1aWxkYm90LmdldFRlc3RlcnMoZnVuY3Rpb24odGVzdGVycykgewot
ICAgICAgICAgICAgaWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlvbklEKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgaGFzIG5hdmlnYXRlZCBzb21ld2hlcmUgZWxzZS4K
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXN0
ZXJzLmZvckVhY2goZnVuY3Rpb24odGVzdGVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdGVyLmdl
dE1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcihmdW5jdGlvbihidWlsZE51bWJlcikgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fbmF2aWdhdGlvbklEICE9PSBuYXZpZ2F0aW9u
SUQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChidWlsZE51bWJlciA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIHRlc3Rlci5nZXROdW1iZXJPZkZhaWxpbmdUZXN0cyhidWlsZE51
bWJlciwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZmFpbHVyZUNvdW50IDw9IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0QnVpbGRJbmZvcy5wdXNoKHsg
dGVzdGVyOiB0ZXN0ZXIsIGZhaWx1cmVDb3VudDogZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVy
ZXM6IHRvb01hbnlGYWlsdXJlcyB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUxp
c3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQotICAgIF9kb21Gb3JSZWdyZXNzaW9u
UmFuZ2U6IGZ1bmN0aW9uKGJ1aWxkZXIsIGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5h
bWUsIGZhaWxpbmdUZXN0TmFtZXMpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQotICAgICAgICB2YXIgZGxJdGVtcyA9IFsKLSAgICAg
ICAgICAgIFtkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnRmFpbGVkJyksIHRoaXMuX2RvbUZvckJ1
aWxkTmFtZShidWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lKV0sCi0gICAgICAgIF07Ci0gICAgICAg
IGlmIChwYXNzaW5nQnVpbGROYW1lKQotICAgICAgICAgICAgZGxJdGVtcy5wdXNoKFtkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnUGFzc2VkJyksIHRoaXMuX2RvbUZvckJ1aWxkTmFtZShidWlsZGVy
LCBwYXNzaW5nQnVpbGROYW1lKV0pOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoY3JlYXRl
RGVmaW5pdGlvbkxpc3QoZGxJdGVtcykpOwotCi0gICAgICAgIGlmICghcGFzc2luZ0J1aWxkTmFt
ZSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIGZpcnN0U3VzcGVj
dFJldmlzaW9uID0gdGhpcy5fYnVpbGRib3QucGFyc2VCdWlsZE5hbWUocGFzc2luZ0J1aWxkTmFt
ZSkucmV2aXNpb24gKyAxOwotICAgICAgICB2YXIgbGFzdFN1c3BlY3RSZXZpc2lvbiA9IHRoaXMu
X2J1aWxkYm90LnBhcnNlQnVpbGROYW1lKGZhaWxpbmdCdWlsZE5hbWUpLnJldmlzaW9uOwotCi0g
ICAgICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikK
LSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIHN1c3BlY3RzQ29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmRDaGlsZChzdXNwZWN0c0NvbnRhaW5lcik7Ci0KLSAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdhJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChsaW5rKTsK
LQotICAgICAgICBsaW5rLmhyZWYgPSB0cmFjLmxvZ1VSTCgndHJ1bmsnLCBmaXJzdFN1c3BlY3RS
ZXZpc2lvbiwgbGFzdFN1c3BlY3RSZXZpc2lvbiwgdHJ1ZSk7Ci0gICAgICAgIGxpbmsuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1ZpZXcgcmVncmVzc2lvbiByYW5nZSBpbiBU
cmFjJykpOwotCi0gICAgICAgIHN1c3BlY3RzQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdTZWFyY2hpbmcgZm9yIHN1c3BlY3QgcmV2aXNpb25zXHUyMDI2Jykp
OwotCi0gICAgICAgIC8vIEZJWE1FOiBNYXliZSBzb21lIG9mIHRoaXMgY29kZSBzaG91bGQgZ28g
aW4gTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplciwgb3Igc29tZSBvdGhlciBjbGFzcz8KLSAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICB0cmFjLmNvbW1pdERhdGFGb3JSZXZpc2lvblJh
bmdlKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3VzcGVjdFJldmlzaW9uLCBm
dW5jdGlvbihjb21taXRzKSB7Ci0gICAgICAgICAgICB2YXIgZmFpbGluZ1Rlc3ROYW1lc1dpdGhv
dXRFeHRlbnNpb25zID0gZmFpbGluZ1Rlc3ROYW1lcy5tYXAocmVtb3ZlUGF0aEV4dGVuc2lvbik7
Ci0gICAgICAgICAgICB2YXIgc3VzcGVjdENvbW1pdHMgPSBjb21taXRzLmZpbHRlcihmdW5jdGlv
bihjb21taXQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbGluZ1Rlc3ROYW1lc1dpdGhv
dXRFeHRlbnNpb25zLnNvbWUoZnVuY3Rpb24odGVzdE5hbWUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbW1pdC5tZXNzYWdlLmNvbnRhaW5zKHRlc3ROYW1lKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBzdXNwZWN0c0NvbnRhaW5l
ci5yZW1vdmVBbGxDaGlsZHJlbigpOwotCi0gICAgICAgICAgICBpZiAoIXN1c3BlY3RDb21taXRz
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHZhciB0aXRs
ZSA9ICdTdXNwZWN0IHJldmlzaW9uJyArIChzdXNwZWN0Q29tbWl0cy5sZW5ndGggPiAxID8gJ3Mn
IDogJycpICsgJzonOwotICAgICAgICAgICAgc3VzcGVjdHNDb250YWluZXIuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKLQotICAgICAgICAgICAgdmFyIGxpc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOwotICAgICAgICAgICAgc3VzcGVjdHNDb250
YWluZXIuYXBwZW5kQ2hpbGQobGlzdCk7Ci0gICAgICAgICAgICBsaXN0LmNsYXNzTmFtZSA9ICdz
dXNwZWN0LXJldmlzaW9ucy1saXN0JzsKLQotICAgICAgICAgICAgZnVuY3Rpb24gY29tcGFyZUNv
bW1pdHMoYSwgYikgewotICAgICAgICAgICAgICAgIHJldHVybiBiLnJldmlzaW9uIC0gYS5yZXZp
c2lvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZHJlbihz
b3J0ZWQoc3VzcGVjdENvbW1pdHMsIGNvbXBhcmVDb21taXRzKS5tYXAoZnVuY3Rpb24oY29tbWl0
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCds
aScpOwotICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YScpOwotICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQobGluayk7Ci0KLSAgICAgICAg
ICAgICAgICBsaW5rLmhyZWYgPSB0cmFjLmNoYW5nZXNldFVSTChjb21taXQucmV2aXNpb24pOwot
ICAgICAgICAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
Y29tbWl0LnRpdGxlKSkKLQotICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwotICAgICAgICAg
ICAgfSkpOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0K
LSAgICBfZG9tRm9yQXV4aWxpYXJ5VUlFbGVtZW50czogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh
ciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Ci0gICAgICAgIGFzaWRl
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdTb21ldGhpbmcgbm90IHdvcmtp
bmc/IEhhdmUgYW4gaWRlYSB0byBpbXByb3ZlIHRoaXMgcGFnZT8gJykpOwotICAgICAgICB2YXIg
bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKLSAgICAgICAgYXNpZGUuYXBwZW5k
Q2hpbGQobGluayk7Ci0KLSAgICAgICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgnRmlsZSBhIGJ1ZyEnKSk7Ci0gICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB7
Ci0gICAgICAgICAgICBwcm9kdWN0OiAnV2ViS2l0JywKLSAgICAgICAgICAgIGNvbXBvbmVudDog
J1Rvb2xzIC8gVGVzdHMnLAotICAgICAgICAgICAgdmVyc2lvbjogJzUyOCsgKE5pZ2h0bHkgYnVp
bGQpJywKLSAgICAgICAgICAgIGJ1Z19maWxlX2xvYzogbG9jYXRpb24uaHJlZiwKLSAgICAgICAg
ICAgIGNjOiAnYXJvYmVuQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBzaG9ydF9kZXNjOiAnVGVz
dEZhaWx1cmVzIHBhZ2UgbmVlZHMgbW9yZSB1bmljb3JucyEnLAotICAgICAgICB9OwotICAgICAg
ICBsaW5rLmhyZWYgPSBhZGRRdWVyeVBhcmFtZXRlcnNUb1VSTChjb25maWcua0J1Z3ppbGxhVVJM
ICsgJy9lbnRlcl9idWcuY2dpJywgcXVlcnlQYXJhbWV0ZXJzKTsKLSAgICAgICAgbGluay50YXJn
ZXQgPSAnX2JsYW5rJzsKLQotICAgICAgICByZXR1cm4gYXNpZGU7Ci0gICAgfSwKLQotICAgIF9k
b21Gb3JCdWlsZE5hbWU6IGZ1bmN0aW9uKGJ1aWxkZXIsIGJ1aWxkTmFtZSkgewotICAgICAgICB2
YXIgcGFyc2VkID0gdGhpcy5fYnVpbGRib3QucGFyc2VCdWlsZE5hbWUoYnVpbGROYW1lKTsKLQot
ICAgICAgICB2YXIgc291cmNlTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKLSAg
ICAgICAgc291cmNlTGluay5ocmVmID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LycgKyBwYXJzZWQucmV2aXNpb247Ci0gICAgICAgIHNvdXJjZUxpbmsuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3InICsgcGFyc2VkLnJldmlzaW9uKSk7Ci0KLSAgICAgICAg
dmFyIGJ1aWxkTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKLSAgICAgICAgYnVp
bGRMaW5rLmhyZWYgPSBidWlsZGVyLmJ1aWxkVVJMKHBhcnNlZC5idWlsZE51bWJlcik7Ci0gICAg
ICAgIGJ1aWxkTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJzZWQu
YnVpbGROdW1iZXIpKTsKLQotICAgICAgICB2YXIgcmVzdWx0c0xpbmsgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhJyk7Ci0gICAgICAgIHJlc3VsdHNMaW5rLmhyZWYgPSBidWlsZGVyLnJlc3Vs
dHNQYWdlVVJMKGJ1aWxkTmFtZSk7Ci0gICAgICAgIHJlc3VsdHNMaW5rLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdyZXN1bHRzLmh0bWwnKSk7Ci0KLSAgICAgICAgdmFyIHJl
c3VsdCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKHNvdXJjZUxpbmspOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAoJykpOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQo
YnVpbGRMaW5rKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCcpICgnKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChyZXN1bHRzTGluayk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKScp
KTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfZG9tRm9yRmFpbGVk
VGVzdDogZnVuY3Rpb24oYnVpbGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
OwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVz
dE5hbWUgKyAnOiAnKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCh0aGlzLl9kb21Gb3JG
YWlsdXJlRGlhZ25vc2lzKGJ1aWxkZXIsIGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQp
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2RvbUZvckZhaWx1cmVE
aWFnbm9zaXM6IGZ1bmN0aW9uKGJ1aWxkZXIsIGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1
bHQpIHsKLSAgICAgICAgdmFyIGRpYWdub3N0aWNJbmZvID0gYnVpbGRlci5mYWlsdXJlRGlhZ25v
c2lzVGV4dEFuZFVSTChidWlsZE5hbWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0KTsKLSAgICAgICAg
aWYgKCFkaWFnbm9zdGljSW5mbykKLSAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXN0UmVzdWx0LmZhaWx1cmVUeXBlKTsKLQotICAgICAgICB2YXIgdGV4dEFuZENy
YXNoaW5nU3ltYm9sID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAg
ICB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoZGlhZ25vc3RpY0luZm8udGV4dCkpOwotICAgICAgICBpZiAodGVzdFJlc3VsdC5jcmFzaGlu
Z1N5bWJvbCkgewotICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdjb2RlJyk7Ci0gICAgICAgICAgICBjb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHRlc3RSZXN1bHQuY3Jhc2hpbmdTeW1ib2wpKTsKLSAgICAgICAgICAgIHRleHRBbmRD
cmFzaGluZ1N5bWJvbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICgnKSk7
Ci0gICAgICAgICAgICB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoY29kZSk7Ci0g
ICAgICAgICAgICB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJyknKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoISgndXJsJyBpbiBk
aWFnbm9zdGljSW5mbykpCi0gICAgICAgICAgICByZXR1cm4gdGV4dEFuZENyYXNoaW5nU3ltYm9s
OwotCi0gICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwotICAg
ICAgICBsaW5rLmhyZWYgPSBkaWFnbm9zdGljSW5mby51cmw7Ci0gICAgICAgIGxpbmsuYXBwZW5k
Q2hpbGQodGV4dEFuZENyYXNoaW5nU3ltYm9sKTsKLSAgICAgICAgcmV0dXJuIGxpbms7Ci0gICAg
fSwKLQotICAgIF9kb21Gb3JOZXdBbmRFeGlzdGluZ0J1Z3M6IGZ1bmN0aW9uKHRlc3RlciwgZmFp
bGluZ1Rlc3RzLCBidWdGb3JtKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7Ci0KLSAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGNvbnRhaW5l
cik7Ci0KLSAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdleGlzdGluZy1hbmQtbmV3LWJ1
Z3MnOwotCi0gICAgICAgIHZhciBidWdzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChidWdzQ29udGFpbmVyKTsK
LQotICAgICAgICBidWdzQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdTZWFyY2hpbmcgZm9yIGJ1Z3MgcmVsYXRlZCB0byAnICsgKGZhaWxpbmdUZXN0cy5sZW5n
dGggPiAxID8gJ3RoZXNlIHRlc3RzJyA6ICd0aGlzIHRlc3QnKSArICdcdTIwMjYnKSk7Ci0KLSAg
ICAgICAgYnVnemlsbGEucXVpY2tTZWFyY2goJ0FMTCAnICsgZmFpbGluZ1Rlc3RzLmpvaW4oJ3wn
KSwgZnVuY3Rpb24oYnVncykgewotICAgICAgICAgICAgaWYgKCFidWdzLmxlbmd0aCkgewotICAg
ICAgICAgICAgICAgIGJ1Z3NDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChidWdzQ29u
dGFpbmVyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHdoaWxlIChidWdzQ29udGFpbmVyLmZpcnN0Q2hpbGQpCi0gICAgICAgICAgICAgICAg
YnVnc0NvbnRhaW5lci5yZW1vdmVDaGlsZChidWdzQ29udGFpbmVyLmZpcnN0Q2hpbGQpOwotCi0g
ICAgICAgICAgICBidWdzQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdFeGlzdGluZyBidWdzIHJlbGF0ZWQgdG8gJyArIChmYWlsaW5nVGVzdHMubGVuZ3RoID4g
MSA/ICd0aGVzZSB0ZXN0cycgOiAndGhpcyB0ZXN0JykgKyAnOicpKTsKLQotICAgICAgICAgICAg
dmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOwotICAgICAgICAgICAgYnVn
c0NvbnRhaW5lci5hcHBlbmRDaGlsZChsaXN0KTsKLQotICAgICAgICAgICAgbGlzdC5jbGFzc05h
bWUgPSAnZXhpc3RpbmctYnVncy1saXN0JzsKLQotICAgICAgICAgICAgZnVuY3Rpb24gYnVnVG9M
aXN0SXRlbShidWcpIHsKLSAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsKLSAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBidWcudXJsOwotICAg
ICAgICAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYnVn
LnRpdGxlKSk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChsaW5rKTsKLQot
ICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB2YXIgb3BlbkJ1Z3MgPSBidWdzLmZpbHRlcihmdW5jdGlvbihidWcpIHsgcmV0dXJuIGJ1Z3pp
bGxhLmlzT3BlblN0YXR1cyhidWcuc3RhdHVzKSB9KTsKLSAgICAgICAgICAgIHZhciBjbG9zZWRC
dWdzID0gYnVncy5maWx0ZXIoZnVuY3Rpb24oYnVnKSB7IHJldHVybiAhYnVnemlsbGEuaXNPcGVu
U3RhdHVzKGJ1Zy5zdGF0dXMpIH0pOwotCi0gICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkcmVu
KG9wZW5CdWdzLm1hcChidWdUb0xpc3RJdGVtKSk7Ci0KLSAgICAgICAgICAgIGlmICghY2xvc2Vk
QnVncy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB2YXIg
aXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICBsaXN0LmFw
cGVuZENoaWxkKGl0ZW0pOwotCi0gICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdDbG9zZWQgYnVnczonKSk7Ci0KLSAgICAgICAgICAgIHZhciBjbG9z
ZWRMaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsKLSAgICAgICAgICAgIGl0ZW0u
YXBwZW5kQ2hpbGQoY2xvc2VkTGlzdCk7Ci0KLSAgICAgICAgICAgIGNsb3NlZExpc3QuYXBwZW5k
Q2hpbGRyZW4oY2xvc2VkQnVncy5tYXAoYnVnVG9MaXN0SXRlbSkpOwotICAgICAgICB9KTsKLQot
ICAgICAgICB2YXIgZm9ybSA9IGJ1Z0Zvcm0uZG9tRWxlbWVudCgpOwotICAgICAgICByZXN1bHQu
YXBwZW5kQ2hpbGQoZm9ybSk7Ci0KLSAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdhJyk7Ci0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChsaW5rKTsKLQotICAg
ICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHsgZm9y
bS5zdWJtaXQoKTsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfSk7Ci0gICAgICAgIGxpbmsuaHJl
ZiA9ICcjJzsKLSAgICAgICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnRmlsZSBidWcgZm9yICcgKyAoZmFpbGluZ1Rlc3RzLmxlbmd0aCA+IDEgPyAndGhlc2UgZmFp
bHVyZXMnIDogJ3RoaXMgZmFpbHVyZScpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9LAotCi0gICAgX2RvbUZvclBvc3NpYmx5Rmxha3lUZXN0czogZnVuY3Rpb24oYnVpbGRlciwg
cG9zc2libHlGbGFreVRlc3REYXRhLCBhbGxCdWlsZHMpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgdmFyIGZsYWt5VGVz
dHMgPSBPYmplY3Qua2V5cyhwb3NzaWJseUZsYWt5VGVzdERhdGEpOwotICAgICAgICBpZiAoIWZs
YWt5VGVzdHMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICB2
YXIgZmxha3lIZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMicpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kQ2hpbGQoZmxha3lIZWFkZXIpOwotICAgICAgICBmbGFreUhlYWRlci5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnUG9zc2libHkgRmxha3kgVGVzdHMnKSk7
Ci0KLSAgICAgICAgdmFyIGZsYWt5TGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChmbGFreUxpc3QpOwotCi0gICAgICAgIGZsYWt5
TGlzdC5pZCA9ICdwb3NzaWJseS1mbGFreS10ZXN0cyc7Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwotICAgICAgICBmbGFreUxpc3QuYXBwZW5kQ2hpbGRyZW4oc29ydGVkKGZsYWt5VGVzdHMp
Lm1hcChmdW5jdGlvbih0ZXN0TmFtZSkgewotICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdsaScpOwotCi0gICAgICAgICAgICB2YXIgZGlzY2xvc3VyZVRyaWFu
Z2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwotICAgICAgICAgICAgaXRlbS5h
cHBlbmRDaGlsZChkaXNjbG9zdXJlVHJpYW5nbGUpOwotCi0gICAgICAgICAgICBkaXNjbG9zdXJl
VHJpYW5nbGUuY2xhc3NOYW1lID0gJ2Rpc2Nsb3N1cmUtdHJpYW5nbGUnOwotICAgICAgICAgICAg
Y29uc3QgYmxhY2tSaWdodFBvaW50aW5nU21hbGxUcmlhbmdsZSA9ICdcdTI1YjgnOwotICAgICAg
ICAgICAgZGlzY2xvc3VyZVRyaWFuZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKGJsYWNrUmlnaHRQb2ludGluZ1NtYWxsVHJpYW5nbGUpKTsKLQotICAgICAgICAgICAgdmFy
IGZhaWx1cmVzID0gcG9zc2libHlGbGFreVRlc3REYXRhW3Rlc3ROYW1lXTsKLQotICAgICAgICAg
ICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0TmFtZSArICcg
KGZhaWxlZCAnICsgZmFpbHVyZXMubGVuZ3RoICsgJyBvdXQgb2YgJyArIGFsbEJ1aWxkcy5sZW5n
dGggKyAnIHRpbWVzKScpKTsKLQotICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChjb250
YWluZXIpOwotCi0gICAgICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ2V4cGFuZGFibGUn
OwotCi0gICAgICAgICAgICBkaXNjbG9zdXJlVHJpYW5nbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xp
Y2snLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpdGVtLnRvZ2dsZVN0eWxlQ2xhc3Mo
J2V4cGFuZGVkJyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVtLmhhc1N0eWxlQ2xhc3MoJ2V4
cGFuZGVkJykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAg
IGlmICghY29udGFpbmVyLmZpcnN0Q2hpbGQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZh
aWx1cmVMaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2wnKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGZhaWx1cmVMaXN0KTsKLQotICAgICAgICAgICAg
ICAgICAgICBmYWlsdXJlTGlzdC5jbGFzc05hbWUgPSAnZmxha2luZXNzLWV4YW1wbGVzLWxpc3Qn
OwotCi0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVMaXN0LmFwcGVuZENoaWxkcmVuKGZhaWx1
cmVzLm1hcChmdW5jdGlvbihoaXN0b3J5SXRlbSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JCdWlsZE5hbWUoYnVpbGRlciwg
aGlzdG9yeUl0ZW0uYnVpbGQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJzogJykpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JGYWlsdXJlRGlhZ25vc2lzKGJ1aWxk
ZXIsIGhpc3RvcnlJdGVtLmJ1aWxkLCB0ZXN0TmFtZSwgaGlzdG9yeUl0ZW0ucmVzdWx0KSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKLSAgICAgICAgICAgICAgICAgICAg
fSkpOwotCi0gICAgICAgICAgICAgICAgICAgIHZhciBmYWlsaW5nQnVpbGROYW1lcyA9IGZhaWx1
cmVzLm1hcChmdW5jdGlvbihoaXN0b3J5SXRlbSkgeyByZXR1cm4gaGlzdG9yeUl0ZW0uYnVpbGQg
fSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBidWdGb3JtID0gbmV3IEZsYWt5VGVzdEJ1Z0Zv
cm0oYnVpbGRlciwgZmFpbGluZ0J1aWxkTmFtZXMsIHRlc3ROYW1lLCBhbGxCdWlsZHMubGFzdCgp
LCBhbGxCdWlsZHNbMF0sIGFsbEJ1aWxkcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBj
b250YWluZXIuYXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yTmV3QW5kRXhpc3RpbmdCdWdzKGJ1aWxk
ZXIsIFt0ZXN0TmFtZV0sIGJ1Z0Zvcm0pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgIH0pKTsKLQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfc2V0VGl0bGU6IGZ1bmN0aW9uKHRpdGxl
KSB7Ci0gICAgICAgIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7Ci0gICAgICAgIHRoaXMuX2hlYWRl
ci50ZXh0Q29udGVudCA9IHRpdGxlOwotICAgIH0sCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L1dlYktpdEJ1Z3ppbGxhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9XZWJLaXRC
dWd6aWxsYS5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvV2ViS2l0QnVn
emlsbGEuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWNv
bnN0IFdlYktpdEJ1Z3ppbGxhID0gewotICAgIENvbXBvbmVudDogewotICAgICAgICBUb29sc1Rl
c3RzOiAnVG9vbHMgLyBUZXN0cycsCi0gICAgfSwKLQotICAgIEtleXdvcmQ6IHsKLSAgICAgICAg
TGF5b3V0VGVzdEZhaWx1cmU6ICdMYXlvdXRUZXN0RmFpbHVyZScsCi0gICAgICAgIE1ha2luZ0Jv
dHNSZWQ6ICdNYWtpbmdCb3RzUmVkJywKLSAgICAgICAgUmVncmVzc2lvbjogJ1JlZ3Jlc3Npb24n
LAotICAgIH0sCi0KLSAgICBPcGVyYXRpbmdTeXN0ZW06IHsKLSAgICAgICAgTGVvcGFyZDogJ01h
YyBPUyBYIDEwLjUnLAotICAgICAgICBTbm93TGVvcGFyZDogJ01hYyBPUyBYIDEwLjYnLAotICAg
ICAgICBXaW5kb3dzNzogJ1dpbmRvd3MgNycsCi0gICAgICAgIFdpbmRvd3NYUDogJ1dpbmRvd3Mg
WFAnLAotICAgIH0sCi0KLSAgICBQbGF0Zm9ybTogewotICAgICAgICBNYWNpbnRvc2g6ICdNYWNp
bnRvc2gnLAotICAgICAgICBQQzogJ1BDJywKLSAgICB9LAotCi0gICAgUHJvZHVjdDogewotICAg
ICAgICBXZWJLaXQ6ICdXZWJLaXQnLAotICAgIH0sCi0KLSAgICBWZXJzaW9uOiB7Ci0gICAgICAg
IE5pZ2h0bHk6ICc1MjgrIChOaWdodGx5IGJ1aWxkKScsCi0gICAgfSwKLX07CkluZGV4OiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvV2ViS2l0QnVpbGRib3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL1dlYktpdEJ1aWxkYm90LmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9XZWJLaXRCdWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotZnVuY3Rpb24gV2ViS2l0QnVpbGRib3QoKSB7Ci0gICAgQnVpbGRib3QuY2FsbCh0
aGlzLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJyk7Ci19Ci0KLVdlYktpdEJ1aWxkYm90LnBy
b3RvdHlwZSA9IHsKLSAgICBwYXJzZUJ1aWxkTmFtZTogZnVuY3Rpb24oYnVpbGROYW1lKSB7Ci0g
ICAgICAgIHZhciBtYXRjaCA9IC9ecihcZCspIFwoKFxkKylcKSQvLmV4ZWMoYnVpbGROYW1lKTsK
LSAgICAgICAgaWYgKCFtYXRjaCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgcmV2aXNpb246IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksCi0g
ICAgICAgICAgICBidWlsZE51bWJlcjogcGFyc2VJbnQobWF0Y2hbMl0sIDEwKSwKLSAgICAgICAg
fTsKLSAgICB9LAotfTsKLQotV2ViS2l0QnVpbGRib3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IEJ1
aWxkYm90LnByb3RvdHlwZTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlLmpzCShyZXZpc2lvbiA5MzI1NikKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9iYXNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLXZhciBiYXNlID0gYmFzZSB8fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLWJhc2Uu
YXNJbnRlZ2VyID0gZnVuY3Rpb24oc3RyaW5nT3JJbnRlZ2VyKQotewotICAgIGlmICh0eXBlb2Yg
c3RyaW5nT3JJbnRlZ2VyID09ICdzdHJpbmcnKQotICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3Ry
aW5nT3JJbnRlZ2VyKTsKLSAgICByZXR1cm4gc3RyaW5nT3JJbnRlZ2VyOwotfTsKLQotYmFzZS5l
bmRzV2l0aCA9IGZ1bmN0aW9uKHN0cmluZywgc3VmZml4KQotewotICAgIGlmIChzdWZmaXgubGVu
Z3RoID4gc3RyaW5nLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHZhciBleHBl
Y3RlZEluZGV4ID0gc3RyaW5nLmxlbmd0aCAtIHN1ZmZpeC5sZW5ndGg7Ci0gICAgcmV0dXJuIHN0
cmluZy5sYXN0SW5kZXhPZihzdWZmaXgpID09IGV4cGVjdGVkSW5kZXg7Ci19OwotCi1iYXNlLnJl
cGVhdFN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZywgY291bnQpCi17Ci0gICAgcmV0dXJuIG5ldyBB
cnJheShjb3VudCArIDEpLmpvaW4oc3RyaW5nKTsKLX07Ci0KLWJhc2Uuam9pblBhdGggPSBmdW5j
dGlvbihwYXJlbnQsIGNoaWxkKQotewotICAgIGlmIChwYXJlbnQubGVuZ3RoID09IDApCi0gICAg
ICAgIHJldHVybiBjaGlsZDsKLSAgICByZXR1cm4gcGFyZW50ICsgJy8nICsgY2hpbGQ7Ci19Owot
Ci1iYXNlLnRyaW1FeHRlbnNpb24gPSBmdW5jdGlvbih1cmwpCi17Ci0gICAgdmFyIGluZGV4ID0g
dXJsLmxhc3RJbmRleE9mKCcuJyk7Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1
cm4gdXJsOwotICAgIHJldHVybiB1cmwuc3Vic3RyKDAsIGluZGV4KTsKLX0KLQotYmFzZS51bmlx
dWlmeUFycmF5ID0gZnVuY3Rpb24oYXJyYXkpCi17Ci0gICAgdmFyIHNlZW4gPSB7fTsKLSAgICB2
YXIgcmVzdWx0ID0gW107Ci0gICAgJC5lYWNoKGFycmF5LCBmdW5jdGlvbihpbmRleCwgdmFsdWUp
IHsKLSAgICAgICAgaWYgKHNlZW5bdmFsdWVdKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBzZWVuW3ZhbHVlXSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTsKLSAgICB9
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfTsKLQotYmFzZS5maWx0ZXJUcmVlID0gZnVuY3Rpb24o
dHJlZSwgaXNMZWFmLCBwcmVkaWNhdGUpCi17Ci0gICAgdmFyIGZpbHRlcmVkVHJlZSA9IHt9Owot
Ci0gICAgZnVuY3Rpb24gd2Fsa1N1YnRyZWUoc3VidHJlZSwgZGlyZWN0b3J5KQotICAgIHsKLSAg
ICAgICAgZm9yICh2YXIgY2hpbGROYW1lIGluIHN1YnRyZWUpIHsKLSAgICAgICAgICAgIHZhciBj
aGlsZCA9IHN1YnRyZWVbY2hpbGROYW1lXTsKLSAgICAgICAgICAgIHZhciBjaGlsZFBhdGggPSBi
YXNlLmpvaW5QYXRoKGRpcmVjdG9yeSwgY2hpbGROYW1lKTsKLSAgICAgICAgICAgIGlmIChpc0xl
YWYoY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShjaGlsZCkpCi0gICAg
ICAgICAgICAgICAgICAgIGZpbHRlcmVkVHJlZVtjaGlsZFBhdGhdID0gY2hpbGQ7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3YWxrU3VidHJl
ZShjaGlsZCwgY2hpbGRQYXRoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHdhbGtTdWJ0cmVl
KHRyZWUsICcnKTsKLSAgICByZXR1cm4gZmlsdGVyZWRUcmVlOwotfTsKLQotYmFzZS5SZXF1ZXN0
VHJhY2tlciA9IGZ1bmN0aW9uKHJlcXVlc3RzSW5GbGlnaHQsIGNhbGxiYWNrLCBhcmdzKQotewot
ICAgIHRoaXMuX3JlcXVlc3RzSW5GbGlnaHQgPSByZXF1ZXN0c0luRmxpZ2h0OwotICAgIHRoaXMu
X2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgdGhpcy5fYXJncyA9IGFyZ3MgfHwgW107Ci0gICAg
dGhpcy5fdHJ5Q2FsbGJhY2soKTsKLX07Ci0KLWJhc2UuUmVxdWVzdFRyYWNrZXIucHJvdG90eXBl
ID0gewotICAgIF90cnlDYWxsYmFjazogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9yZXF1ZXN0c0luRmxpZ2h0ICYmIHRoaXMuX2NhbGxiYWNrKQotICAgICAgICAgICAgdGhp
cy5fY2FsbGJhY2suYXBwbHkobnVsbCwgdGhpcy5fYXJncyk7Ci0gICAgfSwKLSAgICByZXF1ZXN0
Q29tcGxldGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC0tdGhpcy5fcmVxdWVzdHNJbkZs
aWdodDsKLSAgICAgICAgdGhpcy5fdHJ5Q2FsbGJhY2soKTsKLSAgICB9Ci19Ci0KLWJhc2UuY2Fs
bEluUGFyYWxsZWwgPSBmdW5jdGlvbihmdW5jdGlvbkxpc3QsIGNhbGxiYWNrKQotewotICAgIHZh
ciByZXF1ZXN0VHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKGZ1bmN0aW9uTGlzdC5s
ZW5ndGgsIGNhbGxiYWNrKTsKLQotICAgICQuZWFjaChmdW5jdGlvbkxpc3QsIGZ1bmN0aW9uKGlu
ZGV4LCBmdW5jKSB7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXF1
ZXN0VHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Owot
Ci1iYXNlLmNhbGxJblNlcXVlbmNlID0gZnVuY3Rpb24oZnVuYywgYXJndW1lbnRMaXN0LCBjYWxs
YmFjaykKLXsKLSAgICB2YXIgbmV4dEluZGV4ID0gMDsKLQotICAgIGZ1bmN0aW9uIGNhbGxOZXh0
KCkKLSAgICB7Ci0gICAgICAgIGlmIChuZXh0SW5kZXggPj0gYXJndW1lbnRMaXN0Lmxlbmd0aCkg
ewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmMoYXJndW1lbnRMaXN0W25leHRJbmRleCsrXSwgY2FsbE5leHQpOwot
ICAgIH0KLQotICAgIGNhbGxOZXh0KCk7Ci19OwotCi1iYXNlLkNhbGxiYWNrSXRlcmF0b3IgPSBm
dW5jdGlvbihjYWxsYmFjaywgbGlzdE9mQXJndW1lbnRBcnJheXMpCi17Ci0gICAgdGhpcy5fY2Fs
bGJhY2sgPSBjYWxsYmFjazsKLSAgICB0aGlzLl9uZXh0SW5kZXggPSAwOwotICAgIHRoaXMuX2xp
c3RPZkFyZ3VtZW50QXJyYXlzID0gbGlzdE9mQXJndW1lbnRBcnJheXM7Ci19OwotCi1iYXNlLkNh
bGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmhhc05leHQgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0
dXJuIHRoaXMuX25leHRJbmRleCA8IHRoaXMuX2xpc3RPZkFyZ3VtZW50QXJyYXlzLmxlbmd0aDsK
LX07Ci0KLWJhc2UuQ2FsbGJhY2tJdGVyYXRvci5wcm90b3R5cGUuaGFzUHJldmlvdXMgPSBmdW5j
dGlvbigpCi17Ci0gICAgcmV0dXJuIHRoaXMuX25leHRJbmRleCAtIDIgPj0gMDsKLX07Ci0KLWJh
c2UuQ2FsbGJhY2tJdGVyYXRvci5wcm90b3R5cGUuY2FsbE5leHQgPSBmdW5jdGlvbigpCi17Ci0g
ICAgaWYgKCF0aGlzLmhhc05leHQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhciBhcmdzID0g
dGhpcy5fbGlzdE9mQXJndW1lbnRBcnJheXNbdGhpcy5fbmV4dEluZGV4XTsKLSAgICB0aGlzLl9u
ZXh0SW5kZXgrKzsKLSAgICB0aGlzLl9jYWxsYmFjay5hcHBseShudWxsLCBhcmdzKTsKLX07Ci0K
LWJhc2UuQ2FsbGJhY2tJdGVyYXRvci5wcm90b3R5cGUuY2FsbFByZXZpb3VzID0gZnVuY3Rpb24o
KQotewotICAgIGlmICghdGhpcy5oYXNQcmV2aW91cygpKQotICAgICAgICByZXR1cm47Ci0gICAg
dmFyIGFyZ3MgPSB0aGlzLl9saXN0T2ZBcmd1bWVudEFycmF5c1t0aGlzLl9uZXh0SW5kZXggLSAy
XTsKLSAgICB0aGlzLl9uZXh0SW5kZXgtLTsKLSAgICB0aGlzLl9jYWxsYmFjay5hcHBseShudWxs
LCBhcmdzKTsKLX07Ci0KLWJhc2UuQXN5bmNocm9ub3VzQ2FjaGUgPSBmdW5jdGlvbihmZXRjaCkK
LXsKLSAgICB0aGlzLl9mZXRjaCA9IGZldGNoOwotICAgIHRoaXMuX2RhdGFDYWNoZSA9IHt9Owot
ICAgIHRoaXMuX2NhbGxiYWNrQ2FjaGUgPSB7fTsKLX07Ci0KLWJhc2UuQXN5bmNocm9ub3VzQ2Fj
aGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHNl
bGYgPSB0aGlzOwotCi0gICAgaWYgKHNlbGYuX2RhdGFDYWNoZVtrZXldKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBDb25zaWRlciBhbHdheXMgY2FsbGluZyBjYWxsYmFjayBhc3luY2hyb25vdXNseS4K
LSAgICAgICAgY2FsbGJhY2soc2VsZi5fZGF0YUNhY2hlW2tleV0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGtleSBpbiBzZWxmLl9jYWxsYmFja0NhY2hlKSB7Ci0gICAgICAg
IHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XS5wdXNoKGNhbGxiYWNrKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XSA9IFtjYWxsYmFja107Ci0K
LSAgICBzZWxmLl9mZXRjaC5jYWxsKG51bGwsIGtleSwgZnVuY3Rpb24oZGF0YSkgewotICAgICAg
ICBzZWxmLl9kYXRhQ2FjaGVba2V5XSA9IGRhdGE7Ci0KLSAgICAgICAgdmFyIGNhbGxiYWNrTGlz
dCA9IHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XTsKLSAgICAgICAgZGVsZXRlIHNlbGYuX2NhbGxi
YWNrQ2FjaGVba2V5XTsKLQotICAgICAgICBjYWxsYmFja0xpc3QuZm9yRWFjaChmdW5jdGlvbihj
YWNoZWRDYWxsYmFjaykgewotICAgICAgICAgICAgY2FjaGVkQ2FsbGJhY2soZGF0YSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfTsKLQotLyoKLSAgICBNYWludGFpbnMgYSBkaWN0aW9uYXJ5IG9m
IGl0ZW1zLCB0cmFja2luZyB0aGVpciB1cGRhdGVzIGFuZCByZW1vdmluZyBpdGVtcyB0aGF0IGhh
dmVuJ3QgYmVlbiB1cGRhdGVkLgotICAgIEFuICJ1cGRhdGUiIGlzIGEgY2FsbCB0byB0aGUgInVw
ZGF0ZSIgbWV0aG9kLgotICAgIFRvIHJlbW92ZSBzdGFsZSBpdGVtcywgY2FsbCB0aGUgInJlbW92
ZSIgbWV0aG9kLiBJdCB3aWxsIHJlbW92ZSBhbGwKLSAgICBpdGVtcyB0aGF0IGhhdmUgbm90IGJl
ZW4gYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBsYXN0IGNhbGwgb2YgInJlbW92ZSIuCi0qLwotYmFz
ZS5VcGRhdGVUcmFja2VyID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2l0ZW1zID0ge307Ci0g
ICAgdGhpcy5fdXBkYXRlZCA9IHt9OwotfQotCi1iYXNlLlVwZGF0ZVRyYWNrZXIucHJvdG90eXBl
ID0gewotICAgIC8qCi0gICAgICAgIFVwZGF0ZSBhbiB7a2V5fS97aXRlbX0gcGFpci4gWW91IGNh
biBtYWtlIHRoZSBkaWN0aW9uYXJ5IGFjdCBhcyBhIHNldCBhbmQKLSAgICAgICAgc2tpcCB0aGUg
e2l0ZW19LCBpbiB3aGljaCBjYXNlIHRoZSB7a2V5fSBpcyBhbHNvIHRoZSB7aXRlbX0uCi0gICAg
Ki8KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGtleSwgb2JqZWN0KQotICAgIHsKLSAgICAgICAgb2Jq
ZWN0ID0gb2JqZWN0IHx8IGtleTsKLSAgICAgICAgdGhpcy5faXRlbXNba2V5XSA9IG9iamVjdDsK
LSAgICAgICAgdGhpcy5fdXBkYXRlZFtrZXldID0gMTsKLSAgICB9LAotICAgIGV4aXN0czogZnVu
Y3Rpb24oa2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5KTsKLSAgICB9
LAotICAgIGdldDogZnVuY3Rpb24oa2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2l0
ZW1zW2tleV07Ci0gICAgfSwKLSAgICAvKgotICAgICAgICBDYWxsYmFjayBwYXJhbWV0ZXJzIGFy
ZToKLSAgICAgICAgLSBpdGVtCi0gICAgICAgIC0ga2V5Ci0gICAgICAgIC0gdXBkYXRlZCwgd2hp
Y2ggaXMgdHJ1ZSBpZiB0aGUgaXRlbSB3YXMgdXBkYXRlZCBhZnRlciBsYXN0IHB1cmdlKCkgY2Fs
bC4KLSAgICAqLwotICAgIGZvckVhY2g6IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzT2JqZWN0KQot
ICAgIHsKLSAgICAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBPYmplY3Qua2V5cyh0aGlzLl9pdGVtcykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAg
ICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNba2V5XTsKLSAgICAgICAgICAgIGNhbGxi
YWNrLmNhbGwodGhpc09iamVjdCB8fCBpdGVtLCBpdGVtLCBrZXksICEhdGhpcy5fdXBkYXRlZFtr
ZXldKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKLSAgICBwdXJnZTogZnVuY3Rpb24ocmVt
b3ZlQ2FsbGJhY2ssIHRoaXNPYmplY3QpIHsKLSAgICAgICAgcmVtb3ZlQ2FsbGJhY2sgPSByZW1v
dmVDYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwotICAgICAgICB0aGlzLmZvckVhY2goZnVuY3Rp
b24oaXRlbSwga2V5LCB1cGRhdGVkKSB7Ci0gICAgICAgICAgICBpZiAodXBkYXRlZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZW1vdmVDYWxsYmFjay5jYWxsKHRoaXNP
YmplY3QgfHwgaXRlbSwgaXRlbSk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5faXRlbXNba2V5
XTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWQgPSB7fTsKLSAgICB9
Ci19Ci0KLS8vIEJhc2VkIG9uIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUv
dHJ1bmsvc3JjL2Nocm9tZS9icm93c2VyL3Jlc291cmNlcy9zaGFyZWQvanMvY3IvdWkuanMKLWJh
c2UuZXh0ZW5kcyA9IGZ1bmN0aW9uKGJhc2UsIHByb3RvdHlwZSkKLXsKLSAgICB2YXIgZXh0ZW5k
ZWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0eXBlb2YgYmFzZSA9PSAn
c3RyaW5nJyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYmFzZSkgOiBiYXNlLmNhbGwodGhpcyk7
Ci0gICAgICAgIGV4dGVuZGVkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBlbGVtZW50Ll9fcHJvdG9f
XzsKLSAgICAgICAgZWxlbWVudC5fX3Byb3RvX18gPSBleHRlbmRlZC5wcm90b3R5cGU7Ci0gICAg
ICAgIGVsZW1lbnQuaW5pdCAmJiBlbGVtZW50LmluaXQuYXBwbHkoZWxlbWVudCwgYXJndW1lbnRz
KTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgZXh0ZW5kZWQucHJvdG90
eXBlID0gcHJvdG90eXBlOwotICAgIHJldHVybiBleHRlbmRlZDsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlUmVsYXRpdmVUaW1lRGVzY3JpcHRvcihkaXZpc29ySW5NaWxsaXNlY29uZHMsIHVuaXQpCi17
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKGRlbHRhKSB7Ci0gICAgICAgIHZhciBkZWx0YUluVW5pdHMg
PSBkZWx0YSAvIGRpdmlzb3JJbk1pbGxpc2Vjb25kczsKLSAgICAgICAgcmV0dXJuIChkZWx0YUlu
VW5pdHMpLnRvRml4ZWQoMCkgKyAnICcgKyB1bml0ICsgKGRlbHRhSW5Vbml0cyA+PSAyID8gJ3Mn
IDogJycpICsgJyBhZ28nOwotICAgIH0KLX0KLQotdmFyIGtNaW51dGVJbk1pbGxpc2Vjb25kcyA9
IDYwICogMTAwMDsKLXZhciBrUmVsYXRpdmVUaW1lU2xvdHMgPSBbCi0gICAgewotICAgICAgICBt
YXhNaWxsaXNlY29uZHM6IGtNaW51dGVJbk1pbGxpc2Vjb25kcywKLSAgICAgICAgZGVzY3JpYmU6
IGZ1bmN0aW9uKGRlbHRhKSB7IHJldHVybiAnSnVzdCBub3cnOyB9Ci0gICAgfSwKLSAgICB7Ci0g
ICAgICAgIG1heE1pbGxpc2Vjb25kczogNjAgKiBrTWludXRlSW5NaWxsaXNlY29uZHMsCi0gICAg
ICAgIGRlc2NyaWJlOiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKGtNaW51dGVJbk1pbGxp
c2Vjb25kcywgJ21pbnV0ZScpCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG1heE1pbGxpc2Vjb25k
czogMjQgKiA2MCAqIGtNaW51dGVJbk1pbGxpc2Vjb25kcywKLSAgICAgICAgZGVzY3JpYmU6IGNy
ZWF0ZVJlbGF0aXZlVGltZURlc2NyaXB0b3IoNjAgKiBrTWludXRlSW5NaWxsaXNlY29uZHMsICdo
b3VyJykKLSAgICB9LAotICAgIHsKLSAgICAgICAgbWF4TWlsbGlzZWNvbmRzOiBOdW1iZXIuTUFY
X1ZBTFVFLAotICAgICAgICBkZXNjcmliZTogY3JlYXRlUmVsYXRpdmVUaW1lRGVzY3JpcHRvcigy
NCAqIDYwICoga01pbnV0ZUluTWlsbGlzZWNvbmRzLCAnZGF5JykKLSAgICB9Ci1dOwotCi0vKgot
ICAgIFJlcHJlc2VudCB0aW1lIGFzIGRlc2NyaXB0aXZlIHRleHQsIHJlbGF0aXZlIHRvIG5vdyBh
bmQgZ3JhZHVhbGx5IGRlY3JlYXNpbmcgaW4gcHJlY2lzaW9uOgotICAgICAgICBkZWx0YSA8IDEg
bWludXRlcyA9PiBKdXN0IE5vdwotICAgICAgICBkZWx0YSA8IDYwIG1pbnV0ZXMgPT4gWCBtaW51
dGVbc10gYWdvCi0gICAgICAgIGRlbHRhIDwgMjQgaG91cnMgPT4gWCBob3VyW3NdIGFnbwotICAg
ICAgICBkZWx0YSA8IGluZiA9PiBYIGRheVtzXSBhZ28KLSovCi1iYXNlLnJlbGF0aXZpemVUaW1l
ID0gZnVuY3Rpb24odGltZSkKLXsKLSAgICB2YXIgcmVzdWx0OwotICAgIHZhciBkZWx0YSA9IG5l
dyBEYXRlKCkuZ2V0VGltZSgpIC0gdGltZTsKLSAgICBrUmVsYXRpdmVUaW1lU2xvdHMuc29tZShm
dW5jdGlvbihzbG90KSB7Ci0gICAgICAgIGlmIChkZWx0YSA+PSBzbG90Lm1heE1pbGxpc2Vjb25k
cykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXN1bHQgPSBzbG90LmRl
c2NyaWJlKGRlbHRhKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlX3VuaXR0ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvYmFzZV91bml0dGVzdHMuanMJKHJl
dmlzaW9uIDkzMjU2KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2VfdW5pdHRlc3RzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDM5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7
Ci0KLW1vZHVsZSgiYmFzZSIpOwotCi10ZXN0KCJqb2luUGF0aCIsIDEsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciB2YWx1ZSA9IGJhc2Uuam9pblBhdGgoInBhdGgvdG8iLCAidGVzdC5odG1sIik7Ci0g
ICAgZXF1YWxzKHZhbHVlLCAicGF0aC90by90ZXN0Lmh0bWwiKTsKLX0pOwotCi10ZXN0KCJlbmRz
V2l0aCIsIDksIGZ1bmN0aW9uKCkgewotICAgIG9rKGJhc2UuZW5kc1dpdGgoInh5eiIsICIiKSk7
Ci0gICAgb2soYmFzZS5lbmRzV2l0aCgieHl6IiwgInoiKSk7Ci0gICAgb2soYmFzZS5lbmRzV2l0
aCgieHl6IiwgInl6IikpOwotICAgIG9rKGJhc2UuZW5kc1dpdGgoInh5eiIsICJ4eXoiKSk7Ci0g
ICAgb2soIWJhc2UuZW5kc1dpdGgoInh5eiIsICJ3eHl6IikpOwotICAgIG9rKCFiYXNlLmVuZHNX
aXRoKCJ4eXoiLCAiZ3d4eXoiKSk7Ci0gICAgb2soYmFzZS5lbmRzV2l0aCgiIiwgIiIpKTsKLSAg
ICBvayghYmFzZS5lbmRzV2l0aCgiIiwgInoiKSk7Ci0gICAgb2soIWJhc2UuZW5kc1dpdGgoInh5
eHkiLCAieXgiKSk7Ci19KTsKLQotdGVzdCgidHJpbUV4dGVuc2lvbiIsIDYsIGZ1bmN0aW9uKCkg
ewotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRlbnNpb24oInh5eiIpLCAieHl6Iik7Ci0gICAgZXF1
YWxzKGJhc2UudHJpbUV4dGVuc2lvbigieHkueiIpLCAieHkiKTsKLSAgICBlcXVhbHMoYmFzZS50
cmltRXh0ZW5zaW9uKCJ4Lnl6IiksICJ4Iik7Ci0gICAgZXF1YWxzKGJhc2UudHJpbUV4dGVuc2lv
bigieC55LnoiKSwgIngueSIpOwotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRlbnNpb24oIi54eXoi
KSwgIiIpOwotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRlbnNpb24oIiIpLCAiIik7Ci19KTsKLQot
dGVzdCgiam9pblBhdGggd2l0aCBlbXB0eSBwYXJlbnQiLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgdmFsdWUgPSBiYXNlLmpvaW5QYXRoKCIiLCAidGVzdC5odG1sIik7Ci0gICAgZXF1YWxzKHZh
bHVlLCAidGVzdC5odG1sIik7Ci19KTsKLQotdGVzdCgidW5pcXVpZnlBcnJheSIsIDUsIGZ1bmN0
aW9uKCkgewotICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5QXJyYXkoW10pLCBbXSk7Ci0gICAg
ZGVlcEVxdWFsKGJhc2UudW5pcXVpZnlBcnJheShbImEiXSksIFsiYSJdKTsKLSAgICBkZWVwRXF1
YWwoYmFzZS51bmlxdWlmeUFycmF5KFsiYSIsICJiIl0pLCBbImEiLCAiYiJdKTsKLSAgICBkZWVw
RXF1YWwoYmFzZS51bmlxdWlmeUFycmF5KFsiYSIsICJiIiwgImIiXSksIFsiYSIsICJiIl0pOwot
ICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5QXJyYXkoWyJhIiwgImIiLCAiYiIsICJhIl0pLCBb
ImEiLCAiYiJdKTsKLX0pOwotCi10ZXN0KCJjYWxsSW5QYXJhbGxlbCIsIDQsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBleHBlY3RlZENhbGwgPSBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV07Ci0gICAgdmFyIGV4
cGVjdENvbXBsZXRpb25DYWxsYmFjayA9IHRydWU7Ci0KLSAgICBiYXNlLmNhbGxJblBhcmFsbGVs
KFsKLSAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG9rKGV4cGVjdGVk
Q2FsbFswXSk7Ci0gICAgICAgICAgICBleHBlY3RlZENhbGxbMF0gPSBmYWxzZTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7
Ci0gICAgICAgICAgICBvayhleHBlY3RlZENhbGxbMV0pOwotICAgICAgICAgICAgZXhwZWN0ZWRD
YWxsWzFdID0gZmFsc2U7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9LAotICAg
ICAgICBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICAgICAgb2soZXhwZWN0ZWRDYWxsWzJd
KTsKLSAgICAgICAgICAgIGV4cGVjdGVkQ2FsbFsyXSA9IGZhbHNlOwotICAgICAgICAgICAgY2Fs
bGJhY2soKTsKLSAgICAgICAgfSwKLSAgICBdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgb2soZXhw
ZWN0Q29tcGxldGlvbkNhbGxiYWNrKTsKLSAgICAgICAgZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNr
ID0gZmFsc2U7Ci0gICAgfSkKLX0pOwotCi10ZXN0KCJjYWxsSW5TZXF1ZW5jZSIsIDcsIGZ1bmN0
aW9uKCkgewotICAgIHZhciBleHBlY3RlZEFyZyA9IDQyOwotICAgIHZhciBleHBlY3RDb21wbGV0
aW9uQ2FsbGJhY2sgPSB0cnVlOwotCi0gICAgYmFzZS5jYWxsSW5TZXF1ZW5jZShmdW5jdGlvbihh
cmcsIGNhbGxiYWNrKSB7Ci0gICAgICAgIG9rKGFyZyA8IDQ1KTsKLSAgICAgICAgZXF1YWxzKGFy
ZywgZXhwZWN0ZWRBcmcrKyk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSwgWzQyLCA0Mywg
NDRdLCBmdW5jdGlvbigpIHsKLSAgICAgICAgb2soZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrKTsK
LSAgICAgICAgZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrID0gZmFsc2U7Ci0gICAgfSkKLX0pOwot
Ci10ZXN0KCJSZXF1ZXN0VHJhY2tlciIsIDUsIGZ1bmN0aW9uKCkgewotICAgIHZhciByZWFkeSA9
IGZhbHNlOwotICAgIHZhciB0cmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoMSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIG9rKHJlYWR5KTsKLSAgICB9KTsKLSAgICByZWFkeSA9IHRydWU7
Ci0gICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKLSAgICByZWFkeSA9IGZhbHNlOwotCi0g
ICAgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKDIsIGZ1bmN0aW9uKHBhcmFtZXRl
cikgewotICAgICAgICBvayhyZWFkeSk7Ci0gICAgICAgIGVxdWFscyhwYXJhbWV0ZXIsICdhcmd1
bWVudCcpOwotICAgIH0sIFsnYXJndW1lbnQnXSk7Ci0gICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxl
dGUoKTsKLSAgICByZWFkeSA9IHRydWU7Ci0gICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsK
LSAgICByZWFkeSA9IGZhbHNlOwotCi0gICAgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFj
a2VyKDAsIGZ1bmN0aW9uKCkgewotICAgICAgICBvayh0cnVlKTsKLSAgICB9KTsKLSAgICB0cmFj
a2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotCi0gICAgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RU
cmFja2VyKDApOwotICAgIHRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgLy8gU2hvdWxk
IG5vdCBiYXJmLgotICAgIG9rKHRydWUpOwotfSk7Ci0KLXRlc3QoIkNhbGxiYWNrSXRlcmF0b3Ii
LCAyMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVkID0gMDsKLSAgICB2YXIgaXRlcmF0
b3IgPSBuZXcgYmFzZS5DYWxsYmFja0l0ZXJhdG9yKGZ1bmN0aW9uKGEsIGIpIHsKLSAgICAgICAg
ZXF1YWxzKGEsICdBcmdBJyArIGV4cGVjdGVkKTsKLSAgICAgICAgZXF1YWxzKGIsICdBcmdCJyAr
IGV4cGVjdGVkKTsKLSAgICAgICAgKytleHBlY3RlZDsKLSAgICB9LCBbCi0gICAgICAgIFsnQXJn
QTAnLCAnQXJnQjAnXSwKLSAgICAgICAgWydBcmdBMScsICdBcmdCMSddLAotICAgICAgICBbJ0Fy
Z0EyJywgJ0FyZ0IyJ10sCi0gICAgXSk7Ci0gICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQotICAg
IG9rKCFpdGVyYXRvci5oYXNQcmV2aW91cygpKQotICAgIGl0ZXJhdG9yLmNhbGxOZXh0KCk7Ci0g
ICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIG9rKCFpdGVyYXRvci5oYXNQcmV2aW91cygp
KQotICAgIGl0ZXJhdG9yLmNhbGxOZXh0KCk7Ci0gICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQot
ICAgIG9rKGl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCi0gICAgaXRlcmF0b3IuY2FsbE5leHQoKTsK
LSAgICBvayghaXRlcmF0b3IuaGFzTmV4dCgpKQotICAgIG9rKGl0ZXJhdG9yLmhhc1ByZXZpb3Vz
KCkpCi0gICAgZXhwZWN0ZWQgPSAxOwotICAgIGl0ZXJhdG9yLmNhbGxQcmV2aW91cygpOwotICAg
IG9rKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICBvayhpdGVyYXRvci5oYXNQcmV2aW91cygpKQot
ICAgIGV4cGVjdGVkID0gMDsKLSAgICBpdGVyYXRvci5jYWxsUHJldmlvdXMoKTsKLSAgICBvayhp
dGVyYXRvci5oYXNOZXh0KCkpCi0gICAgb2soIWl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCi19KTsK
LQotdGVzdCgiZmlsdGVyVHJlZSIsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciB0cmVlID0gewot
ICAgICAgICAncGF0aCc6IHsKLSAgICAgICAgICAgICd0byc6IHsKLSAgICAgICAgICAgICAgICAn
dGVzdC5odG1sJzogewotICAgICAgICAgICAgICAgICAgICAnYWN0dWFsJzogJ1BBU1MnLAotICAg
ICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnRkFJTCcKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2Fub3RoZXIuaHRtbCc6IHsKLSAgICAgICAgICAg
ICAgICAnYWN0dWFsJzogJ1RFWFQnLAotICAgICAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNT
JwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gaXNMZWFm
KG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gISFub2RlLmFjdHVhbDsKLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBhY3R1YWxJc1RleHQobm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBub2Rl
LmFjdHVhbCA9PSAnVEVYVCc7Ci0gICAgfQotCi0gICAgdmFyIGFsbCA9IGJhc2UuZmlsdGVyVHJl
ZSh0cmVlLCBpc0xlYWYsIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZSB9KTsKLSAgICBkZWVwRXF1
YWwoYWxsLCB7Ci0gICAgICAgICdwYXRoL3RvL3Rlc3QuaHRtbCc6IHsKLSAgICAgICAgICAgICdh
Y3R1YWwnOiAnUEFTUycsCi0gICAgICAgICAgICAnZXhwZWN0ZWQnOiAnRkFJTCcKLSAgICAgICAg
fSwKLSAgICAgICAgJ3BhdGgvYW5vdGhlci5odG1sJzogewotICAgICAgICAgICAgJ2FjdHVhbCc6
ICdURVhUJywKLSAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJwotICAgICAgICB9Ci0gICAg
fSk7Ci0KLSAgICB2YXIgdGV4dCA9IGJhc2UuZmlsdGVyVHJlZSh0cmVlLCBpc0xlYWYsIGFjdHVh
bElzVGV4dCk7Ci0gICAgZGVlcEVxdWFsKHRleHQsIHsKLSAgICAgICAgJ3BhdGgvYW5vdGhlci5o
dG1sJzogewotICAgICAgICAgICAgJ2FjdHVhbCc6ICdURVhUJywKLSAgICAgICAgICAgICdleHBl
Y3RlZCc6ICdQQVNTJwotICAgICAgICB9Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiVXBkYXRlVHJh
Y2tlciIsIDIwLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGljdDsKLQotICAgIGZ1bmN0aW9uIGR1
bXBLZXlzKCkKLSAgICB7Ci0gICAgICAgIHZhciB1cGRhdGVzID0gW10KLSAgICAgICAgZGljdC5m
b3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGtleSwgdXBkYXRlZCkgewotICAgICAgICAgICAgdXBkYXRl
cy5wdXNoKGtleSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gdXBkYXRlczsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBkdW1wVXBkYXRlZEtleXMoKQotICAgIHsKLSAgICAgICAgdmFyIHVw
ZGF0ZXMgPSBbXQotICAgICAgICBkaWN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSwga2V5LCB1cGRh
dGVkKSB7Ci0gICAgICAgICAgICB1cGRhdGVkICYmIHVwZGF0ZXMucHVzaChrZXkpOwotICAgICAg
ICB9KTsKLSAgICAgICAgcmV0dXJuIHVwZGF0ZXM7Ci0gICAgfQotCi0KLSAgICBkaWN0ID0gbmV3
IGJhc2UuVXBkYXRlVHJhY2tlcigpOwotICAgIGRpY3QudXBkYXRlKCI1Iiwge30pOwotICAgIGRl
ZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyI1Il0pOwotICAgIGRpY3QudXBkYXRlKCI2Iiwg
e30pOwotICAgIGRpY3QudXBkYXRlKCI3Iiwge30pOwotICAgIGRlZXBFcXVhbChkdW1wVXBkYXRl
ZEtleXMoKSwgWyI1IiwgIjYiLCAiNyJdKTsKLSAgICBkZWVwRXF1YWwoZGljdC5nZXQoIjYiKSwg
e30pOwotICAgIG9rKGRpY3QuZXhpc3RzKCI3IikpOwotICAgIGRpY3QucHVyZ2UoKTsKLSAgICBk
ZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFtdKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMo
KSwgWyI1IiwgIjYiLCAiNyJdKTsKLSAgICBkaWN0LnVwZGF0ZSgiNSIsIHt9KTsKLSAgICBkZWVw
RXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSJdKTsKLSAgICBkaWN0LnVwZGF0ZSgiNCIsIHt9
KTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNCIsICI1Il0pOwotICAgIGRl
ZXBFcXVhbChkdW1wS2V5cygpLCBbIjQiLCAiNSIsICI2IiwgIjciXSk7Ci0gICAgZGljdC5wdXJn
ZSgpOwotICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbIjQiLCAiNSJdKTsKLSAgICBkZWVwRXF1
YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFtdKTsKLSAgICBkaWN0LnB1cmdlKCk7Ci0gICAgZGVlcEVx
dWFsKGR1bXBLZXlzKCksIFtdKTsKLQotICAgIHZhciByZW1vdmVDb3VudCA9IDA7Ci0gICAgZGlj
dC51cGRhdGUoIm9uZSIpOwotICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyJvbmUi
XSk7Ci0gICAgZGljdC51cGRhdGUoInR3byIpOwotICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtl
eXMoKSwgWyJvbmUiLCAidHdvIl0pOwotICAgIGRpY3QudXBkYXRlKCJ0aHJlZSIpOwotICAgIGRp
Y3QucHVyZ2UoKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyJvbmUiLCAidHdvIiwgInRo
cmVlIl0pOwotICAgIGRpY3QudXBkYXRlKCJ0d28iKTsKLSAgICBkaWN0LnB1cmdlKGZ1bmN0aW9u
KCkgewotICAgICAgICByZW1vdmVDb3VudCsrOwotICAgIH0pOwotICAgIGRlZXBFcXVhbChkdW1w
S2V5cygpLCBbInR3byJdKTsKLSAgICBlcXVhbChyZW1vdmVDb3VudCwgMik7Ci0gICAgZGljdC51
cGRhdGUoImZvdXIiKTsKLSAgICB2YXIgcmVtb3ZlQ291bnRlciA9IHsgY291bnQ6IDAgfTsKLSAg
ICBkaWN0LnB1cmdlKGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLmNvdW50Kys7Ci0gICAgfSwg
cmVtb3ZlQ291bnRlcik7Ci0gICAgZXF1YWwocmVtb3ZlQ291bnRlci5jb3VudCwgMSk7Ci0gICAg
ZGljdC5wdXJnZShmdW5jdGlvbigpIHsKLSAgICAgICAgZXF1YWwoU3RyaW5nKHRoaXMpLCAiZm91
ciIpOwotICAgIH0pOwotCi0gICAgZGljdCA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKLSAg
ICBkaWN0LnVwZGF0ZSgib25lIik7Ci0gICAgdmFyIHRoaXNPYmplY3QgPSB7fQotICAgIGRpY3Qu
Zm9yRWFjaChmdW5jdGlvbihpdGVtKSB7Ci0gICAgICAgIGVxdWFsKHRoaXMsIHRoaXNPYmplY3Qp
OwotICAgIH0sIHRoaXNPYmplY3QpOwotCi19KTsKLQotdGVzdCgiZXh0ZW5kcyIsIDE3LCBmdW5j
dGlvbigpIHsKLQotICAgIHZhciBMaWtlRGl2ID0gYmFzZS5leHRlbmRzKCJkaXYiLCB7Ci0gICAg
ICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICJh
d2Vzb21lIjsKLSAgICAgICAgfSwKLSAgICAgICAgbWV0aG9kOiBmdW5jdGlvbihtc2cpIHsKLSAg
ICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIExpa2VM
aWtlRGl2ID0gYmFzZS5leHRlbmRzKExpa2VEaXYsIHsKLSAgICAgICAgaW5pdDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICJsaWtlIjsKLSAgICAgICAgfQotICAg
IH0pOwotCi0gICAgdmFyIExpa2VQID0gYmFzZS5leHRlbmRzKCJwIiwgewotICAgICAgICBpbml0
OiBmdW5jdGlvbihjb250ZW50KSB7Ci0gICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gY29u
dGVudAotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICB2YXIgTGlrZVByb2dyZXNzID0gYmFzZS5l
eHRlbmRzKCJwcm9ncmVzcyIsIHsKLSAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB0aGlzLm1heCA9IDEwMDsKLSAgICAgICAgICAgIHRoaXMudmFsdWUgPSAxMDsKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgdmFyIExpa2VMaWtlUHJvZ3Jlc3MgPSBiYXNlLmV4dGVuZHMo
TGlrZVByb2dyZXNzLCB7Ci0gICAgICAgIGNvbXBsZXRlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB0aGlzLnZhbHVlID0gMTAwOwotICAgICAgICB9Ci0gICAgfSk7Ci0KLSAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKG5ldyBMaWtlRGl2KCkpOwotICAgIGVxdWFscyhkb2N1bWVudC5i
b2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiRElWIik7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJvZHku
bGFzdENoaWxkLmlubmVySFRNTCwgImF3ZXNvbWUiKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9k
eS5sYXN0Q2hpbGQubWV0aG9kKCksIDQyKTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGRvY3VtZW50LmJvZHkubGFzdENoaWxkKTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQobmV3IExpa2VMaWtlRGl2KCkpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGls
ZC50YWdOYW1lLCAiRElWIik7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmlu
bmVySFRNTCwgImF3ZXNvbWUiKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQu
bWV0aG9kKCksIDQyKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuY2xhc3NO
YW1lLCAibGlrZSIpOwotICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9k
eS5sYXN0Q2hpbGQpOwotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuZXcgTGlrZVAo
InN1cGVyIikpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAi
UCIpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJzdXBl
ciIpOwotICAgIHJhaXNlcyhmdW5jdGlvbigpIHsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5sYXN0
Q2hpbGQubWV0aG9kKCk7Ci0gICAgfSk7Ci0gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChk
b2N1bWVudC5ib2R5Lmxhc3RDaGlsZCk7Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KG5ldyBMaWtlUHJvZ3Jlc3MoKSk7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxk
LnRhZ05hbWUsICJQUk9HUkVTUyIpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGls
ZC5wb3NpdGlvbiwgMC4xKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuaW5u
ZXJIVE1MLCAiIik7Ci0gICAgcmFpc2VzKGZ1bmN0aW9uKCkgewotICAgICAgICBkb2N1bWVudC5i
b2R5Lmxhc3RDaGlsZC5tZXRob2QoKTsKLSAgICB9KTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGRvY3VtZW50LmJvZHkubGFzdENoaWxkKTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQobmV3IExpa2VMaWtlUHJvZ3Jlc3MoKSk7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJv
ZHkubGFzdENoaWxkLnRhZ05hbWUsICJQUk9HUkVTUyIpOwotICAgIGVxdWFscyhkb2N1bWVudC5i
b2R5Lmxhc3RDaGlsZC5wb3NpdGlvbiwgMC4xKTsKLSAgICBkb2N1bWVudC5ib2R5Lmxhc3RDaGls
ZC5jb21wbGV0ZWQoKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQucG9zaXRp
b24sIDEpOwotICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0
Q2hpbGQpOwotfSk7Ci0KLXRlc3QoInJlbGF0aXZpemVUaW1lIiwgMTEsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciB0aW1lID0gbmV3IERhdGUoKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGlt
ZSh0aW1lKSwgIkp1c3Qgbm93Iik7Ci0gICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRl
cygpIC0gMSk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIxIG1pbnV0
ZSBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSAxKTsKLSAg
ICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjIgbWludXRlcyBhZ28iKTsKLSAg
ICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFz
ZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjMgbWludXRlcyBhZ28iKTsKLSAgICB0aW1lLnNldE1p
bnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSA1Nik7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6
ZVRpbWUodGltZSksICI1OSBtaW51dGVzIGFnbyIpOwotICAgIHRpbWUuc2V0TWludXRlcyh0aW1l
LmdldE1pbnV0ZXMoKSAtIDEpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUp
LCAiMSBob3VyIGFnbyIpOwotICAgIHRpbWUuc2V0SG91cnModGltZS5nZXRIb3VycygpIC0gMSk7
Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyIGhvdXJzIGFnbyIpOwot
ICAgIHRpbWUuc2V0SG91cnModGltZS5nZXRIb3VycygpIC0gMjEpOwotICAgIGVxdWFscyhiYXNl
LnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMjMgaG91cnMgYWdvIik7Ci0gICAgdGltZS5zZXRIb3Vy
cyh0aW1lLmdldEhvdXJzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0
aW1lKSwgIjEgZGF5IGFnbyIpOwotICAgIHRpbWUuc2V0RGF0ZSh0aW1lLmdldERhdGUoKSAtIDEp
OwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMiBkYXlzIGFnbyIpOwot
ICAgIHRpbWUuc2V0RGF0ZSh0aW1lLmdldERhdGUoKSAtIDk5OCk7Ci0gICAgZXF1YWxzKGJhc2Uu
cmVsYXRpdml6ZVRpbWUodGltZSksICIxMDAwIGRheXMgYWdvIik7Ci19KQotCi19KSgpOwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL2J1Z3ppbGxhX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvYnVnemlsbGFfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9idWd6aWxsYV91bml0dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9kdWxlKCJi
dWd6aWxsYSIpOwotCi12YXIga0V4YW1wbGVSZXNwb25zZVhNTCA9Ci0gICAgJzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+JyArCi0gICAgJzxmZWVkIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDA1L0F0b20iPicgKwotICAgICcgIDx0aXRsZT5CdWd6aWxsYSBCdWdzPC90
aXRsZT4nICsKLSAgICAnICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0idGV4dC9odG1sIicg
KwotICAgICcgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dp
P2J1Z19zdGF0dXM9UkVPUEVORUQmYW1wO2J1Z19zdGF0dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFT
U0lHTkVEJmFtcDtidWdfc3RhdHVzPVVOQ09ORklSTUVEJmFtcDtmaWVsZC0xLTAtMD1idWdfc3Rh
dHVzJmFtcDtmaWVsZDAtMC0wPXByb2R1Y3QmYW1wO2ZpZWxkMC0wLTE9Y29tcG9uZW50JmFtcDtm
aWVsZDAtMC0yPXNob3J0X2Rlc2MmYW1wO2ZpZWxkMC0wLTM9c3RhdHVzX3doaXRlYm9hcmQmYW1w
O2ZpZWxkMC0wLTQ9bG9uZ2Rlc2MmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7cmVtYWN0
aW9uPSZhbXA7dHlwZS0xLTAtMD1hbnlleGFjdCZhbXA7dHlwZTAtMC0wPXN1YnN0cmluZyZhbXA7
dHlwZTAtMC0xPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0yPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0z
PXN1YnN0cmluZyZhbXA7dHlwZTAtMC00PXN1YnN0cmluZyZhbXA7dmFsdWUtMS0wLTA9UkVPUEVO
RUQlMkNORVclMkNBU1NJR05FRCUyQ1VOQ09ORklSTUVEJmFtcDt2YWx1ZTAtMC0wPWdhcmRlbi1v
LW1hdGljJmFtcDt2YWx1ZTAtMC0xPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0yPWdhcmRl
bi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0zPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC00PWdh
cmRlbi1vLW1hdGljIi8+JyArCi0gICAgJyAgPGxpbmsgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNh
dGlvbi9hdG9tK3htbCInICsKLSAgICAnICAgICAgICBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9idWdsaXN0LmNnaT9idWdfc3RhdHVzPVJFT1BFTkVEJmFtcDtidWdfc3RhdHVzPU5FVyZh
bXA7YnVnX3N0YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1VTkNPTkZJUk1FRCZhbXA7Y3R5
cGU9YXRvbSZhbXA7ZmllbGQtMS0wLTA9YnVnX3N0YXR1cyZhbXA7ZmllbGQwLTAtMD1wcm9kdWN0
JmFtcDtmaWVsZDAtMC0xPWNvbXBvbmVudCZhbXA7ZmllbGQwLTAtMj1zaG9ydF9kZXNjJmFtcDtm
aWVsZDAtMC0zPXN0YXR1c193aGl0ZWJvYXJkJmFtcDtmaWVsZDAtMC00PWxvbmdkZXNjJmFtcDtx
dWVyeV9mb3JtYXQ9YWR2YW5jZWQmYW1wO3JlbWFjdGlvbj0mYW1wO3R5cGUtMS0wLTA9YW55ZXhh
Y3QmYW1wO3R5cGUwLTAtMD1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMT1zdWJzdHJpbmcmYW1wO3R5
cGUwLTAtMj1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMz1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtND1z
dWJzdHJpbmcmYW1wO3ZhbHVlLTEtMC0wPVJFT1BFTkVEJTJDTkVXJTJDQVNTSUdORUQlMkNVTkNP
TkZJUk1FRCZhbXA7dmFsdWUwLTAtMD1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMT1nYXJk
ZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMj1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMz1n
YXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtND1nYXJkZW4tby1tYXRpYyIvPicgKwotICAgICcg
IDx1cGRhdGVkPjIwMTEtMDgtMDRUMDA6MjI6NDlaPC91cGRhdGVkPicgKwotICAgICcgIDxpZD5o
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9idWdsaXN0LmNnaT9idWdfc3RhdHVzPVJFT1BFTkVEJmFt
cDtidWdfc3RhdHVzPU5FVyZhbXA7YnVnX3N0YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1V
TkNPTkZJUk1FRCZhbXA7Y3R5cGU9YXRvbSZhbXA7ZmllbGQtMS0wLTA9YnVnX3N0YXR1cyZhbXA7
ZmllbGQwLTAtMD1wcm9kdWN0JmFtcDtmaWVsZDAtMC0xPWNvbXBvbmVudCZhbXA7ZmllbGQwLTAt
Mj1zaG9ydF9kZXNjJmFtcDtmaWVsZDAtMC0zPXN0YXR1c193aGl0ZWJvYXJkJmFtcDtmaWVsZDAt
MC00PWxvbmdkZXNjJmFtcDtxdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYW1wO3JlbWFjdGlvbj0mYW1w
O3R5cGUtMS0wLTA9YW55ZXhhY3QmYW1wO3R5cGUwLTAtMD1zdWJzdHJpbmcmYW1wO3R5cGUwLTAt
MT1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMj1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMz1zdWJzdHJp
bmcmYW1wO3R5cGUwLTAtND1zdWJzdHJpbmcmYW1wO3ZhbHVlLTEtMC0wPVJFT1BFTkVEJTJDTkVX
JTJDQVNTSUdORUQlMkNVTkNPTkZJUk1FRCZhbXA7dmFsdWUwLTAtMD1nYXJkZW4tby1tYXRpYyZh
bXA7dmFsdWUwLTAtMT1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMj1nYXJkZW4tby1tYXRp
YyZhbXA7dmFsdWUwLTAtMz1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtND1nYXJkZW4tby1t
YXRpYzwvaWQ+JyArCi0gICAgJycgKwotICAgICcgIDxlbnRyeT4nICsKLSAgICAnICAgIDx0aXRs
ZT5bQnVnIDY1NjU0XSBBZGQgbWlzc2luZyBsaWNlbnNlIGJsb2NrcyB0byBnYXJkZW4tby1tYXRp
YzwvdGl0bGU+JyArCi0gICAgJyAgICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0idGV4dC9o
dG1sIicgKwotICAgICcgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1NjU0Ii8+JyArCi0gICAgJyAgICA8aWQ+aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU0PC9pZD4nICsKLSAgICAnICAgIDxhdXRob3I+JyAr
Ci0gICAgJyAgICAgIDxuYW1lPkFkYW0gQmFydGg8L25hbWU+JyArCi0gICAgJyAgICA8L2F1dGhv
cj4nICsKLSAgICAnICAgIDx1cGRhdGVkPjIwMTEtMDgtMDRUMDA6MjI6MjZaPC91cGRhdGVkPiAn
ICsKLSAgICAnICAgIDxzdW1tYXJ5IHR5cGU9Imh0bWwiPicgKwotICAgICcgICAgICAnICsKLSAg
ICAnICAgICAgJmx0O3RhYmxlJmd0OycgKwotICAgICcgICAgICAmbHQ7dHImZ3Q7JyArCi0gICAg
JyAgICAgICAgJmx0O3RoJmd0O0ZpZWxkJmx0Oy90aCZndDsmbHQ7dGgmZ3Q7VmFsdWUmbHQ7L3Ro
Jmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVk
X3Byb2R1Y3QmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1Byb2R1Y3QmbHQ7
L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtXZWJLaXQmbHQ7L3RkJmd0OycgKwot
ICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NvbXBvbmVu
dCZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Q29tcG9uZW50Jmx0Oy90ZCZn
dDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TmV3IEJ1Z3MmbHQ7L3RkJmd0OycgKwotICAg
ICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2Fzc2lnbmVlJnF1
b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtBc3NpZ25lZSZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICAgJmx0O3RkJmd0O0FkYW0gQmFydGgmbHQ7L3RkJmd0OycgKwotICAgICcg
ICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3JlcG9ydGVyJnF1b3Q7
Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtSZXBvcnRlciZsdDsvdGQmZ3Q7JyArCi0g
ICAgJyAgICAgICAgJmx0O3RkJmd0O0FkYW0gQmFydGgmbHQ7L3RkJmd0OycgKwotICAgICcgICAg
ICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2J1Z19zdGF0dXMmcXVvdDsm
Z3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1N0YXR1cyZsdDsvdGQmZ3Q7JyArCi0gICAg
JyAgICAgICAgJmx0O3RkJmd0O05FVyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHIm
Z3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVzb2x1dGlvbiZxdW90OyZndDsnICsKLSAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVzb2x1dGlvbiAmbHQ7L3RkJmd0OycgKwotICAgICcgICAg
ICAgICZsdDt0ZCZndDsmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0
ciBjbGFzcz0mcXVvdDtiel9mZWVkX3ByaW9yaXR5JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAg
ICZsdDt0ZCZndDtQcmlvcml0eSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0
O1AyJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1
b3Q7YnpfZmVlZF9zZXZlcml0eSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
U2V2ZXJpdHkgJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Tm9ybWFsJmx0
Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7Ynpf
ZmVlZF9jcmVhdGlvbl9kYXRlJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtP
cGVuZWQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDsxNjoyMTo1MiZsdDsv
dGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2Zl
ZWRfY2hhbmdlZF9kYXRlJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtDaGFu
Z2VkJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTY6MjI6MjYmbHQ7L3Rk
Jmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RhYmxl
Jmd0OycgKwotICAgICcgICAgPC9zdW1tYXJ5PicgKwotICAgICcgIDwvZW50cnk+JyArCi0gICAg
JyAgPGVudHJ5PicgKwotICAgICcgICAgPHRpdGxlPltCdWcgNjU2NTNdIGdhcmRlbi1vLW1hdGlj
IG5lZWRzIGEgd2F5IHRvIG1vY2sgb3V0IHRoZSBuZXR3b3JrPC90aXRsZT4nICsKLSAgICAnICAg
IDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJ0ZXh0L2h0bWwiJyArCi0gICAgJyAgICAgICAg
ICBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTMiLz4n
ICsKLSAgICAnICAgIDxpZD5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU2NTM8L2lkPicgKwotICAgICcgICAgPGF1dGhvcj4nICsKLSAgICAnICAgICAgPG5hbWU+QWRh
bSBCYXJ0aDwvbmFtZT4nICsKLSAgICAnICAgIDwvYXV0aG9yPicgKwotICAgICcgICAgPHVwZGF0
ZWQ+MjAxMS0wOC0wNFQwMDoyMjo0OVo8L3VwZGF0ZWQ+ICcgKwotICAgICcgICAgPHN1bW1hcnkg
dHlwZT0iaHRtbCI+JyArCi0gICAgJyAgICAgICcgKwotICAgICcgICAgICAmbHQ7dGFibGUmZ3Q7
JyArCi0gICAgJyAgICAgICZsdDt0ciZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGgmZ3Q7Rmll
bGQmbHQ7L3RoJmd0OyZsdDt0aCZndDtWYWx1ZSZsdDsvdGgmZ3Q7JyArCi0gICAgJyAgICAgICZs
dDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcHJvZHVjdCZxdW90OyZndDsnICsK
LSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UHJvZHVjdCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAg
ICAgJmx0O3RkJmd0O1dlYktpdCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7
Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY29tcG9uZW50JnF1b3Q7Jmd0OycgKwotICAgICcg
ICAgICAgICZsdDt0ZCZndDtDb21wb25lbnQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZs
dDt0ZCZndDtOZXcgQnVncyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0
O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfYXNzaWduZWUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAg
ICAgJmx0O3RkJmd0O0Fzc2lnbmVlJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQm
Z3Q7QWRhbSBCYXJ0aCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3Ry
IGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVwb3J0ZXImcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAg
Jmx0O3RkJmd0O1JlcG9ydGVyJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
QWRhbSBCYXJ0aCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNs
YXNzPSZxdW90O2J6X2ZlZWRfYnVnX3N0YXR1cyZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAm
bHQ7dGQmZ3Q7U3RhdHVzJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TkVX
Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7
YnpfZmVlZF9yZXNvbHV0aW9uJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtS
ZXNvbHV0aW9uICZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OyZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRf
cHJpb3JpdHkmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1ByaW9yaXR5Jmx0
Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UDImbHQ7L3RkJmd0OycgKwotICAg
ICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3NldmVyaXR5JnF1
b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtTZXZlcml0eSAmbHQ7L3RkJmd0Oycg
KwotICAgICcgICAgICAgICZsdDt0ZCZndDtOb3JtYWwmbHQ7L3RkJmd0OycgKwotICAgICcgICAg
ICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NyZWF0aW9uX2RhdGUmcXVv
dDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O09wZW5lZCZsdDsvdGQmZ3Q7JyArCi0g
ICAgJyAgICAgICAgJmx0O3RkJmd0OzE2OjE2OjQ0Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAg
Jmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jaGFuZ2VkX2RhdGUmcXVvdDsm
Z3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0NoYW5nZWQmbHQ7L3RkJmd0OycgKwotICAg
ICcgICAgICAgICZsdDt0ZCZndDsxNjoyMjo0OSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZs
dDsvdHImZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdGFibGUmZ3Q7JyArCi0gICAgJyAgICA8L3N1
bW1hcnk+JyArCi0gICAgJyAgPC9lbnRyeT4nICsKLSAgICAnICA8ZW50cnk+JyArCi0gICAgJyAg
ICA8dGl0bGU+W0J1ZyA2NTY1MF0gVXNlIGZhaWx1cmVJbmZvIG1vcmUgcGVydmFzaXZlbHkgaW4g
Z2FyZGVuLW8tbWF0aWM8L3RpdGxlPicgKwotICAgICcgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUi
IHR5cGU9InRleHQvaHRtbCInICsKLSAgICAnICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1MCIvPicgKwotICAgICcgICAgPGlkPmh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1MDwvaWQ+JyArCi0gICAgJyAg
ICA8YXV0aG9yPicgKwotICAgICcgICAgICA8bmFtZT5BZGFtIEJhcnRoPC9uYW1lPicgKwotICAg
ICcgICAgPC9hdXRob3I+JyArCi0gICAgJyAgICA8dXBkYXRlZD4yMDExLTA4LTAzVDIzOjQwOjM0
WjwvdXBkYXRlZD4gJyArCi0gICAgJyAgICA8c3VtbWFyeSB0eXBlPSJodG1sIj4nICsKLSAgICAn
ICAgICAgJyArCi0gICAgJyAgICAgICZsdDt0YWJsZSZndDsnICsKLSAgICAnICAgICAgJmx0O3Ry
Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0aCZndDtGaWVsZCZsdDsvdGgmZ3Q7Jmx0O3RoJmd0
O1ZhbHVlJmx0Oy90aCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9
JnF1b3Q7YnpfZmVlZF9wcm9kdWN0JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZn
dDtQcm9kdWN0Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7V2ViS2l0Jmx0
Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7Ynpf
ZmVlZF9jb21wb25lbnQmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0NvbXBv
bmVudCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05ldyBCdWdzJmx0Oy90
ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVl
ZF9hc3NpZ25lZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QXNzaWduZWUm
bHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZn
dDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9y
ZXBvcnRlciZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVwb3J0ZXImbHQ7
L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsn
ICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9idWdf
c3RhdHVzJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtTdGF0dXMmbHQ7L3Rk
Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtORVcmbHQ7L3RkJmd0OycgKwotICAgICcg
ICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Jlc29sdXRpb24mcXVv
dDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1Jlc29sdXRpb24gJmx0Oy90ZCZndDsn
ICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0
Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9wcmlvcml0eSZxdW90OyZndDsnICsK
LSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UHJpb3JpdHkmbHQ7L3RkJmd0OycgKwotICAgICcgICAg
ICAgICZsdDt0ZCZndDtQMiZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0
O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfc2V2ZXJpdHkmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAg
ICAgJmx0O3RkJmd0O1NldmVyaXR5ICZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3Rk
Jmd0O05vcm1hbCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNs
YXNzPSZxdW90O2J6X2ZlZWRfY3JlYXRpb25fZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAg
ICAmbHQ7dGQmZ3Q7T3BlbmVkJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
MTU6MzU6NTUmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFz
cz0mcXVvdDtiel9mZWVkX2NoYW5nZWRfZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAm
bHQ7dGQmZ3Q7Q2hhbmdlZCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OzE1
OjQwOjM0Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsnICsKLSAgICAnICAg
ICAgJmx0Oy90YWJsZSZndDsnICsKLSAgICAnICAgIDwvc3VtbWFyeT4nICsKLSAgICAnICA8L2Vu
dHJ5PicgKwotICAgICc8L2ZlZWQ+JwotCi10ZXN0KCJxdWlja1NlYXJjaCIsIDMsIGZ1bmN0aW9u
KCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotCi0gICAg
dmFyIHJlcXVlc3RlZFVSTHMgPSBbXTsKLSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJs
LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOwotICAg
ICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7Ci0gICAgICAgICAgICB2YXIgcmVzcG9uc2VE
T00gPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlUmVzcG9uc2VYTUwsICJhcHBsaWNh
dGlvbi94bWwiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAg
fSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAg
ICBidWd6aWxsYS5xdWlja1NlYXJjaCgnZ2FyZGVuLW8tbWF0aWMnLCBmdW5jdGlvbihidWdzKSB7
Ci0gICAgICAgICAgICBkZWVwRXF1YWwoYnVncywgW3sKLSAgICAgICAgICAgICAgICAidGl0bGUi
OiAiW0J1ZyA2NTY1NF0gQWRkIG1pc3NpbmcgbGljZW5zZSBibG9ja3MgdG8gZ2FyZGVuLW8tbWF0
aWMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1NjU0IiwKLSAgICAgICAgICAgICAgICAic3RhdHVzIjogIk5FVyIKLSAg
ICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAiW0J1ZyA2NTY1M10gZ2Fy
ZGVuLW8tbWF0aWMgbmVlZHMgYSB3YXkgdG8gbW9jayBvdXQgdGhlIG5ldHdvcmsiLAotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1NjUzIiwKLSAgICAgICAgICAgICAgICAic3RhdHVzIjogIk5FVyIKLSAgICAgICAgICAgIH0s
IHsKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAiW0J1ZyA2NTY1MF0gVXNlIGZhaWx1cmVJbmZv
IG1vcmUgcGVydmFzaXZlbHkgaW4gZ2FyZGVuLW8tbWF0aWMiLAotICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUwIiwKLSAg
ICAgICAgICAgICAgICAic3RhdHVzIjogIk5FVyIKLSAgICAgICAgICAgIH1dKTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7Ci0KLSAgICBkZWVwRXF1YWwocmVxdWVzdGVkVVJMcywgWwotICAgICAgICAi
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYnVnbGlzdC5jZ2k/Y3R5cGU9cnNzJm9yZGVyPWJ1Z3Mu
YnVnX2lkK2Rlc2MmcXVpY2tzZWFyY2g9Z2FyZGVuLW8tbWF0aWMiLAotICAgIF0pOwotfSk7Ci0K
LXRlc3QoImlzT3BlblN0YXR1cyIsIDYsIGZ1bmN0aW9uKCkgewotICAgIG9rKGJ1Z3ppbGxhLmlz
T3BlblN0YXR1cygnVU5DT05GSVJNRUQnKSk7Ci0gICAgb2soYnVnemlsbGEuaXNPcGVuU3RhdHVz
KCdORVcnKSk7Ci0gICAgb2soYnVnemlsbGEuaXNPcGVuU3RhdHVzKCdBU1NJR05FRCcpKTsKLSAg
ICBvayhidWd6aWxsYS5pc09wZW5TdGF0dXMoJ1JFT1BFTkVEJykpOwotICAgIG9rKCFidWd6aWxs
YS5pc09wZW5TdGF0dXMoJ0ZJWEVEJykpOwotICAgIG9rKCFidWd6aWxsYS5pc09wZW5TdGF0dXMo
J1ZFUklGSUVEJykpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvYnVpbGRl
cnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2J1aWxkZXJzLmpzCShyZXZpc2lv
biA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9idWlsZGVycy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgYnVpbGRlcnMgPSBidWlsZGVycyB8
fCB7fTsKLQotKGZ1bmN0aW9uKCkgewotCi12YXIga0Nocm9taXVtQnVpbGRCb3RVUkwgPSAnaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdCc7Ci0KLXZhciBrVXBkYXRl
U3RlcE5hbWUgPSAndXBkYXRlJzsKLXZhciBrVXBkYXRlU2NyaXB0c1N0ZXBOYW1lID0gJ3VwZGF0
ZV9zY3JpcHRzJzsKLXZhciBrQ29tcGlsZVN0ZXBOYW1lID0gJ2NvbXBpbGUnOwotCi1mdW5jdGlv
biB1cmxGb3JCdWlsZEluZm8oYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyKQotewotICAgIHJldHVy
biBrQ2hyb21pdW1CdWlsZEJvdFVSTCArICcvanNvbi9idWlsZGVycy8nICsgZW5jb2RlVVJJQ29t
cG9uZW50KGJ1aWxkZXJOYW1lKSArICcvYnVpbGRzLycgKyBlbmNvZGVVUklDb21wb25lbnQoYnVp
bGROdW1iZXIpOwotfQotCi1mdW5jdGlvbiBpc1N0ZXBSZXF1cmVkRm9yVGVzdENvdmVyYWdlKHN0
ZXApCi17Ci0gICAgc3dpdGNoKHN0ZXAubmFtZSkgewotICAgIGNhc2Uga1VwZGF0ZVN0ZXBOYW1l
OgotICAgIGNhc2Uga1VwZGF0ZVNjcmlwdHNTdGVwTmFtZToKLSAgICBjYXNlIGtDb21waWxlU3Rl
cE5hbWU6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRpZEZhaWwoc3RlcCkKLXsKLSAgICAvLyBG
SVhNRTogSXMgdGhpcyB0aGUgY29ycmVjdCB3YXkgdG8gdGVzdCBmb3IgZmFpbHVyZT8KLSAgICBy
ZXR1cm4gc3RlcC5yZXN1bHRzWzBdID4gMDsKLX0KLQotZnVuY3Rpb24gZGlkRmFpbFN0ZXBSZXF1
cmVkRm9yVGVzdENvdmVyYWdlKGJ1aWxkSW5mbykKLXsKLSAgICByZXR1cm4gYnVpbGRJbmZvLnN0
ZXBzLmZpbHRlcihpc1N0ZXBSZXF1cmVkRm9yVGVzdENvdmVyYWdlKS5maWx0ZXIoZGlkRmFpbCku
bGVuZ3RoID4gMDsKLX0KLQotZnVuY3Rpb24gbW9zdFJlY2VudENvbXBsZXRlZEJ1aWxkTnVtYmVy
KGluZGl2aWR1YWxCdWlsZGVyU3RhdHVzKQotewotICAgIGlmICghaW5kaXZpZHVhbEJ1aWxkZXJT
dGF0dXMpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgZm9yICh2YXIgaSA9IGluZGl2aWR1
YWxCdWlsZGVyU3RhdHVzLmNhY2hlZEJ1aWxkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICB2YXIgYnVpbGROdW1iZXIgPSBpbmRpdmlkdWFsQnVpbGRlclN0YXR1cy5jYWNoZWRC
dWlsZHNbaV07Ci0gICAgICAgIGlmIChpbmRpdmlkdWFsQnVpbGRlclN0YXR1cy5jdXJyZW50QnVp
bGRzLmluZGV4T2YoYnVpbGROdW1iZXIpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxk
TnVtYmVyOwotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotfQotCi12YXIgZ19idWlsZEluZm9D
YWNoZSA9IG5ldyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uKGtleSwgY2FsbGJhY2sp
IHsKLSAgICB2YXIgZXhwbG9kZWRLZXkgPSBrZXkuc3BsaXQoJ1xuJyk7Ci0gICAgbmV0LmdldCh1
cmxGb3JCdWlsZEluZm8oZXhwbG9kZWRLZXlbMF0sIGV4cGxvZGVkS2V5WzFdKSwgY2FsbGJhY2sp
OwotfSk7Ci0KLWZ1bmN0aW9uIGZldGNoTW9zdFJlY2VudEJ1aWxkSW5mb0J5QnVpbGRlcihjYWxs
YmFjaykKLXsKLSAgICB2YXIgYnVpbGRJbmZvQnlCdWlsZGVyID0ge307Ci0gICAgdmFyIHJlcXVl
c3RUcmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoY29uZmlnLmtCdWlsZGVycy5sZW5n
dGgsIGNhbGxiYWNrLCBbYnVpbGRJbmZvQnlCdWlsZGVyXSk7Ci0gICAgbmV0LmdldChrQ2hyb21p
dW1CdWlsZEJvdFVSTCArICcvanNvbi9idWlsZGVycycsIGZ1bmN0aW9uKGJ1aWxkZXJTdGF0dXMp
IHsKLSAgICAgICAgJC5lYWNoKGNvbmZpZy5rQnVpbGRlcnMsIGZ1bmN0aW9uKGluZGV4LCBidWls
ZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGJ1aWxkTnVtYmVyID0gbW9zdFJlY2VudENvbXBs
ZXRlZEJ1aWxkTnVtYmVyKGJ1aWxkZXJTdGF0dXNbYnVpbGRlck5hbWVdKTsKLSAgICAgICAgICAg
IGlmICghYnVpbGROdW1iZXIpIHsKLSAgICAgICAgICAgICAgICBidWlsZEluZm9CeUJ1aWxkZXJb
YnVpbGRlck5hbWVdID0gbnVsbDsKLSAgICAgICAgICAgICAgICByZXF1ZXN0VHJhY2tlci5yZXF1
ZXN0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGdfYnVpbGRJbmZvQ2FjaGUuZ2V0KGJ1aWxkZXJOYW1lICsgJ1xuJyArIGJ1
aWxkTnVtYmVyLCBmdW5jdGlvbihidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAgICBidWlsZElu
Zm9CeUJ1aWxkZXJbYnVpbGRlck5hbWVdID0gYnVpbGRJbmZvOwotICAgICAgICAgICAgICAgIHJl
cXVlc3RUcmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfQotCi1idWlsZGVycy5idWlsZGVyc0ZhaWxpbmdTdGVwUmVxdXJlZEZv
clRlc3RDb3ZlcmFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIGZldGNoTW9zdFJlY2Vu
dEJ1aWxkSW5mb0J5QnVpbGRlcihmdW5jdGlvbihidWlsZEluZm9CeUJ1aWxkZXIpIHsKLSAgICAg
ICAgdmFyIGJ1aWxkZXJOYW1lTGlzdCA9IFtdOwotICAgICAgICAkLmVhY2goYnVpbGRJbmZvQnlC
dWlsZGVyLCBmdW5jdGlvbihidWlsZGVyTmFtZSwgYnVpbGRJbmZvKSB7Ci0gICAgICAgICAgICBp
ZiAoIWJ1aWxkSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAo
ZGlkRmFpbFN0ZXBSZXF1cmVkRm9yVGVzdENvdmVyYWdlKGJ1aWxkSW5mbykpCi0gICAgICAgICAg
ICAgICAgYnVpbGRlck5hbWVMaXN0LnB1c2goYnVpbGRlck5hbWUpOwotICAgICAgICB9KTsKLSAg
ICAgICAgY2FsbGJhY2soYnVpbGRlck5hbWVMaXN0KTsKLSAgICB9KTsKLX07Ci0KLX0pKCk7Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvYnVpbGRlcnNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9idWlsZGVyc191bml0dGVzdHMuanMJKHJldmlzaW9uIDkzMjU0KQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL2J1aWxkZXJzX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSwzNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUo
ImJ1aWxkZXJzIik7Ci0KLXZhciBrRXhhbXBsZUJ1aWxkZXJTdGF0dXNKU09OID0gIHsKLSAgICAi
V2Via2l0IExpbnV4IjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJraXRfTGludXgiLAotICAg
ICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAg
ICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRC
dWlsZHMiOiBbMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJz
bGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9
LAotICAgICJXZWJraXQgTWFjMTAuNiAoQ0cpIjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJr
aXRfTGludXgiLAotICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEs
IDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAg
ICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdC
dWlsZHMiOiAwLAotICAgICAgICAic2xhdmVzIjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3Rh
dGUiOiAiYnVpbGRpbmciCi0gICAgfSwKLX07Ci0KLXZhciBrRXhhbXBsZUJ1aWxkSW5mb0pTT04g
PSB7Ci0gICAgImJsYW1lIjogWyJhYmFydGhAd2Via2l0Lm9yZyJdLAotICAgICJidWlsZGVyTmFt
ZSI6ICJXZWJraXQgTGludXgiLAotICAgICJjaGFuZ2VzIjogWyJGaWxlczpcbiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qc1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1
MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlwZXMu
ICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtc
bmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L21haW4uanM6UHJvcGVydGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRlc3RzL0NoYW5n
ZUxvZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cv
aW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3Rl
ZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3No
YWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtdmVydGljYWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nXG5B
dDogVGh1IDA0IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9y
Z1xuQ29tbWVudHM6IFVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gt
c2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5w
bmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxl
LXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBu
ZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
dmVydGljYWwtZXhwZWN0ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAotICAgICJjdXJyZW50
U3RlcCI6IG51bGwsCi0gICAgImV0YSI6IG51bGwsCi0gICAgImxvZ3MiOiBbCi0gICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy91cGRhdGVfc2NyaXB0cy9sb2dz
L3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9w
L2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVw
cy91cGRhdGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJraXQlMjBMaW51eC9idWls
ZHMvMTE0NjEvc3RlcHMvY29tcGlsZS9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAi
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYmtp
dCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3RkaW8i
XSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtp
dF91bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtpdF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0
c19yZXN1bHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVp
bGRzLzExNDYxL3N0ZXBzL3dlYmtpdF9ncHVfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBb
InN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWls
ZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVz
dHNfZ3B1X3Jlc3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgXSwKLSAgICAibnVtYmVyIjogMTE0NjEs
Ci0gICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgIFsiYmxhbWVsaXN0IiwgWyJhYmFydGhAd2Vi
a2l0Lm9yZyJdLCAiQnVpbGQiXSwKLSAgICAgICAgWyJicmFuY2giLCAidHJ1bmsiLCAiQnVpbGQi
XSwKLSAgICAgICAgWyJidWlsZGVybmFtZSIsICJXZWJraXQgTGludXgiLCAiQnVpbGQiXSwKLSAg
ICAgICAgWyJidWlsZG51bWJlciIsIDExNDYxLCAiQnVpbGQiXSwKLSAgICAgICAgWyJnb3RfcmV2
aXNpb24iLCAiOTUzOTUiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ290X3dlYmtpdF9yZXZpc2lv
biIsICI5MjM1OCIsICJTb3VyY2UiXSwKLSAgICAgICAgWyJndGVzdF9maWx0ZXIiLCBudWxsLCAi
RmFjdG9yeSJdLAotICAgICAgICBbIm1hc3Rlcm5hbWUiLCAiY2hyb21pdW0ud2Via2l0IiwgIm1h
c3Rlci5jZmciXSwKLSAgICAgICAgWyJyZXZpc2lvbiIsICI5MjM1OCIsICJCdWlsZCJdLAotICAg
ICAgICBbInNjaGVkdWxlciIsICJzNl93ZWJraXRfcmVsIiwgIlNjaGVkdWxlciJdLAotICAgICAg
ICBbInNsYXZlbmFtZSIsICJ2bTEyNC1tMSIsICJCdWlsZFNsYXZlIl0KLSAgICBdLAotICAgICJy
ZWFzb24iOiAiIiwKLSAgICAicmVxdWVzdHMiOiBbewotICAgICAgICAiYnVpbGRlck5hbWUiOiAi
V2Via2l0IExpbnV4IiwKLSAgICAgICAgImJ1aWxkcyI6IFsxMTQ2MV0sCi0gICAgICAgICJzb3Vy
Y2UiOiB7Ci0gICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICJjaGFu
Z2VzIjogW3sKLSAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAg
ICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXgg
dHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8g
dGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAotICAgICAgICAgICAgICAgICJudW1i
ZXIiOiA0MzcwNywKLSAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAg
ICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjky
MzU3IiwKLSAgICAgICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1
NTA4MSwKLSAgICAgICAgICAgICAgICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAg
ICAgICAgfSwgewotICAgICAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAg
ICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIlVw
ZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJv
eC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9u
dGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0
ZWQucG5nOiIsCi0gICAgICAgICAgICAgICAgImZpbGVzIjogWyJMYXlvdXRUZXN0cy9DaGFuZ2VM
b2ciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9p
bnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3Rl
ZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0
cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5n
Il0sCi0gICAgICAgICAgICAgICAgIm51bWJlciI6IDQzNzA4LAotICAgICAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAg
ICAgICAgICAgICAicmV2aXNpb24iOiAiOTIzNTgiLAotICAgICAgICAgICAgICAgICJyZXZsaW5r
IjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU4IiwKLSAgICAgICAgICAg
ICAgICAid2hlbiI6IDEzMTI0NDQyMzguODU1NTM4LAotICAgICAgICAgICAgICAgICJ3aG8iOiAi
YWJhcnRoQHdlYmtpdC5vcmciCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJoYXNQYXRj
aCI6IGZhbHNlLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IgotICAgICAgICB9LAot
ICAgICAgICAic3VibWl0dGVkQXQiOiAxMzEyNDQ0Mjk4Ljk4OTgxOAotICAgIH1dLAotICAgICJy
ZXN1bHRzIjogMiwKLSAgICAic2xhdmUiOiAidm0xMjQtbTEiLAotICAgICJzb3VyY2VTdGFtcCI6
IHsKLSAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICJjaGFuZ2VzIjogW3sKLSAg
ICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVs
bCwKLSAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBo
YXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0
IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAg
ICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdl
TG9nIl0sCi0gICAgICAgICAgICAibnVtYmVyIjogNDM3MDcsCi0gICAgICAgICAgICAicHJvcGVy
dGllcyI6IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAgICAgICAgICJy
ZXZpc2lvbiI6ICI5MjM1NyIsCi0gICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTI0NDQy
MzguODU1MDgxLAotICAgICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAg
ICAgfSwgewotICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAiY2F0
ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgImNvbW1lbnRzIjogIlVwZGF0ZSBiYXNlbGluZXMg
YWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVj
dGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVs
dGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBu
ZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
c3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nOiIsCi0gICAg
ICAgICAgICAiZmlsZXMiOiBbIkxheW91dFRlc3RzL0NoYW5nZUxvZyIsICJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4
cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBh
aW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVj
dGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmciXSwKLSAgICAgICAgICAgICJu
dW1iZXIiOiA0MzcwOCwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAg
ICAicmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IiwKLSAg
ICAgICAgICAgICJyZXZsaW5rIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MzU4IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTU1MzgsCi0gICAgICAgICAg
ICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICB9XSwKLSAgICAgICAgImhhc1Bh
dGNoIjogZmFsc2UsCi0gICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIKLSAgICB9LAotICAgICJz
dGVwcyI6IFt7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjog
WwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyMjk3LCAyMzAwLjY1NzEwMTQwODM3ODRdCi0gICAg
ICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6
IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGlu
dXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXQotICAgICAg
ICBdLAotICAgICAgICAibmFtZSI6ICJ1cGRhdGVfc2NyaXB0cyIsCi0gICAgICAgICJyZXN1bHRz
IjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVt
YmVyIjogMCwKLSAgICAgICAgInRleHQiOiBbInVwZGF0ZV9zY3JpcHRzIl0sCi0gICAgICAgICJ0
aW1lcyI6IFsxMzEyNDQ0Mjk5LjEwMjgzNCwgMTMxMjQ0NDMwOS4yNzAzMjRdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjA0NTMsIDE3NTgwLjUwMDIzODk2
NDVdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlz
U3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIs
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Vi
a2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlvIl0KLSAgICAg
ICAgXSwKLSAgICAgICAgIm5hbWUiOiAidXBkYXRlIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwg
W11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAx
LAotICAgICAgICAidGV4dCI6IFsidXBkYXRlIiwgInI5NTM5NSIsICJ3ZWJraXQgcjkyMzU4Il0s
Ci0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0MzA5LjI3MDc2MywgMTMxMjQ0NDM5OC40NjgxMzld
LAotICAgICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAg
ICAgICAgImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMTczMTYsIDI2
NTIuNDg1MDQ5OTU4OTQ1Nl0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVl
LAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAg
ICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJr
aXRidWlsZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvY29tcGlsZS9sb2dz
L3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiY29tcGlsZSIsCi0gICAgICAg
ICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAg
InN0ZXBfbnVtYmVyIjogMiwKLSAgICAgICAgInRleHQiOiBbImNvbXBpbGUiXSwKLSAgICAgICAg
InRpbWVzIjogWzEzMTI0NDQzOTguNDY4NTUsIDEzMTI0NDQ0NDEuNjg4MzhdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgOTE5ODAsIDkyMDAyLjEyNjI4MzI1
MjUxXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJp
c1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8i
LCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dl
YmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3Rk
aW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ0ZXN0X3NoZWxsX3Rlc3RzIiwKLSAg
ICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAg
ICAgICAic3RlcF9udW1iZXIiOiAzLAotICAgICAgICAidGV4dCI6IFsidGVzdF9zaGVsbF90ZXN0
cyIsICIxIGRpc2FibGVkIiwgIjIgZmxha3kiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0
NDEuNjg4NzU2LCAxMzEyNDQ0NDUxLjc0OTA4XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0s
IHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAg
ICAgICAgICBbIm91dHB1dCIsIDIwNzcyLCAyMDc3Mi42Mzg1MDM0NDMwODZdCi0gICAgICAgIF0s
Ci0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUs
Ci0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVp
bGRzLzExNDYxL3N0ZXBzL3dlYmtpdF91bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBd
LAotICAgICAgICAibmFtZSI6ICJ3ZWJraXRfdW5pdF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRz
IjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVt
YmVyIjogNCwKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF91bml0X3Rlc3RzIiwgIjEgZGlzYWJs
ZWQiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTEuNzQ5NTc0LCAxMzEyNDQ0NDUyLjMw
NjE0M10sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxs
LAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNDc3
NDA2LCAyNDk4OTE1LjYxNDYyNzU0OTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVk
IjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwot
ICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtp
dF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAid2Via2l0
X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfdGVzdHMiXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDUsCi0gICAgICAg
ICJ0ZXh0IjogWyJ3ZWJraXRfdGVzdHMiLCAiMjAxNCBmaXhhYmxlIiwgIigzNzAgc2tpcHBlZCki
LCAiZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wiPiIsICI8YSBocmVm
PVwiaHR0cDovL3Rlc3QtcmVzdWx0cy5hcHBzcG90LmNvbS9kYXNoYm9hcmRzL2ZsYWtpbmVzc19k
YXNoYm9hcmQuaHRtbCNtYXN0ZXI9Q2hyb21pdW1XZWJraXQmdGVzdHM9ZmFzdC9ib3gtc2hhZG93
L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbFwiPiIsICI8YWJiciB0aXRsZT1cImZhc3Qv
Ym94LXNoYWRvdy9ib3gtc2hhZG93LWNsaXBwZWQtc2xpY2VzLmh0bWxcIj5ib3gtc2hhZG93LWNs
aXBwZWQtc2xpY2VzLmh0bWw8L2FiYnI+IiwgIjwvYT4iLCAiPC9kaXY+Il0sCi0gICAgICAgICJ0
aW1lcyI6IFsxMzEyNDQ0NDUyLjMwNjY5NSwgMTMxMjQ0NDc2OC44ODgyNjZdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjY2ODg0NSwgMjY3Mjc0Ni4zNzIz
NjMyNTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAg
ImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRp
byIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMv
V2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX3Jl
c3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogImFyY2hpdmVf
d2Via2l0X3Rlc3RzX3Jlc3VsdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDYsCi0gICAgICAg
ICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgcmVzdWx0cyJdLAotICAgICAgICAidGlt
ZXMiOiBbMTMxMjQ0NDc2OC44ODg3NDYsIDEzMTI0NDQ3ODEuNDQ0Mzk5XSwKLSAgICAgICAgInVy
bHMiOiB7Ci0gICAgICAgICAgICAibGF5b3V0IHRlc3QgcmVzdWx0cyI6ICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvV2Via2l0X0xpbnV4XHIv
OTUzOTVcck5vbmUiCi0gICAgICAgIH0KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAot
ICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyMTA5NTgs
IDIwODEzOC40OTY1MTgyOTkzXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRy
dWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAg
ICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndl
YmtpdGJ1aWxkZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfZ3B1
X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ3ZWJraXRf
Z3B1X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfZ3B1X3Rlc3RzIl1d
LAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA3LAot
ICAgICAgICAidGV4dCI6IFsid2Via2l0X2dwdV90ZXN0cyIsICIxNDggZml4YWJsZSIsICIoMjQg
c2tpcHBlZCkiLCAiZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wiPiIs
ICI8YSBocmVmPVwiaHR0cDovL3Rlc3QtcmVzdWx0cy5hcHBzcG90LmNvbS9kYXNoYm9hcmRzL2Zs
YWtpbmVzc19kYXNoYm9hcmQuaHRtbCNtYXN0ZXI9Q2hyb21pdW1XZWJraXQmdGVzdHM9Y29tcG9z
aXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFwiPiIsICI8YWJiciB0aXRs
ZT1cImNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWxcIj50aWxl
ZC1sYXllci1yZWN1cnNpb24uaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rpdj4iXSwKLSAgICAg
ICAgInRpbWVzIjogWzEzMTI0NDQ3ODEuNDQ0OTAzLCAxMzEyNDQ0OTY2Ljg1NjA3NF0sCi0gICAg
ICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAi
ZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAxNDg4MjUsIDE0NzgyMi4x
MDc0Mjc3MDcyXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAg
ICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0
c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAi
YXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMiLAotICAgICAgICAicmVzdWx0cyI6IFsw
LCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6
IDgsCi0gICAgICAgICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgZ3B1IHJlc3VsdHMi
XSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ5NjYuODU2NTc1LCAxMzEyNDQ0OTcwLjQ1ODY1
NV0sCi0gICAgICAgICJ1cmxzIjogewotICAgICAgICAgICAgImxheW91dCB0ZXN0IGdwdSByZXN1
bHRzIjogImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvYnVpbGRib3QvbGF5b3V0X3Rlc3RfcmVz
dWx0cy9XZWJraXRfTGludXhfLV9HUFVcci85NTM5NVxyTm9uZSIKLSAgICAgICAgfQotICAgIH1d
LAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Via2l0X3Rlc3RzIiwgIndlYmtpdF9ncHVfdGVz
dHMiXSwKLSAgICAidGltZXMiOiBbMTMxMjQ0NDI5OS4xMDIxNiwgMTMxMjQ0NDk3MC40NTkxMzhd
Ci19OwotCi10ZXN0KCJidWlsZGVyc0ZhaWxpbmdTdGVwUmVxdXJlZEZvclRlc3RDb3ZlcmFnZSIs
IDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRv
cigpOwotCi0gICAgdmFyIGZhaWxpbmdCdWlsZEluZm9KU09OID0gSlNPTi5wYXJzZShKU09OLnN0
cmluZ2lmeShrRXhhbXBsZUJ1aWxkSW5mb0pTT04pKTsKLSAgICBmYWlsaW5nQnVpbGRJbmZvSlNP
Ti5udW1iZXIgPSAxMTQ2MDsKLSAgICBmYWlsaW5nQnVpbGRJbmZvSlNPTi5zdGVwc1syXS5yZXN1
bHRzWzBdID0gMTsKLQotICAgIHZhciByZXF1ZXN0ZWRVUkxzID0gW107Ci0gICAgc2ltdWxhdG9y
LmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICByZXF1ZXN0ZWRV
UkxzLnB1c2godXJsKTsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBpZiAoL1wvanNvblwvYnVpbGRlcnMkLy5leGVjKHVybCkpCi0g
ICAgICAgICAgICAgICAgY2FsbGJhY2soa0V4YW1wbGVCdWlsZGVyU3RhdHVzSlNPTik7Ci0gICAg
ICAgICAgICBlbHNlIGlmICgvV2Via2l0JTIwTGludXgvLmV4ZWModXJsKSkKLSAgICAgICAgICAg
ICAgICBjYWxsYmFjayhrRXhhbXBsZUJ1aWxkSW5mb0pTT04pOwotICAgICAgICAgICAgZWxzZSBp
ZiAoL1dlYmtpdCUyME1hYzEwXC42JTIwXChDR1wpLy5leGVjKHVybCkpCi0gICAgICAgICAgICAg
ICAgY2FsbGJhY2soZmFpbGluZ0J1aWxkSW5mb0pTT04pOwotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgb2soZmFsc2UsICJVbmV4cGVjdGVkIFVSTDogIiArIHVybCk7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBidWlsZGVy
cy5idWlsZGVyc0ZhaWxpbmdTdGVwUmVxdXJlZEZvclRlc3RDb3ZlcmFnZShmdW5jdGlvbihidWls
ZGVyTmFtZUxpc3QpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWlsZGVyTmFtZUxpc3QsIFsi
V2Via2l0IE1hYzEwLjYgKENHKSJdKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZWVw
RXF1YWwocmVxdWVzdGVkVVJMcywgWwotICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
cC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycyIsCi0gICAgICAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC9qc29uL2J1aWxkZXJzL1dlYmtpdCUyMExpbnV4
L2J1aWxkcy8xMTQ2MSIsCi0gICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtLndlYmtpdC9qc29uL2J1aWxkZXJzL1dlYmtpdCUyME1hYzEwLjYlMjAoQ0cpL2J1aWxkcy8x
MTQ2MCIsCi0gICAgXSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jaGVj
a291dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY2hlY2tvdXQuanMJKHJldmlz
aW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NoZWNrb3V0LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIGNoZWNrb3V0ID0gY2hlY2tvdXQg
fHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFyIGtXZWJLaXRUcnVuayA9ICdodHRwOi8vc3Zu
LndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvJzsKLQotY2hlY2tvdXQuc3VidmVy
c2lvblVSTEZvclRlc3QgPSBmdW5jdGlvbih0ZXN0TmFtZSkKLXsKLSAgICByZXR1cm4ga1dlYktp
dFRydW5rICsgJ0xheW91dFRlc3RzLycgKyB0ZXN0TmFtZTsKLX07Ci0KLWNoZWNrb3V0LmlzQXZh
aWxhYmxlID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgbmV0LmFqYXgoewotICAgICAgICB1
cmw6IGNvbmZpZy5rTG9jYWxTZXJ2ZXJVUkwgKyAnL3BpbmcnLAotICAgICAgICBzdWNjZXNzOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwotICAgICAgICB9LAotICAg
ICAgICBlcnJvcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0g
ICAgICAgIH0sCi0gICAgfSk7Ci19OwotCi1jaGVja291dC51cGRhdGVFeHBlY3RhdGlvbnMgPSBm
dW5jdGlvbihmYWlsdXJlSW5mb0xpc3QsIGNhbGxiYWNrKQotewotICAgIG5ldC5wb3N0KGNvbmZp
Zy5rTG9jYWxTZXJ2ZXJVUkwgKyAnL3VwZGF0ZWV4cGVjdGF0aW9ucycsIEpTT04uc3RyaW5naWZ5
KGZhaWx1cmVJbmZvTGlzdCksIGZ1bmN0aW9uKCkgewotICAgICAgICBjYWxsYmFjaygpOwotICAg
IH0pOwotfTsKLQotY2hlY2tvdXQub3B0aW1pemVCYXNlbGluZXMgPSBmdW5jdGlvbih0ZXN0TmFt
ZSwgY2FsbGJhY2spCi17Ci0gICAgbmV0LnBvc3QoY29uZmlnLmtMb2NhbFNlcnZlclVSTCArICcv
b3B0aW1pemViYXNlbGluZXM/JyArICQucGFyYW0oewotICAgICAgICAndGVzdCc6IHRlc3ROYW1l
LAotICAgIH0pLCBmdW5jdGlvbigpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07
Ci0KLWNoZWNrb3V0LnJlYmFzZWxpbmUgPSBmdW5jdGlvbihmYWlsdXJlSW5mb0xpc3QsIGNhbGxi
YWNrKQotewotICAgIGJhc2UuY2FsbEluU2VxdWVuY2UoZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNh
bGxiYWNrKSB7Ci0gICAgICAgIHZhciBleHRlbnNpb25MaXN0ID0gQXJyYXkucHJvdG90eXBlLmNv
bmNhdC5hcHBseShbXSwgZmFpbHVyZUluZm8uZmFpbHVyZVR5cGVMaXN0Lm1hcChyZXN1bHRzLmZh
aWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KSk7Ci0gICAgICAgIGJhc2UuY2FsbEluU2VxdWVuY2Uo
ZnVuY3Rpb24oZXh0ZW5zaW9uLCBjYWxsYmFjaykgewotICAgICAgICAgICAgbmV0LnBvc3QoY29u
ZmlnLmtMb2NhbFNlcnZlclVSTCArICcvcmViYXNlbGluZT8nICsgJC5wYXJhbSh7Ci0gICAgICAg
ICAgICAgICAgJ2J1aWxkZXInOiBmYWlsdXJlSW5mby5idWlsZGVyTmFtZSwKLSAgICAgICAgICAg
ICAgICAndGVzdCc6IGZhaWx1cmVJbmZvLnRlc3ROYW1lLAotICAgICAgICAgICAgICAgICdleHRl
bnNpb24nOiBleHRlbnNpb24KLSAgICAgICAgICAgIH0pLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIGV4dGVuc2lv
bkxpc3QsIGNhbGxiYWNrKTsKLSAgICB9LCBmYWlsdXJlSW5mb0xpc3QsIGZ1bmN0aW9uKCkgewot
ICAgICAgICB2YXIgdGVzdE5hbWVMaXN0ID0gYmFzZS51bmlxdWlmeUFycmF5KGZhaWx1cmVJbmZv
TGlzdC5tYXAoZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsgcmV0dXJuIGZhaWx1cmVJbmZvLnRlc3RO
YW1lOyB9KSk7Ci0gICAgICAgIGJhc2UuY2FsbEluU2VxdWVuY2UoY2hlY2tvdXQub3B0aW1pemVC
YXNlbGluZXMsIHRlc3ROYW1lTGlzdCwgY2FsbGJhY2spOwotICAgIH0pOwotfTsKLQotfSkoKTsK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jaGVja291dF91bml0dGVzdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL2NoZWNrb3V0X3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVs
ZSgiY2hlY2tvdXQiKTsKLQotdGVzdCgic3VidmVyc2lvblVSTEZvclRlc3QiLCAxLCBmdW5jdGlv
bigpIHsKLSAgICBlcXVhbHMoY2hlY2tvdXQuc3VidmVyc2lvblVSTEZvclRlc3QoInBhdGgvdG8v
dGVzdC5odG1sIiksICJodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1
bmsvTGF5b3V0VGVzdHMvcGF0aC90by90ZXN0Lmh0bWwiKTsKLX0pOwotCi10ZXN0KCJ1cGRhdGVF
eHBlY3RhdGlvbnMiLCA0LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5l
dHdvcmtTaW11bGF0b3IoKTsKLSAgICBzaW11bGF0b3IucG9zdCA9IGZ1bmN0aW9uKHVybCwgZGF0
YSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBlcXVhbHModXJsLCAnaHR0cDovLzEyNy4wLjAu
MTo4MTI3L3VwZGF0ZWV4cGVjdGF0aW9ucycpOwotICAgICAgICBlcXVhbHMoZGF0YSwgJ1t7ImJ1
aWxkZXJOYW1lIjoiV2ViS2l0IExpbnV4IiwidGVzdE5hbWUiOiJhbm90aGVyL3Rlc3Quc3ZnIiwi
ZmFpbHVyZVR5cGVMaXN0IjpbIklNQUdFIl19XScpOwotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1
bGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1
bmN0aW9uKCkgewotICAgICAgICBjaGVja291dC51cGRhdGVFeHBlY3RhdGlvbnMoW3sKLSAgICAg
ICAgICAgICdidWlsZGVyTmFtZSc6ICdXZWJLaXQgTGludXgnLAotICAgICAgICAgICAgJ3Rlc3RO
YW1lJzogJ2Fub3RoZXIvdGVzdC5zdmcnLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6
IFsnSU1BR0UnXSwKLSAgICAgICAgfV0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgb2sodHJ1
ZSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoIm9wdGltaXplQmFzZWxpbmVz
IiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxh
dG9yKCk7Ci0gICAgc2ltdWxhdG9yLnBvc3QgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgZXF1YWxzKHVybCwgJ2h0dHA6Ly8xMjcuMC4wLjE6ODEyNy9vcHRpbWl6ZWJh
c2VsaW5lcz90ZXN0PWFub3RoZXIlMkZ0ZXN0LnN2ZycpOwotICAgICAgICBzaW11bGF0b3Iuc2No
ZWR1bGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0
KGZ1bmN0aW9uKCkgewotICAgICAgICBjaGVja291dC5vcHRpbWl6ZUJhc2VsaW5lcygnYW5vdGhl
ci90ZXN0LnN2ZycsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgb2sodHJ1ZSk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoInJlYmFzZWxpbmUiLCAzLCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHZhciBy
ZXF1ZXN0ZWRVUkxzID0gW107Ci0gICAgc2ltdWxhdG9yLnBvc3QgPSBmdW5jdGlvbih1cmwsIGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAg
IHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGNhbGxiYWNrKTsKLSAgICB9OwotCi0gICAgc2lt
dWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNoZWNrb3V0LnJlYmFzZWxpbmUo
W3sKLSAgICAgICAgICAgICdidWlsZGVyTmFtZSc6ICdXZWJLaXQgTGludXgnLAotICAgICAgICAg
ICAgJ3Rlc3ROYW1lJzogJ2Fub3RoZXIvdGVzdC5zdmcnLAotICAgICAgICAgICAgJ2ZhaWx1cmVU
eXBlTGlzdCc6IFsnSU1BR0UnXSwKLSAgICAgICAgfSwgewotICAgICAgICAgICAgJ2J1aWxkZXJO
YW1lJzogJ1dlYktpdCBNYWMxMC42JywKLSAgICAgICAgICAgICd0ZXN0TmFtZSc6ICdhbm90aGVy
L3Rlc3Quc3ZnJywKLSAgICAgICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiBbJ0lNQUdFK1RFWFQn
XSwKLSAgICAgICAgfSwgewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogJ1dlYmtpdCBWaXN0
YScsCi0gICAgICAgICAgICAndGVzdE5hbWUnOiAnZmFzdC90ZXN0Lmh0bWwnLAotICAgICAgICAg
ICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnVEVYVCddLAotICAgICAgICB9XSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBvayh0cnVlKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZWVw
RXF1YWwocmVxdWVzdGVkVVJMcywgWwotICAgICAgICAiaHR0cDovLzEyNy4wLjAuMTo4MTI3L3Jl
YmFzZWxpbmU/YnVpbGRlcj1XZWJLaXQrTGludXgmdGVzdD1hbm90aGVyJTJGdGVzdC5zdmcmZXh0
ZW5zaW9uPXBuZyIsCi0gICAgICAgICJodHRwOi8vMTI3LjAuMC4xOjgxMjcvcmViYXNlbGluZT9i
dWlsZGVyPVdlYktpdCtNYWMxMC42JnRlc3Q9YW5vdGhlciUyRnRlc3Quc3ZnJmV4dGVuc2lvbj10
eHQiLAotICAgICAgICAiaHR0cDovLzEyNy4wLjAuMTo4MTI3L3JlYmFzZWxpbmU/YnVpbGRlcj1X
ZWJLaXQrTWFjMTAuNiZ0ZXN0PWFub3RoZXIlMkZ0ZXN0LnN2ZyZleHRlbnNpb249cG5nIiwKLSAg
ICAgICAgImh0dHA6Ly8xMjcuMC4wLjE6ODEyNy9yZWJhc2VsaW5lP2J1aWxkZXI9V2Via2l0K1Zp
c3RhJnRlc3Q9ZmFzdCUyRnRlc3QuaHRtbCZleHRlbnNpb249dHh0IiwKLSAgICAgICAgImh0dHA6
Ly8xMjcuMC4wLjE6ODEyNy9vcHRpbWl6ZWJhc2VsaW5lcz90ZXN0PWFub3RoZXIlMkZ0ZXN0LnN2
ZyIsCi0gICAgICAgICJodHRwOi8vMTI3LjAuMC4xOjgxMjcvb3B0aW1pemViYXNlbGluZXM/dGVz
dD1mYXN0JTJGdGVzdC5odG1sIgotICAgIF0pOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvY29uZmlnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb25maWcu
anMJKHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbmZpZy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBjb25maWcgPSBjb25m
aWcgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotY29uZmlnLmtCdWlsZGVycyA9IFsKLSAgICAn
V2Via2l0IFdpbicsCi0gICAgJ1dlYmtpdCBWaXN0YScsCi0gICAgJ1dlYmtpdCBXaW43JywKLSAg
ICAnV2Via2l0IFdpbiAoZGJnKSgxKScsCi0gICAgJ1dlYmtpdCBXaW4gKGRiZykoMiknLAotICAg
ICdXZWJraXQgTGludXgnLAotICAgICdXZWJraXQgTGludXggMzInLAotICAgICdXZWJraXQgTGlu
dXggKGRiZykoMSknLAotICAgICdXZWJraXQgTGludXggKGRiZykoMiknLAotICAgICdXZWJraXQg
TWFjMTAuNSAoQ0cpJywKLSAgICAnV2Via2l0IE1hYzEwLjUgKENHKShkYmcpKDEpJywKLSAgICAn
V2Via2l0IE1hYzEwLjUgKENHKShkYmcpKDIpJywKLSAgICAnV2Via2l0IE1hYzEwLjYgKENHKScs
Ci0gICAgJ1dlYmtpdCBNYWMxMC42IChDRykoZGJnKScsCi1dOwotCi1jb25maWcua0J1aWxkZXJz
VGhhdE9ubHlDb21waWxlID0gWwotICAgICdXZWJraXQgV2luIEJ1aWxkZXInLAotICAgICdXZWJr
aXQgV2luIEJ1aWxkZXIgKGRiZyknLAotICAgIC8vIEZJWE1FOiBXaGVyZSBpcyB0aGUgTGludXgg
QnVpbGRlcj8KLSAgICAnV2Via2l0IE1hYyBCdWlsZGVyJywKLSAgICAnV2Via2l0IE1hYyBCdWls
ZGVyIChkYmcpJywKLSAgICAnV2luIEJ1aWxkZXInLAotICAgICdNYWMgQ2xhbmcgQnVpbGRlciAo
ZGJnKScsCi1dOwotCi1jb25maWcua1RyYWNVUkwgPSAnaHR0cDovL3RyYWMud2Via2l0Lm9yZyc7
Ci1jb25maWcua0J1Z3ppbGxhVVJMID0gJ2h0dHBzOi8vYnVncy53ZWJraXQub3JnJzsKLWNvbmZp
Zy5rTG9jYWxTZXJ2ZXJVUkwgPSAnaHR0cDovLzEyNy4wLjAuMTo4MTI3JzsKLQotY29uZmlnLmtS
ZXZpc2lvbkF0dHIgPSAnZGF0YS1yZXZpc2lvbic7Ci1jb25maWcua1Rlc3ROYW1lQXR0ciA9ICdk
YXRhLXRlc3QtbmFtZSc7Ci1jb25maWcua0J1aWxkZXJOYW1lQXR0ciA9ICdkYXRhLWJ1aWxkZXIt
bmFtZSc7Ci1jb25maWcua0ZhaWx1cmVDb3VudEF0dHIgPSAnZGF0YS1mYWlsdXJlLWNvdW50JzsK
LWNvbmZpZy5rRmFpbHVyZVR5cGVzQXR0ciA9ICdkYXRhLWZhaWx1cmUtdHlwZXMnOwotY29uZmln
LmtJbmZvYmFyVHlwZUF0dHIgPSAnZGF0YS1pbmZvYmFyLXR5cGUnOwotCi12YXIga1Rlbk1pbnV0
ZXNJbk1pbGxpc2Vjb25kcyA9IDEwICogNjAgKiAxMDAwOwotY29uZmlnLmtVcGRhdGVGcmVxdWVu
Y3kgPSBrVGVuTWludXRlc0luTWlsbGlzZWNvbmRzOwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL2NvbnRyb2xsZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb250
cm9sbGVycy5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29udHJvbGxl
cnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIg
Y29udG9sbGVycyA9IGNvbnRvbGxlcnMgfHwge307Ci0KLShmdW5jdGlvbigpewotCi1jb250b2xs
ZXJzLlJlc3VsdHNEZXRhaWxzID0gYmFzZS5leHRlbmRzKE9iamVjdCwgewotICAgIGluaXQ6IGZ1
bmN0aW9uKHZpZXcsIHJlc3VsdHNCeVRlc3QpCi0gICAgewotICAgICAgICB0aGlzLl92aWV3ID0g
dmlldzsKLSAgICAgICAgdGhpcy5fcmVzdWx0c0J5VGVzdCA9IHJlc3VsdHNCeVRlc3Q7Ci0KLSAg
ICAgICAgdGhpcy5fdmlldy5zZXRUZXN0TGlzdChPYmplY3Qua2V5cyh0aGlzLl9yZXN1bHRzQnlU
ZXN0KSk7Ci0gICAgICAgICQodGhpcy5fdmlldykuYmluZCgndGVzdHNlbGVjdGVkJywgdGhpcy5v
blRlc3RTZWxlY3RlZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5kKCdi
dWlsZGVyc2VsZWN0ZWQnLCB0aGlzLm9uQnVpbGRlclNlbGVjdGVkLmJpbmQodGhpcykpOwotICAg
ICAgICAkKHRoaXMuX3ZpZXcpLmJpbmQoJ3JlYmFzZWxpbmUnLCB0aGlzLm9uUmViYXNlbGluZS5i
aW5kKHRoaXMpKTsKLSAgICAgICAgLy8gRklYTUU6IEJpbmQgdGhlIG5leHQvcHJldmlvdXMgZXZl
bnRzLgotICAgIH0sCi0gICAgX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXI6IGZ1bmN0aW9u
KHRlc3ROYW1lLCBidWlsZGVyTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKLSAgICAgICAgICAgICdidWlsZGVyTmFtZSc6IGJ1
aWxkZXJOYW1lLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFpbHVy
ZVR5cGVMaXN0KHRoaXMuX3Jlc3VsdHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJOYW1lXS5hY3R1
YWwpCi0gICAgICAgIH0KLSAgICB9LAotICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgICQodGhpcy5fdmlldykuZGV0YWNoKCk7Ci0gICAgfSwKLSAgICBzaG93VGVzdDogZnVu
Y3Rpb24odGVzdE5hbWUpCi0gICAgewotICAgICAgICB2YXIgYnVpbGRlck5hbWVMaXN0ID0gT2Jq
ZWN0LmtleXModGhpcy5fcmVzdWx0c0J5VGVzdFt0ZXN0TmFtZV0pOwotICAgICAgICB0aGlzLl92
aWV3LnNldEJ1aWxkZXJMaXN0KGJ1aWxkZXJOYW1lTGlzdCkKLSAgICAgICAgdGhpcy5fdmlldy5z
aG93UmVzdWx0cyh0aGlzLl9mYWlsdXJlSW5mb0ZvclRlc3RBbmRCdWlsZGVyKHRlc3ROYW1lLCBi
dWlsZGVyTmFtZUxpc3RbMF0pKTsKLSAgICB9LAotICAgIG9uVGVzdFNlbGVjdGVkOiBmdW5jdGlv
bihldmVudCwgdGVzdE5hbWUpCi0gICAgewotICAgICAgICB0aGlzLnNob3dUZXN0KHRlc3ROYW1l
KQotICAgIH0sCi0gICAgb25CdWlsZGVyU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0
aGlzLl92aWV3LnNob3dSZXN1bHRzKHRoaXMuX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXIo
dGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKSwgdGhpcy5fdmlldy5jdXJyZW50QnVpbGRlck5h
bWUoKSkpOwotICAgIH0sCi0gICAgb25SZWJhc2VsaW5lOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIHRlc3ROYW1lID0gdGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKTsKLSAgICAgICAgdmFy
IGJ1aWxkZXJOYW1lID0gdGhpcy5fdmlldy5jdXJyZW50QnVpbGRlck5hbWUoKTsKLSAgICAgICAg
bW9kZWwucXVldWVGb3JSZWJhc2VsaW5lKHsKLSAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRlc3RO
YW1lLAotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogYnVpbGRlck5hbWUKLSAgICAgICAgfSk7
Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNvbi1ncmVl
bi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Zhdmljb24tZ3JlZW4ucG5nCShy
ZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9mYXZpY29uLWdyZWVuLnBuZwkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAABAAAAAQCAYA
AAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJ
ZTwAAAKfSURBVDjLpZPrS1NhHMf9O3bOdmwDCWREIYKEUHsVJBI7mg3FvCxL09290jZj2EyLMnJe
xkgpLbPUanNOberU5taUMnHZUULMvelCtWF0sW/n7MVMEiN64AsPD8/n83uucQDi/id/DBT4Doly
pw/qsz0pTMbj/WHpiDgsdSUyUmeiPt2+V7SrIM+bSss8ySGdR4abQQv6lrui6VxsRonrGCS9VEjS
Q9E7Ci3YqnTmeFLk6pwRztV+2F5eg2muMhqu71jtQ+NMFQ7Y+JFkG5/eJsjxpAgz3UnrHMxNrAmU
ocJfAs3MGejYlLOp9p2F/fU9XJyqgNhCrouvk8KYQOZOMqjGsqKVOZgDVd5TUEwXQjFVAPVUIdxr
gzB4lXCwktyeI0i4QhpigowRMdMZbIY12IQKLV8xlE/kLJgP5SQbTz7G37jAtVBkDW3PG2Gba0R8
PcnEBEftCRsPVm6jNqCB1lvErmQAix/moZooxNjaUBT+sfkdbc8uwTBRjL5gJwRGYiMmkNynNvqX
u2H0q1Dr1+LT149R6P2XtzHYMlsPtSsbevdp9Ac7IKj5XdBDMTfmm9C+cBm6STnMvmpEvn2Owps/
N2F5egFlzixoWEFLoA7tXjOoKmJrC6m3BAb5QBrsK3dRPSGH2n0SddPlWHq3gLbZBpQOHofCcQI6
Zw7sr7qRbj0MqpLYOsRkK1+4j70as0eDh8wdVI7mQTucA9WQDEoHFw7OxqOlLhiHiiFQ89YpNSHc
9pASm0g6voGImNxlcLCS1oAZ+tEinBuWo5Xdgp2F9c4i8Et5ERamd3zKexpImjIRIWmHBO1+M3pf
WNE7b4XFa0JaSyoECi1eiFIR9K6fiTpPiigDoadqCEag5YUFKl6Yrciw0VOlhOivv/Ff8wtn0Kzl
ebrUYwAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9mYXZpY29uLXJlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L2Zhdmljb24tcmVkLnBuZwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2
aWNvbi1yZWQucG5nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAsMCBAQAotiVBORw0KLRoKLQAA
AA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAr8g3BYrpAAAAGXRFWHRTb2Z0d2FyZQBB
ZG9iZSBJbWFnZVJlYWR5ccllPAAAAk9JREFUOMulk8tLlGEUxh+/1AmV6VNBnBFvY4qUq4g24cYu
UEQEQ4vEC7jqgvQXRBAV1aLNQKtaeMFoMeBOEIyiIqSFQ41OqaOYOnYZnRSdZuZ9z/O2sL4ZszZ1
du/hnN95Du958owx+J/I/z0ht6800Jh2Q3aRrCQJkp9I9lM4ZN/pj+bW5+UqULcu+w1NYCuv0FPY
sB/5bvd2fmMdyUgEVnJ9hZTeivtPgrsAmZuX/IbsS1fUFBc1NUJiC2BsAQBgeWpgeWuxMRVBavrd
FkW6qx8MBx1A+sZFH8kXmcoab3FTEzKvRgEARdceAgA2r/cANChsPYn18CQ2IxMxIVv3PxqZswBA
RHckLVe22RgYZlejJkQbJMdG4G4+AFNS7tVKdQCABQBa605XYyNkaR6GBhQDo7kDQCWQDJGei2Jf
cwuUUp25gKoC24ZenIfRdCY6P5MhRG3nU7NRFNhl0EpXZQFKw4hxGn9NVNPh7Aot6idECAihtUKO
ArWcjq/B8tQ6UkUR31+OYXP4sTOdisivrkMyHodWejlXwcC38Fvs8dY5xaIId89VlJy7ACpCNCFC
uOp8+BJ6A631gANQSg1mVmOxxGQYRW2nHMha4B5WA3chsv22T5/B13AIicWZmNZ6cMchTXUe81Ok
zz54pLi0uQWp+TmkZqMwxsBV74Or3od4OISPr0e3SHa3PX0f3HXKofNH/UIG9pZ5PeUth+CyS2EM
kEqs4fPEOBJLsyske48/+xD8oxcAYPzs4QaS7RR2kbLTTOTQieczfzfTv8QPldGvTGoF6/8AAAAA
SUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2Fy
ZGVuLW8tbWF0aWMuaHRtbAkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2Fy
ZGVuLW8tbWF0aWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQCBKYW1lcywg
YSB3ZWIgZGV2ZWxvcGVyIGZyb20gQmlybWluZ2hhbSwgCiA8aHRtbD4KIDxoZWFkPgogPHRpdGxl
PkdhcmRlbi1PLU1hdGljPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibWFp
bi5jc3MiPgotPGxpbmsgcmVsPSJpY29uIiBpZD0iZmF2aWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBo
cmVmPSJmYXZpY29uLWdyZWVuLnBuZyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0
eWxlcy9tYWluLmNzcyI+Cis8bGluayByZWw9Imljb24iIGlkPSJmYXZpY29uIiB0eXBlPSJpbWFn
ZS9wbmciIGhyZWY9ImltYWdlcy9mYXZpY29uLWdyZWVuLnBuZyI+CiA8L2hlYWQ+CiA8Ym9keT4K
IDxkaXYgY2xhc3M9ImJ1dHRlcmJhciI+PHNwYW4gY2xhc3M9InN0YXR1cyI+TG9hZGluZy4uLjwv
c3Bhbj48L2Rpdj4KQEAgLTUwLDE4ICs1MCwxOCBAQCBKYW1lcywgYSB3ZWIgZGV2ZWxvcGVyIGZy
b20gQmlybWluZ2hhbSwgCiAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+PC9kaXY+CiA8L2Rpdj4K
IDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVy
eS8xLjYuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0iY29uZmlnLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiYXNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJuZXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IlRyYWMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9IkJ1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJidWlsZGVycy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InJlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InVpLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJ1aS9yZXN1bHRzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJt
b2RlbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iY29udHJvbGxlcnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Im1haW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMv
Y29uZmlnLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL2Jhc2UuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVnemls
bGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvYnVpbGRlcnMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
cy91aS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9yZXN1bHRzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL21vZGVsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHRzL2NvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHRzL21haW4uanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4
Lmh0bWwJKHJldmlzaW9uIDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwzMiBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci0gICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJUZXN0RmFpbHVyZXMuY3NzIj48L2xpbms+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvVGVzdEZhaWx1cmVzLmNzcyI+PC9saW5rPgogICAg
IDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVy
eS8xLjYuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KIAotICAgIDxzY3JpcHQgc3JjPSJjb25m
aWcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJiYXNlLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0ibmV0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iVHJhYy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvY29uZmlnLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0ic2NyaXB0cy9uZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJzY3Jp
cHRzL1RyYWMuanMiPjwvc2NyaXB0PgogCi0gICAgPHNjcmlwdCBzcmM9IlV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik5ld0J1Z0Zvcm0uanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJUZXN0UmVsYXRlZEJ1Z0Zvcm0uanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJGYWlsaW5nVGVzdHNCdWdGb3JtLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iRmxha3lUZXN0QnVnRm9ybS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNjcmlw
dHMvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9OZXdC
dWdGb3JtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9UZXN0UmVsYXRl
ZEJ1Z0Zvcm0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZhaWxpbmdU
ZXN0c0J1Z0Zvcm0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5
VGVzdEJ1Z0Zvcm0uanMiPjwvc2NyaXB0PgogCi0gICAgPHNjcmlwdCBzcmM9IkJ1Z3ppbGxhLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iQnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJCdWlsZGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iRmxh
a3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJMYXlv
dXRUZXN0SGlzdG9yeUFuYWx5emVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iTGF5
b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJOUldU
UmVzdWx0c1BhcnNlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik9SV1RSZXN1bHRz
UGFyc2VyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iUGVyc2lzdGVudENhY2hlLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iVmlld0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJXZWJLaXRCdWd6aWxsYS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9IldlYktpdEJ1aWxkYm90LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
c2NyaXB0cy9CdWd6aWxsYS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNjcmlwdHMv
QnVpbGRib3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxkZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERl
dGVjdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9MYXlvdXRUZXN0
SGlzdG9yeUFuYWx5emVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9M
YXlvdXRUZXN0UmVzdWx0c0xvYWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNj
cmlwdHMvTlJXVFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJz
Y3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
c2NyaXB0cy9QZXJzaXN0ZW50Q2FjaGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJz
Y3JpcHRzL1ZpZXdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ic2Ny
aXB0cy9XZWJLaXRCdWd6aWxsYS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InNjcmlw
dHMvV2ViS2l0QnVpbGRib3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+CiAgICAgICAgIHZh
ciB2aWV3Q29udHJvbGxlciA9IG5ldyBWaWV3Q29udHJvbGxlcihuZXcgV2ViS2l0QnVpbGRib3Qo
KSk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5jc3MKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uY3NzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9tYWluLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMSwzMzMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1ib2R5IHsKLSAgICBmb250LWZhbWlseTogVGFob21hLCBzYW5zLXNlcmlm
OwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsK
LX0KLQotYSB7Ci0gICAgY29sb3I6IEJsYWNrOwotfQotCi10YWJsZSB7Ci0gICAgdGFibGUtbGF5
b3V0OiBmaXhlZDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBib3JkZXItY29sbGFwc2U6IGNvbGxh
cHNlOwotfQotCi10ZCwgdGggewotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgdmVydGljYWwt
YWxpZ246IHRvcDsKLSAgICAvKiBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYzZjNmM2OyAqLwot
fQotCi10ZDpsYXN0LW9mLXR5cGUsIHRoOmxhc3Qtb2YtdHlwZSB7Ci0gICAgLyogYm9yZGVyLXJp
Z2h0OiAwcHg7ICovCi19Ci0KLXRoIHsKLSAgICAvKiBib3JkZXItYm90dG9tOiAxcHggc29saWQg
I2M2YzZjNjsgKi8KLX0KLQotYnV0dG9uIHsKLSAgICBib3JkZXItcmFkaXVzOiAycHg7Ci0gICAg
YmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2Yx
ZjFmMSk7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOwotICAgIGJv
cmRlci1yYWRpdXM6IDJweDsKLSAgICBjb2xvcjogIzY2NjsKLSAgICBjdXJzb3I6IHBvaW50ZXI7
Ci0gICAgZm9udC1zaXplOiAxMXB4OwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgIGhlaWdo
dDogMjlweDsKLSAgICBsaW5lLWhlaWdodDogMjdweDsKLSAgICBtYXJnaW46IDExcHggNnB4Owot
ICAgIG1pbi13aWR0aDogNTRweDsKLSAgICBwYWRkaW5nOiAwIDhweDsKLSAgICB0ZXh0LWFsaWdu
OiBjZW50ZXIKLX0KLQotYnV0dG9uLm5leHQgewotICAgIG1hcmdpbi1sZWZ0OiAwcHg7Ci19Ci0K
LWJ1dHRvbi5wcmV2aW91cyB7Ci0gICAgbWFyZ2luLXJpZ2h0OiAwcHg7Ci19Ci0KLWJ1dHRvbltk
aXNhYmxlZF0gewotICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLX0KLQotYnV0dG9uOmhvdmVyIHsK
LSAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4Zjhm
OCwjZjFmMWYxKTsKLSAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCww
LDAuMSk7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODsKLSAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBsaW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgI2M2YzZjNjsKLSAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLDAsMCww
LjEpOwotICAgIGNvbG9yOiAjMzMzCi19Ci0KLWJ1dHRvbjpmb2N1cyB7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgIzRkOTBmZTsKLSAgICBvdXRsaW5lOiBub25lCi19Ci0KLWJ1dHRvbi5kZWZhdWx0
IHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjMzA3OUVEOwotICAgIGNvbG9yOiB3aGl0ZTsKLSAg
ICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwj
NDc4N2VkKTsKLX0KLQotYnV0dG9uLmRlZmF1bHQ6aG92ZXIgewotICAgIGJvcmRlcjogMXB4IHNv
bGlkICMyZjViYjc7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6ICMz
NTdhZTg7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVm
dCB0b3AsbGVmdCBib3R0b20sZnJvbSgjNGQ5MGZlKSx0bygjMzU3YWU4KSk7Ci19Ci0KLS5jbGVh
ciB7Ci0gICAgY2xlYXI6IGJvdGg7Ci19Ci0KLS8qKiogYnV0dGVyYmFyICoqKi8KLQotLmJ1dHRl
cmJhciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKLSAgICBwYWRkaW5nOiA1cHg7
Ci0gICAgcG9zaXRpb246IGZpeGVkOwotICAgIHRvcDogMHB4OwotICAgIHJpZ2h0OiAwcHg7Ci19
Ci0KLS5idXR0ZXJiYXIgLmhpZGUgewotICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwotfQotCi0vKioq
IGluZm9iYXIgKioqLwotCi0uaW5mb2JhciB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBDb3Juc2lsazsKLSAgICBib3JkZXI6IDVweCBzb2xpZCBUb21hdG87Ci0g
ICAgcGFkZGluZzogMTBweDsKLSAgICBtYXJnaW46IDVweCBhdXRvOwotICAgIGZvbnQtc2l6ZTog
MTVweDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5p
bmZvYmFyIC5zdGF0dXMgYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLX0KLQotLmluZm9i
YXIgLnN0YXR1cyB1bCB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgbGlz
dC1zdHlsZTogbm9uZTsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgcGFkZGluZzog
MCAwIDAgMTBweDsKLX0KLQotLmluZm9iYXIgLnN0YXR1cyBsaSB7Ci0gICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwotICAgIG1hcmdpbjogMHB4IDVweDsKLX0KLQotLyoqKiByZWNlbnQtaGlzdG9y
eSAqKiovCi0KLS5yZWNlbnQtaGlzdG9yeSB7Ci19Ci0KLS5yZWNlbnQtaGlzdG9yeSAuYnVpbGRl
ciB7Ci0gICAgd2lkdGg6IDVweDsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZjVmNWY1
OwotfQotCi0ucmVjZW50LWhpc3RvcnkgLmJ1aWx0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
YzZjNmM2OwotfQotCi0ucmVjZW50LWhpc3RvcnkgdGRbZGF0YS1mYWlsdXJlLXR5cGVzXSB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogQmxhY2s7Ci19Ci0KLS5jaGFuZ2Vsb2cgLnJlc3VsdCB7Ci0g
ICAgcGFkZGluZzogNHB4IDBweDsKLSAgICBib3JkZXItdG9wOiAycHggc29saWQgd2hpdGU7Ci0g
ICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHdoaXRlOwotfQotCi0uY2hhbmdlbG9nIC50ZXN0
IHsKLSAgICBwYWRkaW5nLWxlZnQ6IDNweDsKLX0KLQotLmNoYW5nZWxvZyAuZW50cnkgewotICAg
IHBhZGRpbmc6IDRweCAwcHggNHB4IDNweDsKLX0KLQotLmNoYW5nZWxvZyAucmV2ZXJ0ZWQgewot
ICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwotfQotCi0uY2hhbmdlbG9nIC5wb3Nz
aWJsZS1yZWdyZXNzaW9uIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBQYXBheWFXaGlwOwotfQot
Ci0uY2hhbmdlbG9nIC5kZXRhaWxzLCAuY2hhbmdlbG9nIC5kZXRhaWxzIGEgewotICAgIGNvbG9y
OiAjNTU1OwotfQotCi0uY2hhbmdlbG9nIC5zdW1tYXJ5IHsKLSAgICBjb2xvcjogQmxhY2s7Ci19
Ci0KLS5jaGFuZ2Vsb2cgLmF1dGhvciB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0u
dGVzdC1uYW1lLklNQUdFXCtURVhUOjphZnRlciB7Ci0gICAgY29udGVudDogJ0lNQUdFK1RFWFQn
OwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwot
ICAgIGNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBJbmRpZ287Ci0gICAgZm9u
dC1zaXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0gICAgbWFyZ2luOiAwIDAgMCAz
cHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi0udGVzdC1uYW1lLklNQUdFOjphZnRl
ciB7Ci0gICAgY29udGVudDogJ0lNQUdFJzsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3Vu
ZC1jb2xvcjogTWlkbmlnaHRCbHVlOwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICBwYWRkaW5n
OiAxcHggMnB4OwotICAgIG1hcmdpbjogMCAwIDAgM3B4OwotICAgIGJvcmRlci1yYWRpdXM6IDRw
eDsKLX0KLQotLnRlc3QtbmFtZS5USU1FT1VUOjphZnRlciB7Ci0gICAgY29udGVudDogJ1RJTUVP
VVQnOwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25l
OwotICAgIGNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBEYXJrR29sZGVuUm9k
OwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICBwYWRkaW5nOiAxcHggMnB4OwotICAgIG1hcmdp
bjogMCAwIDAgM3B4OwotICAgIGJvcmRlci1yYWRpdXM6IDRweDsKLX0KLQotLnRlc3QtbmFtZS5U
RVhUOjphZnRlciB7Ci0gICAgY29udGVudDogJ1RFWFQnOwotICAgIGZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBEb2RnZXJCbHVlOwotICAgIGZvbnQtc2l6ZTogMTBweDsKLSAgICBw
YWRkaW5nOiAxcHggMnB4OwotICAgIG1hcmdpbjogMCAwIDAgM3B4OwotICAgIGJvcmRlci1yYWRp
dXM6IDRweDsKLX0KLQotLnRlc3QtbmFtZS5DUkFTSDo6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICdD
UkFTSCc7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5v
bmU7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IFRvbWF0bzsKLSAg
ICBmb250LXNpemU6IDEwcHg7Ci0gICAgcGFkZGluZzogMXB4IDJweDsKLSAgICBtYXJnaW46IDAg
MCAwIDNweDsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci19Ci0KLS8qKiogcmVzdWx0cy12aWV3
ICoqKi8KLQotLyogRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgZ2FyZGVuLW8tbWF0aWMgc3dpdGNo
ZXMgdG8gdGhlIG5ldyByZXN1bHRzIHZpZXcuICovCi0ub2xkLXJlc3VsdHMtdmlldyB7Ci0gICAg
ZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAgbGVmdDogMHB4OwotICAg
IHJpZ2h0OiAwcHg7Ci0gICAgdG9wOiAyNSU7Ci0gICAgYm90dG9tOiAwcHg7Ci19Ci0KLS5yZXN1
bHRzLXZpZXcgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Ci19Ci0KLS5yZXN1bHRz
LXZpZXcgLnRvb2xiYXIgewotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYzZjNmM2OwotICAg
IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzZjNmM2OwotfQotCi0ucmVzdWx0cy12aWV3IC50
b29sYmFyIC5zZWxlY3RvciB7Ci0gICAgZm9udC1zaXplOiAxMXB4OwotICAgIGZvbnQtd2VpZ2h0
OiBib2xkOwotICAgIGhlaWdodDogMjlweDsKLSAgICBsaW5lLWhlaWdodDogMjdweDsKLSAgICBt
YXJnaW46IDExcHggNnB4OwotICAgIHBhZGRpbmc6IDAgOHB4OwotfQotCi0ucmVzdWx0cy12aWV3
IC50ZXN0LXNlbGVjdG9yIHsKLSAgICB3aWR0aDogNDAwcHg7Ci0gICAgbWFyZ2luLXJpZ2h0OiA2
cHg7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnRvb2xiYXIgLmFjdGlvbnMgewotICAgIGZsb2F0OiBy
aWdodDsKLX0KLQotLnJlc3VsdHMtZGV0YWlsIHRkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3
aGl0ZTsKLX0KLQotLnRleHQtcmVzdWx0IHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgd2lkdGg6
IDEwMCU7Ci0gICAgaGVpZ2h0OiA0MDBweDsgLyogRklYTUU6IEhvdyBkbyB3ZSBnZXQgYSByZWFz
b25hYmxlIGhlaWdodCBoZXJlPyAqLwotfQotCi0uaW1hZ2UtcmVzdWx0IHsKLSAgICB3aWR0aDog
MTAwJTsKLSAgICBoZWlnaHQ6IGF1dG87Ci19Ci0KLS8qKiogcGFydHl0aW1lICoqKi8KLQotLnBh
cnR5dGltZSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwzMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rp
b24oKSB7Ci0KLXZhciBrRmFzdExvYWRpbmdERUJVRyA9IGZhbHNlOwotCi12YXIgZ191cGRhdGVU
aW1lcklkID0gMDsKLXZhciBnX3Jlc3VsdHNEZXRhaWxzSXRlcmF0b3IgPSBudWxsOwotdmFyIGdf
dHJlZVN0YXRlID0ge307Ci0KLXZhciBrQnVpbGRGYWlsZWRJbmZvYmFyVHlwZSA9ICdidWlsZC1m
YWlsZWQnOwotCi1mdW5jdGlvbiBkaXNtaXNzQnV0dGVyYmFyKCkKLXsKLSAgICAkKCcuYnV0dGVy
YmFyJykuZmFkZU91dCgnZmFzdCcpOwotICAgIGNoZWNrRm9yTG9jYWxTZXJ2ZXIoKTsKLX0KLQot
ZnVuY3Rpb24gZGlzcGxheU9uQnV0dGVyYmFyKG1lc3NhZ2UpCi17Ci0gICAgJCgnLmJ1dHRlcmJh
ciAuc3RhdHVzJykudGV4dChtZXNzYWdlKTsKLSAgICAkKCcuYnV0dGVyYmFyJykuZmFkZUluKCdm
YXN0Jyk7Ci19Ci0KLWZ1bmN0aW9uIGhpZGVJbmZvYmFyKCkKLXsKLSAgICAkKCcuaW5mb2Jhcicp
LmFuaW1hdGUoewotICAgICAgICBvcGFjaXR5OiAndG9nZ2xlJywKLSAgICAgICAgaGVpZ2h0OiAn
dG9nZ2xlJywKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gaGlkZUluZm9iYXJJZk9mVHlwZSh0eXBl
KQotewotICAgIGlmICghJCgnLmluZm9iYXIgLnN0YXR1cycpLmlzKCc6dmlzaWJsZScpKQotICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKCQoJy5pbmZvYmFyIC5zdGF0dXMnKS5hdHRyKGNvbmZpZy5r
SW5mb2JhclR5cGVBdHRyKSAhPSB0eXBlKQotICAgICAgICByZXR1cm47Ci0gICAgaGlkZUluZm9i
YXIoKTsKLX0KLQotZnVuY3Rpb24gZGlzcGxheUluZm9iYXIobWVzc2FnZSwgdHlwZSkKLXsKLSAg
ICAkKCcuaW5mb2JhciAuc3RhdHVzJykuZW1wdHkoKS5hdHRyKGNvbmZpZy5rSW5mb2JhclR5cGVB
dHRyLCB0eXBlKS5hcHBlbmQobWVzc2FnZSk7Ci0gICAgJCgnLmluZm9iYXInKS5hbmltYXRlKHsK
LSAgICAgICAgb3BhY2l0eTogJ3RvZ2dsZScsCi0gICAgICAgIGhlaWdodDogJ3RvZ2dsZScsCi0g
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHNldEljb25TdGF0ZShoYXNGYWlsdXJlcykKLXsKLSAgICB2
YXIgZmF2aWNvblVSTCA9ICdmYXZpY29uLScgKyAoaGFzRmFpbHVyZXMgPyAncmVkJyA6ICdncmVl
bicpICsgJy5wbmcnOwotICAgICQoJyNmYXZpY29uJykuYXR0cignaHJlZicsIGZhdmljb25VUkwp
OwotfQotCi1mdW5jdGlvbiB0b2dnbGVCdXR0b24oYnV0dG9uLCBpc0VuYWJsZWQpCi17Ci0gICAg
aWYgKGlzRW5hYmxlZCkKLSAgICAgICAgYnV0dG9uLnJlbW92ZUF0dHIoJ2Rpc2FibGVkJyk7Ci0g
ICAgZWxzZQotICAgICAgICBidXR0b24uYXR0cignZGlzYWJsZWQnLCB0cnVlKQotfQotCi1mdW5j
dGlvbiByZWJhc2VsaW5lKGZhaWx1cmVJbmZvTGlzdCkKLXsKLSAgICBpZiAoIWZhaWx1cmVJbmZv
TGlzdC5sZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBkaXNwbGF5T25CdXR0ZXJiYXIoJ1Jl
YmFzZWxpbmluZy4uLicpOwotICAgIGNoZWNrb3V0LnJlYmFzZWxpbmUoZmFpbHVyZUluZm9MaXN0
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgZGlzbWlzc0J1dHRlcmJhcigpOwotICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlrZSBhIGxpZ2h0Ym94IHJhdGhlciB0aGFu
IGFsZXJ0IQotICAgICAgICBhbGVydCgnTmV3IHJlc3VsdHMgZG93bmxvYWRlZCB0byB5b3VyIHdv
cmtpbmcgY29weS4gUGxlYXNlIHVzZSAid2Via2l0LXBhdGNoIGxhbmQtY293Ym95IiB0byBsYW5k
IHRoZSB1cGRhdGVkIGJhc2VsaW5lcy4nKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gc2hvd1Jl
c3VsdHNEZXRhaWwoZmFpbHVyZUluZm8pCi17Ci0gICAgdmFyIGZhaWx1cmVUeXBlcyA9IGZhaWx1
cmVJbmZvLmZhaWx1cmVUeXBlTGlzdC5qb2luKCcgJyk7Ci0KLSAgICB2YXIgY29udGVudCA9ICQo
Jy5yZXN1bHRzLWRldGFpbCAuY29udGVudCcpOwotCi0gICAgaWYgKCQoJy5mYWlsdXJlLWRldGFp
bHMnLCBjb250ZW50KS5hdHRyKGNvbmZpZy5rQnVpbGRlck5hbWVBdHRyKSA9PSBmYWlsdXJlSW5m
by5idWlsZGVyTmFtZSAmJgotICAgICAgICAkKCcuZmFpbHVyZS1kZXRhaWxzJywgY29udGVudCku
YXR0cihjb25maWcua1Rlc3ROYW1lQXR0cikgPT0gZmFpbHVyZUluZm8udGVzdE5hbWUgJiYKLSAg
ICAgICAgJCgnLmZhaWx1cmUtZGV0YWlscycsIGNvbnRlbnQpLmF0dHIoY29uZmlnLmtGYWlsdXJl
VHlwZXNBdHRyKSA9PSBmYWlsdXJlVHlwZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRpc3Bs
YXlPbkJ1dHRlcmJhcignTG9hZGluZy4uLicpOwotCi0gICAgcmVzdWx0cy5mZXRjaFJlc3VsdHNV
UkxzKGZhaWx1cmVJbmZvLCBmdW5jdGlvbihyZXN1bHRzVVJMcykgewotICAgICAgICB2YXIgc3Rh
dHVzID0gJCgnLnJlc3VsdHMtZGV0YWlsIC50b29sYmFyIC5zdGF0dXMnKTsKLQotICAgICAgICBz
dGF0dXMuZW1wdHkoKTsKLSAgICAgICAgY29udGVudC5lbXB0eSgpOwotCi0gICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgcGFzc2luZyB0aGUgZnVsbCBsaXN0IG9mIGZhaWxpbmcgYnVpbGRl
ciBuYW1lcyBhcyB0aGUgZm91cnRoIGFyZ3VtZW50LgotICAgICAgICBzdGF0dXMuYXBwZW5kKHVp
LmZhaWx1cmVEZXRhaWxzU3RhdHVzKGZhaWx1cmVJbmZvLCBbZmFpbHVyZUluZm8uYnVpbGRlck5h
bWVdKSk7Ci0gICAgICAgIHZhciByZXN1bHRzR3JpZCA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNH
cmlkKCk7Ci0gICAgICAgIHJlc3VsdHNHcmlkLmFkZFJlc3VsdHMocmVzdWx0c1VSTHMpOwotICAg
ICAgICBjb250ZW50LmFwcGVuZChyZXN1bHRzR3JpZCk7Ci0KLSAgICAgICAgdG9nZ2xlQnV0dG9u
KCQoJy5yZXN1bHRzLWRldGFpbCAuYWN0aW9ucyAubmV4dCcpLCBnX3Jlc3VsdHNEZXRhaWxzSXRl
cmF0b3IuaGFzTmV4dCgpKTsKLSAgICAgICAgdG9nZ2xlQnV0dG9uKCQoJy5yZXN1bHRzLWRldGFp
bCAuYWN0aW9ucyAucHJldmlvdXMnKSwgZ19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yLmhhc1ByZXZp
b3VzKCkpOwotICAgICAgICB0b2dnbGVCdXR0b24oJCgnLnJlc3VsdHMtZGV0YWlsIC5hY3Rpb25z
IC5yZWJhc2VsaW5lJyksIHJlc3VsdHMuY2FuUmViYXNlbGluZShmYWlsdXJlSW5mby5mYWlsdXJl
VHlwZUxpc3QpKTsKLQotICAgICAgICAkKCcuZmFpbHVyZS1kZXRhaWxzJywgY29udGVudCkuYXR0
cihjb25maWcua1Rlc3ROYW1lQXR0ciwgZmFpbHVyZUluZm8udGVzdE5hbWUpOwotICAgICAgICAk
KCcuZmFpbHVyZS1kZXRhaWxzJywgY29udGVudCkuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0
ciwgZmFpbHVyZUluZm8uYnVpbGRlck5hbWUpOwotICAgICAgICAkKCcuZmFpbHVyZS1kZXRhaWxz
JywgY29udGVudCkuYXR0cihjb25maWcua0ZhaWx1cmVUeXBlc0F0dHIsIGZhaWx1cmVUeXBlcyk7
Ci0KLSAgICAgICAgaWYgKCEkKCcucmVzdWx0cy1kZXRhaWwnKS5pcygiOnZpc2libGUiKSkKLSAg
ICAgICAgICAgICQoJy5yZXN1bHRzLWRldGFpbCcpLmZhZGVJbignZmFzdCcsIGRpc21pc3NCdXR0
ZXJiYXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaXNtaXNzQnV0dGVyYmFyKCk7Ci0g
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGhpZGVSZXN1bHRzRGV0YWlsKCkKLXsKLSAgICAkKCcucmVz
dWx0cy1kZXRhaWwnKS5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICQoJy5y
ZXN1bHRzLWRldGFpbCAuc3RhdHVzJykuZW1wdHkoKTsKLSAgICAgICAgJCgnLnJlc3VsdHMtZGV0
YWlsIC5jb250ZW50JykuZW1wdHkoKTsKLSAgICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcsIHdl
IGRvbid0IG5lZWQgdG8gY2xlYXIgZ19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yLAotICAgICAgICAv
LyBidXQgZG9pbmcgc28gaGVscHMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGZyZWUgbWVtb3J5Lgot
ICAgICAgICBnX3Jlc3VsdHNEZXRhaWxzSXRlcmF0b3IgPSBudWxsOwotICAgIH0pOwotICAgIGNo
ZWNrb3V0LnVwZGF0ZUV4cGVjdGF0aW9ucyhtb2RlbC50YWtlRXhwZWN0YXRpb25VcGRhdGVRdWV1
ZSgpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjb25maXJtIHdp
dGggdGhlIHVzZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBxdWV1ZT8KLSAgICAgICAgcmViYXNlbGlu
ZShtb2RlbC50YWtlUmViYXNlbGluZVF1ZXVlKCkpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBu
ZXh0UmVzdWx0c0RldGFpbCgpCi17Ci0gICAgaWYgKGdfcmVzdWx0c0RldGFpbHNJdGVyYXRvci5o
YXNOZXh0KCkpCi0gICAgICAgIGdfcmVzdWx0c0RldGFpbHNJdGVyYXRvci5jYWxsTmV4dCgpOwot
ICAgIGVsc2UKLSAgICAgICAgaGlkZVJlc3VsdHNEZXRhaWwoKTsKLX0KLQotZnVuY3Rpb24gcHJl
dmlvdXNSZXN1bHRzRGV0YWlsKCkKLXsKLSAgICBnX3Jlc3VsdHNEZXRhaWxzSXRlcmF0b3IuY2Fs
bFByZXZpb3VzKCk7Ci19Ci0KLWZ1bmN0aW9uIGZhaWx1cmVJbmZvRnJvbVJlc3VsdHNEZXRhaWwo
KQotewotICAgIHZhciBmYWlsdXJlRGV0YWlscyA9ICQoJy5yZXN1bHRzLWRldGFpbCAuZmFpbHVy
ZS1kZXRhaWxzJyk7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgJ2J1aWxkZXJOYW1lJzogZmFpbHVy
ZURldGFpbHMuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0ciksCi0gICAgICAgICd0ZXN0TmFt
ZSc6IGZhaWx1cmVEZXRhaWxzLmF0dHIoY29uZmlnLmtUZXN0TmFtZUF0dHIpLAotICAgICAgICAn
ZmFpbHVyZVR5cGVMaXN0JzogcmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QoZmFpbHVyZURldGFpbHMu
YXR0cihjb25maWcua0ZhaWx1cmVUeXBlc0F0dHIpKSwKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGFk
ZFRvUmViYXNlbGluZVF1ZXVlKCkKLXsKLSAgICBtb2RlbC5xdWV1ZUZvclJlYmFzZWxpbmUoZmFp
bHVyZUluZm9Gcm9tUmVzdWx0c0RldGFpbCgpKTsKLSAgICBuZXh0UmVzdWx0c0RldGFpbCgpOwot
fQotCi1mdW5jdGlvbiBhZGRUb0V4cGVjdGF0aW9uVXBkYXRlUXVldWUoKQotewotICAgIG1vZGVs
LnF1ZXVlRm9yRXhwZWN0YXRpb25VcGRhdGUoZmFpbHVyZUluZm9Gcm9tUmVzdWx0c0RldGFpbCgp
KTsKLSAgICBuZXh0UmVzdWx0c0RldGFpbCgpOwotfQotCi1mdW5jdGlvbiBzZWxlY3RlZEZhaWx1
cmVzKCkKLXsKLSAgICB2YXIgZmFpbHVyZUluZm9MaXN0ID0gW107Ci0KLSAgICAkKCcudGVzdCBp
bnB1dDpjaGVja2JveCcpLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICghdGhpcy5jaGVj
a2VkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmYWlsdXJlSW5mb0xpc3QgPSBmYWls
dXJlSW5mb0xpc3QuY29uY2F0KHVpLmZhaWx1cmVJbmZvTGlzdEZvclN1bW1hcnkoJCh0aGlzKS5w
YXJlbnRzKCcucmVzdWx0JykpKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBmYWlsdXJlSW5mb0xp
c3Q7Ci19Ci0KLWZ1bmN0aW9uIHJlYmFzZWxpbmVTZWxlY3RlZCgpCi17Ci0gICAgcmViYXNlbGlu
ZShzZWxlY3RlZEZhaWx1cmVzKCkpOwotfQotCi1mdW5jdGlvbiB1cGRhdGVFeHBlY3RhdGlvbnNG
b3JTZWxlY3RlZCgpCi17Ci0gICAgY2hlY2tvdXQudXBkYXRlRXhwZWN0YXRpb25zKHNlbGVjdGVk
RmFpbHVyZXMoKSwgJC5ub29wKTsKLX0KLQotZnVuY3Rpb24gc2hvd1NlbGVjdGVkRmFpbHVyZXMo
KQotewotICAgIHZhciBsaXN0T2ZBcmd1bWVudEFycmF5cyA9IHNlbGVjdGVkRmFpbHVyZXMoKS5t
YXAoZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsgcmV0dXJuIFtmYWlsdXJlSW5mb107IH0pOwotICAg
IGdfcmVzdWx0c0RldGFpbHNJdGVyYXRvciA9IG5ldyBiYXNlLkNhbGxiYWNrSXRlcmF0b3Ioc2hv
d1Jlc3VsdHNEZXRhaWwsIGxpc3RPZkFyZ3VtZW50QXJyYXlzKTsKLSAgICBnX3Jlc3VsdHNEZXRh
aWxzSXRlcmF0b3IuY2FsbE5leHQoKTsKLX0KLQotZnVuY3Rpb24gcm93c0luUmV2aXNpb25SYW5n
ZShlYXJsaWVzdFJldmlzaW9uLCBsYXRlc3RSZXZpc2lvbikKLXsKLSAgICB2YXIgZWFybGllc3RS
ZXZpc2lvbiA9IGJhc2UuYXNJbnRlZ2VyKGVhcmxpZXN0UmV2aXNpb24pOwotICAgIHZhciBsYXRl
c3RSZXZpc2lvbiA9IGJhc2UuYXNJbnRlZ2VyKGxhdGVzdFJldmlzaW9uKTsKLQotICAgIHZhciBy
b3dzID0gW107Ci0gICAgJCgnLnJlY2VudC1oaXN0b3J5IHRyJykuZWFjaChmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHJldmlzaW9uID0gcGFyc2VJbnQoJCh0aGlzKS5hdHRyKGNvbmZpZy5rUmV2
aXNpb25BdHRyKSk7Ci0gICAgICAgIGlmIChlYXJsaWVzdFJldmlzaW9uIDw9IHJldmlzaW9uICYm
IHJldmlzaW9uIDw9IGxhdGVzdFJldmlzaW9uKQotICAgICAgICAgICAgcm93cy5wdXNoKHRoaXMp
OwotICAgIH0pOwotCi0gICAgcmV0dXJuICQocm93cyk7Ci19Ci0KLWZ1bmN0aW9uIHJvd3NCZWZv
cmVSZXZpc2lvbihsYXRlc3RSZXZpc2lvbikKLXsKLSAgICByZXR1cm4gcm93c0luUmV2aXNpb25S
YW5nZSgwLCBsYXRlc3RSZXZpc2lvbikKLX0KLQotZnVuY3Rpb24gc2hvd1JlY2VudENvbW1pdHMo
KQotewotICAgICQoJy5yZWNlbnQtaGlzdG9yeScpLmVtcHR5KCkuYXBwZW5kKHVpLmNoYW5nZWxv
Zyhtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzKSk7Ci19Ci0KLWZ1bmN0aW9uIHNob3dCdWlsZGVy
UHJvZ3Jlc3MoKQotewotICAgICQuZWFjaChtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyLCBm
dW5jdGlvbihidWlsZGVyTmFtZSwgcmVzdWx0c1RyZWUpIHsKLSAgICAgICAgdmFyIGJ1aWxkZXJJ
bmRleCA9IGNvbmZpZy5rQnVpbGRlcnMuaW5kZXhPZihidWlsZGVyTmFtZSk7Ci0gICAgICAgIHJv
d3NCZWZvcmVSZXZpc2lvbihyZXN1bHRzVHJlZS5yZXZpc2lvbikuZWFjaChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICQoJCh0aGlzKS5jaGlsZHJlbigpW2J1aWxkZXJJbmRleF0pLmFkZENsYXNz
KCdidWlsdCcpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gc2hvd1VuZXhw
ZWN0ZWRGYWlsdXJlKGZhaWx1cmVBbmFseXNpcykKLXsKLSAgICB2YXIgaW1wbGllZEZpcnN0RmFp
bGluZ1JldmlzaW9uID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7
Ci0gICAgdmFyIHJlZ3Jlc3Npb25Sb3dzID0gcm93c0luUmV2aXNpb25SYW5nZShpbXBsaWVkRmly
c3RGYWlsaW5nUmV2aXNpb24sIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb24p
OwotCi0gICAgJCgnLmVudHJ5JywgcmVncmVzc2lvblJvd3MpLmFkZENsYXNzKCdwb3NzaWJsZS1y
ZWdyZXNzaW9uJyk7Ci0KLSAgICB2YXIgZmFpbHVyZVN1bW1hcnkgPSB1aS5zdW1tYXJpemVGYWls
dXJlKGZhaWx1cmVBbmFseXNpcykuYXR0cihjb25maWcua1JldmlzaW9uQXR0ciwgaW1wbGllZEZp
cnN0RmFpbGluZ1JldmlzaW9uKTsKLSAgICAocmVncmVzc2lvblJvd3MubGVuZ3RoID8gcmVncmVz
c2lvblJvd3MgOiAkKCcucmVjZW50LWhpc3RvcnkgdHInKSkubGFzdCgpLmFmdGVyKGZhaWx1cmVT
dW1tYXJ5KTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBjb21wdXRlIHRoaXMgZm9y
IGZhaWx1cmVTdW1tYXJ5IGluc3RlYWQgb2YgcmVjb21wdXRpbmcgdGhlIHdob2xlIHBhZ2UuCi0g
ICAgc2hvd0J1aWxkZXJQcm9ncmVzcygpOwotfQotCi1mdW5jdGlvbiBzaG93RmFpbGluZ0J1aWxk
ZXJzSW5mb2JhcihidWlsZGVyTmFtZUxpc3QpCi17Ci0gICAgaWYgKGJ1aWxkZXJOYW1lTGlzdC5s
ZW5ndGgpCi0gICAgICAgIGRpc3BsYXlJbmZvYmFyKHVpLmluZm9iYXJNZXNzYWdlRm9yQ29tcGls
ZUVycm9ycyhidWlsZGVyTmFtZUxpc3QpLCBrQnVpbGRGYWlsZWRJbmZvYmFyVHlwZSk7Ci0gICAg
ZWxzZQotICAgICAgICBoaWRlSW5mb2JhcklmT2ZUeXBlKGtCdWlsZEZhaWxlZEluZm9iYXJUeXBl
KTsKLX0KLQotZnVuY3Rpb24gY2hlY2tGb3JMb2NhbFNlcnZlcigpCi17Ci0gICAgY2hlY2tvdXQu
aXNBdmFpbGFibGUoZnVuY3Rpb24oYXZhaWxhYmxlKSB7Ci0gICAgICAgIGlmICghYXZhaWxhYmxl
KQotICAgICAgICAgICAgZGlzcGxheU9uQnV0dGVyYmFyKCdSdW4gIndlYmtpdC1wYXRjaCBnYXJk
ZW4tby1tYXRpYyIgdG8gZW5hYmxlIHJlYmFzZWxpbmUgZmVhdHVyZXMuJykKLSAgICB9KTsKLX0K
LQotZnVuY3Rpb24gdXBkYXRlKCkKLXsKLSAgICBkaXNwbGF5T25CdXR0ZXJiYXIoJ0xvYWRpbmcu
Li4nKTsKLSAgICBidWlsZGVycy5idWlsZGVyc0ZhaWxpbmdTdGVwUmVxdXJlZEZvclRlc3RDb3Zl
cmFnZShzaG93RmFpbGluZ0J1aWxkZXJzSW5mb2Jhcik7Ci0gICAgYmFzZS5jYWxsSW5QYXJhbGxl
bChbbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0cywgbW9kZWwudXBkYXRlUmVzdWx0c0J5QnVpbGRl
cl0sIGZ1bmN0aW9uKCkgewotICAgICAgICBzaG93UmVjZW50Q29tbWl0cygpOwotICAgICAgICBz
aG93QnVpbGRlclByb2dyZXNzKCk7Ci0gICAgICAgIG1vZGVsLmFuYWx5emVVbmV4cGVjdGVkRmFp
bHVyZXMoc2hvd1VuZXhwZWN0ZWRGYWlsdXJlLCBkaXNtaXNzQnV0dGVyYmFyKTsKLSAgICAgICAg
Y2hlY2tGb3JMb2NhbFNlcnZlcigpOwotICAgIH0pOwotfQotCi0kKCcuc2hvdy1zZWxlY3RlZC1m
YWlsdXJlcycpLmxpdmUoJ2NsaWNrJywgc2hvd1NlbGVjdGVkRmFpbHVyZXMpOwotJCgnLnJlYmFz
ZWxpbmUtc2VsZWN0ZWQnKS5saXZlKCdjbGljaycsIHJlYmFzZWxpbmVTZWxlY3RlZCk7Ci0kKCcu
dXBkYXRlLWV4cGVjdGF0aW9ucy1zZWxlY3RlZCcpLmxpdmUoJ2NsaWNrJywgdXBkYXRlRXhwZWN0
YXRpb25zRm9yU2VsZWN0ZWQpOwotJCgnLnJlZnJlc2gnKS5saXZlKCdjbGljaycsIHVwZGF0ZSk7
Ci0KLSQoJy5yZXN1bHRzLWRldGFpbCAuYWN0aW9ucyAubmV4dCcpLmxpdmUoJ2NsaWNrJywgbmV4
dFJlc3VsdHNEZXRhaWwpOwotJCgnLnJlc3VsdHMtZGV0YWlsIC5hY3Rpb25zIC5wcmV2aW91cycp
LmxpdmUoJ2NsaWNrJywgcHJldmlvdXNSZXN1bHRzRGV0YWlsKTsKLSQoJy5yZXN1bHRzLWRldGFp
bCAuYWN0aW9ucyAucmViYXNlbGluZScpLmxpdmUoJ2NsaWNrJywgYWRkVG9SZWJhc2VsaW5lUXVl
dWUpOwotJCgnLnJlc3VsdHMtZGV0YWlsIC5hY3Rpb25zIC51cGRhdGUtZXhwZWN0YXRpb24nKS5s
aXZlKCdjbGljaycsIGFkZFRvRXhwZWN0YXRpb25VcGRhdGVRdWV1ZSk7Ci0kKCcucmVzdWx0cy1k
ZXRhaWwgLmFjdGlvbnMgLmRpc21pc3MnKS5saXZlKCdjbGljaycsIGhpZGVSZXN1bHRzRGV0YWls
KTsKLQotJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7Ci0gICAgZ191cGRhdGVUaW1lcklk
ID0gd2luZG93LnNldEludGVydmFsKHVwZGF0ZSwgY29uZmlnLmtVcGRhdGVGcmVxdWVuY3kpOwot
ICAgIHVwZGF0ZSgpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbW9kZWwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21vZGVsLmpzCShyZXZpc2lvbiA5MzI1
NikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tb2RlbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgbW9kZWwgPSBtb2RlbCB8fCB7fTsKLQotKGZ1bmN0
aW9uICgpIHsKLQotdmFyIGtDb21taXRMb2dMZW5ndGggPSA1MDsKLQotbW9kZWwuc3RhdGUgPSB7
fTsKLW1vZGVsLnN0YXRlLmZhaWx1cmVBbmFseXNpc0J5VGVzdCA9IHt9OwotbW9kZWwuc3RhdGUu
cmViYXNlbGluZVF1ZXVlID0gW107Ci1tb2RlbC5zdGF0ZS5leHBlY3RhdGlvbnNVcGRhdGVRdWV1
ZSA9IFtdOwotCi1mdW5jdGlvbiBmaW5kQW5kTWFya1JldmVydGVkUmV2aXNpb25zKGNvbW1pdERh
dGFMaXN0KQotewotICAgIHZhciByZXZlcnRlZFJldmlzaW9ucyA9IHt9OwotICAgICQuZWFjaChj
b21taXREYXRhTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYg
KGNvbW1pdERhdGEucmV2ZXJ0ZWRSZXZpc2lvbikKLSAgICAgICAgICAgIHJldmVydGVkUmV2aXNp
b25zW2NvbW1pdERhdGEucmV2ZXJ0ZWRSZXZpc2lvbl0gPSB0cnVlOwotICAgIH0pOwotICAgICQu
ZWFjaChjb21taXREYXRhTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAg
ICAgaWYgKGNvbW1pdERhdGEucmV2aXNpb24gaW4gcmV2ZXJ0ZWRSZXZpc2lvbnMpCi0gICAgICAg
ICAgICBjb21taXREYXRhLndhc1JldmVydGVkID0gdHJ1ZTsKLSAgICB9KTsKLX0KLQotZnVuY3Rp
b24gZnV6enlGaW5kKHRlc3ROYW1lLCBjb21taXREYXRhKQotewotICAgIHZhciBpbmRleE9mTGFz
dERvdCA9IHRlc3ROYW1lLmxhc3RJbmRleE9mKCcuJyk7Ci0gICAgdmFyIHN0ZW0gPSBpbmRleE9m
TGFzdERvdCA9PSAtMSA/IHRlc3ROYW1lIDogdGVzdE5hbWUuc3Vic3RyKDAsIGluZGV4T2ZMYXN0
RG90KTsKLSAgICByZXR1cm4gY29tbWl0RGF0YS5tZXNzYWdlLmluZGV4T2Yoc3RlbSkgIT0gLTE7
Ci19Ci0KLWZ1bmN0aW9uIGhldXJpc3RpY2FsbHlOYXJyb3dSZWdyZXNzaW9uUmFuZ2UoZmFpbHVy
ZUFuYWx5c2lzKQotewotICAgIHZhciBjb21taXREYXRhTGlzdCA9IG1vZGVsLnN0YXRlLnJlY2Vu
dENvbW1pdHM7Ci0gICAgdmFyIGNvbW1pdERhdGFJbmRleCA9IGNvbW1pdERhdGFMaXN0Lmxlbmd0
aCAtIDE7Ci0KLSAgICBmb3IodmFyIHJldmlzaW9uID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBh
c3NpbmdSZXZpc2lvbiArIDE7IHJldmlzaW9uIDw9IGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWls
aW5nUmV2aXNpb247ICsrcmV2aXNpb24pIHsKLSAgICAgICAgd2hpbGUgKGNvbW1pdERhdGFJbmRl
eCA+PSAwICYmIGNvbW1pdERhdGFMaXN0W2NvbW1pdERhdGFJbmRleF0ucmV2aXNpb24gPCByZXZp
c2lvbikKLSAgICAgICAgICAgIC0tY29tbWl0RGF0YUluZGV4OwotICAgICAgICB2YXIgY29tbWl0
RGF0YSA9IGNvbW1pdERhdGFMaXN0W2NvbW1pdERhdGFJbmRleF07Ci0gICAgICAgIGlmIChjb21t
aXREYXRhLnJldmlzaW9uICE9IHJldmlzaW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChmdXp6eUZpbmQoZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lLCBjb21taXREYXRhKSkg
ewotICAgICAgICAgICAgZmFpbHVyZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHJl
dmlzaW9uOwotICAgICAgICAgICAgZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lv
biA9IHJldmlzaW9uIC0gMTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotbW9kZWwucXVldWVGb3JSZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVyZUluZm8pCi17
Ci0gICAgbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsK
LQotbW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcXVl
dWUgPSBtb2RlbC5zdGF0ZS5yZWJhc2VsaW5lUXVldWU7Ci0gICAgbW9kZWwuc3RhdGUucmViYXNl
bGluZVF1ZXVlID0gW107Ci0gICAgcmV0dXJuIHF1ZXVlOwotfTsKLQotbW9kZWwucXVldWVGb3JF
eHBlY3RhdGlvblVwZGF0ZSA9IGZ1bmN0aW9uKGZhaWx1cmVJbmZvKQotewotICAgIG1vZGVsLnN0
YXRlLmV4cGVjdGF0aW9uc1VwZGF0ZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9k
ZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVldWUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHF1
ZXVlID0gbW9kZWwuc3RhdGUuZXhwZWN0YXRpb25zVXBkYXRlUXVldWU7Ci0gICAgbW9kZWwuc3Rh
dGUuZXhwZWN0YXRpb25zVXBkYXRlUXVldWUgPSBbXTsKLSAgICByZXR1cm4gcXVldWU7Ci19Owot
Ci12YXIgZ19jb21taXRJbmRleCA9IHt9OwotCi1tb2RlbC51cGRhdGVSZWNlbnRDb21taXRzID0g
ZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgdHJhYy5yZWNlbnRDb21taXREYXRhKCd0cnVuaycs
IGtDb21taXRMb2dMZW5ndGgsIGZ1bmN0aW9uKGNvbW1pdERhdGFMaXN0KSB7Ci0gICAgICAgIG1v
ZGVsLnN0YXRlLnJlY2VudENvbW1pdHMgPSBjb21taXREYXRhTGlzdDsKLSAgICAgICAgdXBkYXRl
Q29tbWl0SW5kZXgoKTsKLSAgICAgICAgZmluZEFuZE1hcmtSZXZlcnRlZFJldmlzaW9ucyhtb2Rl
bC5zdGF0ZS5yZWNlbnRDb21taXRzKTsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07
Ci0KLWZ1bmN0aW9uIHVwZGF0ZUNvbW1pdEluZGV4KCkgewotICAgIG1vZGVsLnN0YXRlLnJlY2Vu
dENvbW1pdHMuZm9yRWFjaChmdW5jdGlvbihjb21taXREYXRhKSB7Ci0gICAgICAgIGdfY29tbWl0
SW5kZXhbY29tbWl0RGF0YS5yZXZpc2lvbl0gPSBjb21taXREYXRhOwotICAgIH0pOwotfQotCi0v
KgotICAgIEFzc3VtZXMgU1ZOLXN0eWxlLCBjb25zZWN1dGl2ZSByZXZpc2lvbiBzY2hlbWUuCi0q
LwotbW9kZWwuY29tbWl0RGF0YUxpc3RGb3JSZXZpc2lvblJhbmdlID0gZnVuY3Rpb24oZnJvbVJl
dmlzaW9uLCB0b1JldmlzaW9uKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZh
ciByZXZpc2lvbiA9IGZyb21SZXZpc2lvbjsgcmV2aXNpb24gPD0gdG9SZXZpc2lvbjsgKytyZXZp
c2lvbikgewotICAgICAgICB2YXIgY29tbWl0RGF0YSA9IGdfY29tbWl0SW5kZXhbcmV2aXNpb25d
OwotICAgICAgICBpZiAoY29tbWl0RGF0YSkKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbW1p
dERhdGEpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfTsKLQotbW9kZWwudXBkYXRlUmVz
dWx0c0J5QnVpbGRlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIHJlc3VsdHMuZmV0Y2hS
ZXN1bHRzQnlCdWlsZGVyKGNvbmZpZy5rQnVpbGRlcnMsIGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxk
ZXIpIHsKLSAgICAgICAgbW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlciA9IHJlc3VsdHNCeUJ1
aWxkZXI7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19OwotCi1tb2RlbC5hbmFseXpl
VW5leHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24oY2FsbGJhY2ssIGNvbXBsZXRpb25DYWxsYmFj
aykKLXsKLSAgICB2YXIgdW5leHBlY3RlZEZhaWx1cmVzID0gcmVzdWx0cy51bmV4cGVjdGVkRmFp
bHVyZXNCeVRlc3QobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcik7Ci0KLSAgICAkLmVhY2go
bW9kZWwuc3RhdGUuZmFpbHVyZUFuYWx5c2lzQnlUZXN0LCBmdW5jdGlvbih0ZXN0TmFtZSwgZmFp
bHVyZUFuYWx5c2lzKSB7Ci0gICAgICAgIGlmICghKHRlc3ROYW1lIGluIHVuZXhwZWN0ZWRGYWls
dXJlcykpCi0gICAgICAgICAgICBkZWxldGUgbW9kZWwuc3RhdGUuZmFpbHVyZUFuYWx5c2lzQnlU
ZXN0W3Rlc3ROYW1lXTsKLSAgICB9KTsKLQotICAgIHZhciB0cmFja2VyID0gbmV3IGJhc2UuUmVx
dWVzdFRyYWNrZXIoT2JqZWN0LmtleXModW5leHBlY3RlZEZhaWx1cmVzKS5sZW5ndGgsIGNvbXBs
ZXRpb25DYWxsYmFjayk7Ci0gICAgJC5lYWNoKHVuZXhwZWN0ZWRGYWlsdXJlcywgZnVuY3Rpb24o
dGVzdE5hbWUsIHJlc3VsdE5vZGVzQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBidWlsZGVyTmFt
ZUxpc3QgPSBPYmplY3Qua2V5cyhyZXN1bHROb2Rlc0J5QnVpbGRlcik7Ci0gICAgICAgIHJlc3Vs
dHMudW5pZnlSZWdyZXNzaW9uUmFuZ2VzKGJ1aWxkZXJOYW1lTGlzdCwgdGVzdE5hbWUsIGZ1bmN0
aW9uKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7Ci0gICAg
ICAgICAgICB2YXIgZmFpbHVyZUFuYWx5c2lzID0gewotICAgICAgICAgICAgICAgICd0ZXN0TmFt
ZSc6IHRlc3ROYW1lLAotICAgICAgICAgICAgICAgICdyZXN1bHROb2Rlc0J5QnVpbGRlcic6IHJl
c3VsdE5vZGVzQnlCdWlsZGVyLAotICAgICAgICAgICAgICAgICdvbGRlc3RGYWlsaW5nUmV2aXNp
b24nOiBvbGRlc3RGYWlsaW5nUmV2aXNpb24sCi0gICAgICAgICAgICAgICAgJ25ld2VzdFBhc3Np
bmdSZXZpc2lvbic6IG5ld2VzdFBhc3NpbmdSZXZpc2lvbiwKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgIGhldXJpc3RpY2FsbHlOYXJyb3dSZWdyZXNzaW9uUmFuZ2UoZmFpbHVyZUFuYWx5
c2lzKTsKLQotICAgICAgICAgICAgdmFyIHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzID0gbW9kZWwu
c3RhdGUuZmFpbHVyZUFuYWx5c2lzQnlUZXN0W3Rlc3ROYW1lXTsKLSAgICAgICAgICAgIGlmIChw
cmV2aW91c0ZhaWx1cmVBbmFseXNpcwotICAgICAgICAgICAgICAgICYmIHByZXZpb3VzRmFpbHVy
ZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA8PSBmYWlsdXJlQW5hbHlzaXMub2xkZXN0
RmFpbGluZ1JldmlzaW9uCi0gICAgICAgICAgICAgICAgJiYgcHJldmlvdXNGYWlsdXJlQW5hbHlz
aXMubmV3ZXN0UGFzc2luZ1JldmlzaW9uID49IGZhaWx1cmVBbmFseXNpcy5uZXdlc3RQYXNzaW5n
UmV2aXNpb24pIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlQW5hbHlzaXMub2xkZXN0RmFpbGlu
Z1JldmlzaW9uID0gcHJldmlvdXNGYWlsdXJlQW5hbHlzaXMub2xkZXN0RmFpbGluZ1JldmlzaW9u
OwotICAgICAgICAgICAgICAgIGZhaWx1cmVBbmFseXNpcy5uZXdlc3RQYXNzaW5nUmV2aXNpb24g
PSBwcmV2aW91c0ZhaWx1cmVBbmFseXNpcy5uZXdlc3RQYXNzaW5nUmV2aXNpb247Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIG1vZGVsLnN0YXRlLmZhaWx1cmVBbmFseXNpc0J5VGVzdFt0
ZXN0TmFtZV0gPSBmYWlsdXJlQW5hbHlzaXM7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWlsdXJl
QW5hbHlzaXMpOwotICAgICAgICAgICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci19OwotCi1tb2RlbC5hbmFseXplVW5leHBlY3RlZFN1Y2Nlc3NlcyA9
IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIHZhciB1bmV4cGVjdGVkU3VjY2Vzc2VzID0gcmVz
dWx0cy51bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0KG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxk
ZXIpOwotICAgICQuZWFjaCh1bmV4cGVjdGVkU3VjY2Vzc2VzLCBmdW5jdGlvbih0ZXN0TmFtZSwg
cmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsKLSAgICAgICAgdmFyIHN1Y2Nlc3NBbmFseXNpcyA9IHsK
LSAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRlc3ROYW1lLAotICAgICAgICAgICAgJ3Jlc3VsdE5v
ZGVzQnlCdWlsZGVyJzogcmVzdWx0Tm9kZXNCeUJ1aWxkZXIsCi0gICAgICAgIH07Ci0KLSAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIGxvb2tpbmcgYXQgdGhlIGhpc3RvcnkgdG8gc2VlIGhvdyBs
b25nIHRoaXMgdGVzdAotICAgICAgICAvLyBoYXMgYmVlbiB1bmV4cGVjdGVkbHkgcGFzc2luZy4K
LQotICAgICAgICBjYWxsYmFjayhzdWNjZXNzQW5hbHlzaXMpOwotICAgIH0pOwotfTsKLQotfSko
KTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tb2RlbF91bml0dGVzdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL21vZGVsX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvbW9kZWxfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDIxMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVsZSgibW9k
ZWwiKTsKLQotdmFyIGtFeGFtcGxlQ29tbWl0RGF0YVhNTCA9Ci0gICAgJzw/eG1sIHZlcnNpb249
IjEuMCI/PlxuXG4nICsKLSAgICAnPHJzcyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2Vs
ZW1lbnRzLzEuMS8iIHZlcnNpb249IjIuMCI+XG5cbicgKwotICAgICcgIFxuXG4nICsKLSAgICAn
XG5cbicgKwotICAgICcgIDxjaGFubmVsPlxuXG4nICsKLSAgICAnICAgIDx0aXRsZT5SZXZpc2lv
bnMgb2YgL3RydW5rPC90aXRsZT5cblxuJyArCi0gICAgJyAgICA8bGluaz5odHRwOi8vdHJhYy53
ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9OTIzNjI8L2xpbms+XG5cbicgKwotICAgICcgICAgPGRl
c2NyaXB0aW9uPlRyYWMgTG9nIC0gUmV2aXNpb25zIG9mIC90cnVuazwvZGVzY3JpcHRpb24+XG5c
bicgKwotICAgICcgICAgPGxhbmd1YWdlPmVuLVVTPC9sYW5ndWFnZT5cblxuJyArCi0gICAgJyAg
ICA8Z2VuZXJhdG9yPlRyYWMgMC4xMS43PC9nZW5lcmF0b3I+XG5cbicgKwotICAgICcgICAgPGlt
YWdlPlxuXG4nICsKLSAgICAnICAgICAgPHRpdGxlPldlYktpdDwvdGl0bGU+XG5cbicgKwotICAg
ICcgICAgICA8dXJsPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hyb21lL3NpdGUvaWNvbi5wbmc8
L3VybD5cblxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9n
L3RydW5rP3Jldj05MjM2MjwvbGluaz5cblxuJyArCi0gICAgJyAgICA8L2ltYWdlPlxuXG4nICsK
LSAgICAnICAgIDxpdGVtPlxuJyArCi0gICAgJyAgICAgICAgICA8YXV0aG9yPmNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPC9hdXRob3I+XG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+V2VkLCAwMyBB
dWcgMjAxMSAwNDoyNjo1MiBHTVQ8L3B1YkRhdGU+XG4nICsKLSAgICAnICAgICAgPHRpdGxlPlJl
dmlzaW9uIDkyMjU5OiBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTIyNTYuXG4nICsKLSAgICAn
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTYgLi4uPC90aXRsZT5cbicgKwot
ICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1OS90
cnVuazwvbGluaz5cbicgKwotICAgICcgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU5L3RydW5rPC9ndWlkPlxuJyArCi0g
ICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcbicgKwotICAgICdVbnJldmlld2VkLCBy
b2xsaW5nIG91dCAmbHQ7YSBjbGFzcz0iY2hhbmdlc2V0IiBocmVmPSJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85MjI1NiIgdGl0bGU9Ik1ha2UgRXZlbnREaXNwYXRjaE1lZGlhdG9y
IFJlZkNvdW50ZWQuIC4uLiImZ3Q7cjkyMjU2Jmx0Oy9hJmd0Oy5cbicgKwotICAgICcmbHQ7YSBj
bGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MjU2IiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiZsdDsvYSZndDtcbicgKwotICAgICcmbHQ7YSBj
bGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTU5MyImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTkzJmx0Oy9hJmd0O1xuJyAr
Ci0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdDYXVzaW5n
IHRvbnMgb2YgY3Jhc2hlcyBvbiB0aGUgY2hyb21pdW0gd2luIGJvdHMgKFJlcXVlc3RlZCBieVxu
JyArCi0gICAgJ2phbWVzciBvbiAjd2Via2l0KS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsK
LSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnUGF0Y2ggYnkgU2hlcmlmZiBCb3QgJmFtcDtsdDsm
bHQ7YSBjbGFzcz0ibWFpbC1saW5rIiBocmVmPSJtYWlsdG86d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDt3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20mbHQ7L2EmZ3Q7JmFtcDtndDsgb24gMjAxMS0wOC0wMlxuJyAr
Ci0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIGRvbS9F
dmVudC5jcHA6XG4nICsKLSAgICAnKiBkb20vRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9FdmVu
dERpc3BhdGNoZXIuY3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoRXZlbnQpOlxuJyArCi0gICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOlxuJyArCi0g
ICAgJyogZG9tL0tleWJvYXJkRXZlbnQuY3BwOlxuJyArCi0gICAgJyogZG9tL0tleWJvYXJkRXZl
bnQuaDpcbicgKwotICAgICcqIGRvbS9Nb3VzZUV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9N
b3VzZUV2ZW50Lmg6XG4nICsKLSAgICAnKiBkb20vTm9kZS5jcHA6XG4nICsKLSAgICAnKFdlYkNv
cmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNw
YXRjaEtleUV2ZW50KTpcbicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNb3VzZUV2
ZW50KTpcbicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KTpcbicg
KwotICAgICcqIGRvbS9XaGVlbEV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9XaGVlbEV2ZW50
Lmg6XG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsK
LSAgICAnICAgICAgPGNhdGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRl
bT48aXRlbT5cbicgKwotICAgICcgICAgICAgICAgPGF1dGhvcj5tYWNwaGVyc29uQGNocm9taXVt
Lm9yZzwvYXV0aG9yPlxuXG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAx
MSAwMjowOToxOSBHTVQ8L3B1YkRhdGU+XG5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNp
b24gOTIyNTY6IFN1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94
U2l6aW5nLCB1c2UgaW4gLi4uPC90aXRsZT5cblxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2L3RydW5rPC9saW5rPlxuXG4nICsKLSAg
ICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC85MjI1Ni90cnVuazwvZ3VpZD5cblxuJyArCi0gICAgJyAgICAgIDxkZXNjcmlw
dGlvbj4mbHQ7cCZndDtcblxuJyArCi0gICAgJ1N1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1p
dGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gQ1NTU3R5bGVTZWxlY3Rvci5cblxuJyAr
Ci0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1NjU3IiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZs
dDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTcm
bHQ7L2EmZ3Q7XG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwotICAgICcmbHQ7cCZndDtc
blxuJyArCi0gICAgJ1Jldmlld2VkIGJ5IFNpbW9uIEZyYXNlci5cblxuJyArCi0gICAgJyZsdDsv
cCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnTm8gbmV3IHRlc3RzIC8g
cmVmYWN0b3Jpbmcgb25seS5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyArCi0gICAgJyZs
dDtwJmd0O1xuXG4nICsKLSAgICAnKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOlxu
XG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZSk6XG5cbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCBmcm9tIEVCb3hTaXppbmcuXG4nICsKLSAg
ICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94U2l6aW5nKTpcbicg
KwotICAgICdJbXBsZW1lbnQgY2FzdCB0byBFQm94U2l6aW5nLlxuJyArCi0gICAgJyogY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KTpcbicgKwotICAgICdVc2UgYXBwcm9wcmlhdGUgbWFjcm8gdG8gc2lt
cGxpZnkgY29kZSB1c2luZyBjYXN0LlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8
L2Rlc2NyaXB0aW9uPlxuJyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5Plxu
JyArCi0gICAgJyAgICA8L2l0ZW0+XG4nICsKLSAgICAnIDwvY2hhbm5lbD5cbicgKwotICAgICc8
L3Jzcz5cbicKLQotdGVzdCgicmViYXNlbGluZVF1ZXVlIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHF1ZXVlID0gbW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChx
dWV1ZSwgW10pOwotICAgIG1vZGVsLnF1ZXVlRm9yUmViYXNlbGluZSgnZmFpbHVyZUluZm8xJyk7
Ci0gICAgbW9kZWwucXVldWVGb3JSZWJhc2VsaW5lKCdmYWlsdXJlSW5mbzInKTsKLSAgICB2YXIg
cXVldWUgPSBtb2RlbC50YWtlUmViYXNlbGluZVF1ZXVlKCk7Ci0gICAgZGVlcEVxdWFsKHF1ZXVl
LCBbJ2ZhaWx1cmVJbmZvMScsICdmYWlsdXJlSW5mbzInXSk7Ci0gICAgdmFyIHF1ZXVlID0gbW9k
ZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1ZSwgW10pOwotfSk7
Ci0KLXRlc3QoInJlYmFzZWxpbmVRdWV1ZSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBxdWV1
ZSA9IG1vZGVsLnRha2VFeHBlY3RhdGlvblVwZGF0ZVF1ZXVlKCk7Ci0gICAgZGVlcEVxdWFsKHF1
ZXVlLCBbXSk7Ci0gICAgbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgnZmFpbHVyZUlu
Zm8xJyk7Ci0gICAgbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgnZmFpbHVyZUluZm8y
Jyk7Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVldWUoKTsK
LSAgICBkZWVwRXF1YWwocXVldWUsIFsnZmFpbHVyZUluZm8xJywgJ2ZhaWx1cmVJbmZvMiddKTsK
LSAgICB2YXIgcXVldWUgPSBtb2RlbC50YWtlRXhwZWN0YXRpb25VcGRhdGVRdWV1ZSgpOwotICAg
IGRlZXBFcXVhbChxdWV1ZSwgW10pOwotfSk7Ci0KLXRlc3QoInVwZGF0ZVJlY2VudENvbW1pdHMi
LCAyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0
b3IoKTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJl
c3BvbnNlRE9NID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUws
ICJhcHBsaWNhdGlvbi94bWwiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsK
LSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkg
ewotICAgICAgICBtb2RlbC51cGRhdGVSZWNlbnRDb21taXRzKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgdmFyIHJlY2VudENvbW1pdHMgPSBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzOwotICAg
ICAgICAgICAgZGVsZXRlIG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgICAgICAgICAk
LmVhY2gocmVjZW50Q29tbWl0cywgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAg
ICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0YS5tZXNzYWdlOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBkZWVwRXF1YWwocmVjZW50Q29tbWl0cywgW3sKLSAgICAgICAgICAgICAgICAi
cmV2aXNpb24iOiA5MjI1OSwKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIy
NTk6IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjI1Ni5cbmh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzkyMjU2IC4uLiIsCi0gICAgICAgICAgICAgICAgInRpbWUiOiAiV2VkLCAw
MyBBdWcgMjAxMSAwNDoyNjo1MiBHTVQiLAotICAgICAgICAgICAgICAgICJzdW1tYXJ5IjogIlVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjI1Ni4iLAotICAgICAgICAgICAgICAgICJhdXRob3Ii
OiAiU2hlcmlmZiBCb3QiLAotICAgICAgICAgICAgICAgICJyZXZpZXdlciI6IG51bGwsCi0gICAg
ICAgICAgICAgICAgImJ1Z0lEIjogNjU1OTMsCi0gICAgICAgICAgICAgICAgInJldmVydGVkUmV2
aXNpb24iOiA5MjI1NgotICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAicmV2aXNp
b24iOiA5MjI1NiwKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIyNTY6IFN1
cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2Ug
aW4gLi4uIiwKLSAgICAgICAgICAgICAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAyOjA5
OjE5IEdNVCIsCi0gICAgICAgICAgICAgICAgInN1bW1hcnkiOiAiU3VwcG9ydCBjYXN0IGJldHdl
ZW4gQ1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBpbiBDU1NTdHlsZVNlbGVj
dG9yLiIsCi0gICAgICAgICAgICAgICAgImF1dGhvciI6ICJtYWNwaGVyc29uQGNocm9taXVtLm9y
ZyIsCi0gICAgICAgICAgICAgICAgInJldmlld2VyIjogIlNpbW9uIEZyYXNlciIsCi0gICAgICAg
ICAgICAgICAgImJ1Z0lEIjogNjU2NTcsCi0gICAgICAgICAgICAgICAgInJldmVydGVkUmV2aXNp
b24iOiB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgIndhc1JldmVydGVkIjogdHJ1ZQotICAg
ICAgICAgICAgfV0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJjb21taXRE
YXRhTGlzdEZvclJldmlzaW9uUmFuZ2UiLCA2LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxh
dG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2Fs
bGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNl
cigpOwotICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFyc2VyLnBhcnNlRnJvbVN0cmlu
ZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94bWwiKTsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVs
YXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBtb2RlbC51cGRhdGVSZWNlbnRDb21t
aXRzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZnVuY3Rpb24gZXh0cmFjdEJ1Z0lEcyhjb21t
aXREYXRhKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBjb21taXREYXRh
LmJ1Z0lEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWVwRXF1YWwobW9kZWwuY29t
bWl0RGF0YUxpc3RGb3JSZXZpc2lvblJhbmdlKDkyMjU5LCA5MjI1OSkubWFwKGV4dHJhY3RCdWdJ
RHMpLCBbNjU1OTNdKTsKLSAgICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXREYXRhTGlz
dEZvclJldmlzaW9uUmFuZ2UoOTIyNTYsIDkyMjU5KS5tYXAoZXh0cmFjdEJ1Z0lEcyksIFs2NTY1
NywgNjU1OTNdKTsKLSAgICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXREYXRhTGlzdEZv
clJldmlzaW9uUmFuZ2UoOTIyNTksIDkyMjU2KS5tYXAoZXh0cmFjdEJ1Z0lEcyksIFtdKTsKLSAg
ICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2Uo
MCwgOTIyNTYpLm1hcChleHRyYWN0QnVnSURzKSwgWzY1NjU3XSk7Ci0gICAgICAgICAgICBkZWVw
RXF1YWwobW9kZWwuY29tbWl0RGF0YUxpc3RGb3JSZXZpc2lvblJhbmdlKDkyMjU2LCAwKS5tYXAo
ZXh0cmFjdEJ1Z0lEcyksIFtdKTsKLSAgICAgICAgICAgIGRlbGV0ZSBtb2RlbC5zdGF0ZS5yZWNl
bnRDb21taXRzOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL25ldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbmV0Lmpz
CShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9uZXQuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgbmV0ID0gbmV0IHx8IHt9Owot
Ci0oZnVuY3Rpb24gKCkgewotCi1uZXQucG9zdCA9ICQucG9zdDsKLW5ldC5nZXQgPSAkLmdldDsK
LW5ldC5hamF4ID0gJC5hamF4OwotCi1uZXQucHJvYmUgPSBmdW5jdGlvbih1cmwsIG9wdGlvbnMp
Ci17Ci0gICAgdmFyIHNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3Jp
cHQnKTsKLSAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgJChzY3JpcHRFbGVtZW50KS5kZXRhY2goKTsKLSAgICAgICAgaWYgKG9w
dGlvbnMuc3VjY2VzcykKLSAgICAgICAgICAgIG9wdGlvbnMuc3VjY2Vzcy5jYWxsKCk7Ci0gICAg
fSwgZmFsc2UpOwotICAgIHNjcmlwdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgJChzY3JpcHRFbGVtZW50KS5kZXRhY2goKTsKLSAgICAgICAg
aWYgKG9wdGlvbnMuZXJyb3IpCi0gICAgICAgICAgICBvcHRpb25zLmVycm9yLmNhbGwoKTsKLSAg
ICB9LCBmYWxzZSk7Ci0gICAgc2NyaXB0RWxlbWVudC5zcmMgPSB1cmw7Ci0gICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsKLX07Ci0KLS8vIGpRdWVyeSBtYWtlcyBq
c29ucCByZXF1ZXN0cyBzb21ld2hhdCB1Z2x5ICh3aGljaCBpcyBmYWlyIGdpdmVuIHRoYXQgdGhl
eSdyZQotLy8gdGVycmlibGUgZm9yIHNlY3VyaXR5KS4gV2UgdXNlIHRoaXMgd3JhcHBlciB0byBt
YWtlIG91ciBsaXZlcyBzbGlnaHRseSBlYXNpZXIuCi1uZXQuanNvbnAgPSBmdW5jdGlvbih1cmws
IG9uc3VjY2VzcykKLXsKLSAgICAkLmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAg
ZGF0YVR5cGU6ICdqc29ucCcsCi0gICAgICAgIHN1Y2Nlc3M6IG9uc3VjY2VzcwotICAgIH0pOwot
fTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9uZXRfdW5pdHRlc3RzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9uZXRfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1
NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9uZXRfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRXhwb3J0IE5ldHdvcmtTaW11bGF0b3Ig
Zm9yIHVzZSBieSBvdGhlciB1bml0dGVzdHMuCi1mdW5jdGlvbiBOZXR3b3JrU2ltdWxhdG9yKCkK
LXsKLSAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gW107Ci19OwotCi1OZXR3b3JrU2ltdWxh
dG9yLnByb3RvdHlwZS5zY2hlZHVsZUNhbGxiYWNrID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0g
ICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKLX07Ci0KLU5ldHdvcmtT
aW11bGF0b3IucHJvdG90eXBlLnJ1blRlc3QgPSBmdW5jdGlvbih0ZXN0Q2FzZSkKLXsKLSAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgdmFyIHJlYWxOZXQgPSB3aW5kb3cubmV0OwotCi0gICAgd2lu
ZG93Lm5ldCA9IHt9OwotICAgIGlmIChzZWxmLnByb2JlKQotICAgICAgICBuZXQucHJvYmUgPSBz
ZWxmLnByb2JlOwotICAgIGlmIChzZWxmLmpzb25wKQotICAgICAgICBuZXQuanNvbnAgPSBzZWxm
Lmpzb25wOwotICAgIGlmIChzZWxmLmdldCkKLSAgICAgICAgbmV0LmdldCA9IHNlbGYuZ2V0Owot
ICAgIGlmIChzZWxmLnBvc3QpCi0gICAgICAgIG5ldC5wb3N0ID0gc2VsZi5wb3N0OwotICAgIGlm
IChzZWxmLmFqYXgpCi0gICAgICAgIG5ldC5hamF4ID0gc2VsZi5hamF4OwotCi0gICAgdGVzdENh
c2UoKTsKLQotICAgIHdoaWxlICh0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzLmxlbmd0aCkgewotICAg
ICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzLnNoaWZ0KCk7Ci0gICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgfQotCi0gICAgd2luZG93Lm5ldCA9IHJlYWxOZXQ7Ci0gICAg
ZXF1YWwod2luZG93Lm5ldCwgcmVhbE5ldCwgIkZhaWxlZCB0byByZXN0b3JlIHJlYWwgYmFzZSEi
KTsKLX07Ci0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVsZSgibmV0Iik7Ci0KLS8vIE5vIHVuaXQg
dGVzdHMgeWV0IQotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGluZS5odG1sCShyZXZpc2lv
biA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZWJhc2VsaW5lLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDIxICsyNiwyMSBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiA8
aHRtbD4KIDxoZWFkPgogPHRpdGxlPkdhcmRlbi1PLU1hdGljIFJlYmFzZWxpbmU8L3RpdGxlPgot
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJtYWluLmNzcyI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InN0eWxlcy9tYWluLmNzcyI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5dWkvMS44LjE1
L3RoZW1lcy9iYXNlL2pxdWVyeS11aS5jc3MiPgogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0IHNy
Yz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS42LjIvanF1
ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFw
aXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjguMTUvanF1ZXJ5LXVpLm1pbi5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iY29uZmlnLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiYXNl
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJuZXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9ImNoZWNrb3V0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXN1bHRzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJ1aS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idWkvcmVz
dWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ibW9kZWwuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9ImNvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJjb250cm9s
bGVycy9yZWJhc2VsaW5lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZp
Zy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHRzL25ldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0cy9jaGVja291dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9yZXN1bHRz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHRzL3VpL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdHMvbW9kZWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvY29udHJv
bGxlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvY29udHJvbGxlcnMvcmVi
YXNlbGluZS5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5q
cwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgcmVzdWx0cyA9IHJl
c3VsdHMgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFyIGtUZXN0UmVzdWx0c1NlcnZlciA9
ICdodHRwOi8vdGVzdC1yZXN1bHRzLmFwcHNwb3QuY29tLyc7Ci12YXIga1Rlc3RSZXN1bHRzUXVl
cnkgPSBrVGVzdFJlc3VsdHNTZXJ2ZXIgKyAndGVzdGZpbGU/JwotdmFyIGtUZXN0VHlwZSA9ICds
YXlvdXQtdGVzdHMnOwotdmFyIGtSZXN1bHRzTmFtZSA9ICdmdWxsX3Jlc3VsdHMuanNvbic7Ci12
YXIga01hc3Rlck5hbWUgPSAnQ2hyb21pdW1XZWJraXQnOwotCi12YXIga0xheW91dFRlc3RSZXN1
bHRzU2VydmVyID0gJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRf
dGVzdF9yZXN1bHRzLyc7Ci12YXIga0xheW91dFRlc3RSZXN1bHRzUGF0aCA9ICcvcmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzLyc7Ci0KLXZhciBQQVNTID0gJ1BBU1MnOwotdmFyIFRJTUVPVVQg
PSAnVElNRU9VVCc7Ci12YXIgVEVYVCA9ICdURVhUJzsKLXZhciBDUkFTSCA9ICdDUkFTSCc7Ci12
YXIgSU1BR0UgPSAnSU1BR0UnOwotdmFyIElNQUdFX1RFWFQgPSAnSU1BR0UrVEVYVCc7Ci0KLXZh
ciBrRmFpbGluZ1Jlc3VsdHMgPSBbVElNRU9VVCwgVEVYVCwgQ1JBU0gsIElNQUdFLCBJTUFHRV9U
RVhUXTsKLQotdmFyIGtFeHBlY3RlZEltYWdlU3VmZml4ID0gJy1leHBlY3RlZC5wbmcnOwotdmFy
IGtBY3R1YWxJbWFnZVN1ZmZpeCA9ICctYWN0dWFsLnBuZyc7Ci12YXIga0ltYWdlRGlmZlN1ZmZp
eCA9ICctZGlmZi5wbmcnOwotdmFyIGtUZXh0RGlmZlN1ZmZpeCA9ICctZGlmZi50eHQnOwotdmFy
IGtDcmFzaExvZ1N1ZmZpeCA9ICctY3Jhc2gtbG9nLnR4dCc7Ci0KLXZhciBrUE5HRXh0ZW5zaW9u
ID0gJ3BuZyc7Ci12YXIga1RYVEV4dGVuc2lvbiA9ICd0eHQnOwotCi12YXIga1ByZWZlcnJlZFN1
ZmZpeE9yZGVyID0gWwotICAgIGtFeHBlY3RlZEltYWdlU3VmZml4LAotICAgIGtBY3R1YWxJbWFn
ZVN1ZmZpeCwKLSAgICBrSW1hZ2VEaWZmU3VmZml4LAotICAgIGtUZXh0RGlmZlN1ZmZpeCwKLSAg
ICBrQ3Jhc2hMb2dTdWZmaXgsCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVz
dCBvZiB0aGUgcmVzdWx0IHR5cGVzLgotXTsKLQotLy8gS2luZHMgb2YgcmVzdWx0cy4KLXJlc3Vs
dHMua0FjdHVhbEtpbmQgPSAnYWN0dWFsJzsKLXJlc3VsdHMua0V4cGVjdGVkS2luZCA9ICdleHBl
Y3RlZCc7Ci1yZXN1bHRzLmtEaWZmS2luZCA9ICdkaWZmJzsKLXJlc3VsdHMua1Vua25vd25LaW5k
ID0gJ3Vua25vd24nOwotCi0vLyBUeXBlcyBvZiB0ZXN0cy4KLXJlc3VsdHMua0ltYWdlVHlwZSA9
ICdpbWFnZScKLXJlc3VsdHMua1RleHRUeXBlID0gJ3RleHQnCi0vLyBGSVhNRTogVGhlcmUgYXJl
IG1vcmUgdHlwZXMgb2YgdGVzdHMuCi0KLWZ1bmN0aW9uIGlzRmFpbHVyZShyZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGtGYWlsaW5nUmVzdWx0cy5pbmRleE9mKHJlc3VsdCkgIT0gLTE7Ci19Ci0KLWZ1
bmN0aW9uIGlzU3VjY2VzcyhyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHJlc3VsdCA9PT0gUEFTUzsK
LX0KLQotZnVuY3Rpb24gcmVzdWx0c1BhcmFtZXRlcnMoYnVpbGRlck5hbWUsIHRlc3ROYW1lKQot
ewotICAgIHJldHVybiB7Ci0gICAgICAgIGJ1aWxkZXI6IGJ1aWxkZXJOYW1lLAotICAgICAgICBt
YXN0ZXI6IGtNYXN0ZXJOYW1lLAotICAgICAgICB0ZXN0dHlwZToga1Rlc3RUeXBlLAotICAgICAg
ICBuYW1lOiB0ZXN0TmFtZSwKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwb3NzaWJsZVN1ZmZpeExp
c3RGb3IoZmFpbHVyZVR5cGVMaXN0KQotewotICAgIHZhciBzdWZmaXhMaXN0ID0gW107Ci0KLSAg
ICBmdW5jdGlvbiBwdXNoSW1hZ2VTdWZmaXhlcygpCi0gICAgewotICAgICAgICBzdWZmaXhMaXN0
LnB1c2goa0V4cGVjdGVkSW1hZ2VTdWZmaXgpOwotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0Fj
dHVhbEltYWdlU3VmZml4KTsKLSAgICAgICAgc3VmZml4TGlzdC5wdXNoKGtJbWFnZURpZmZTdWZm
aXgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHB1c2hUZXh0U3VmZml4ZXMoKQotICAgIHsKLSAg
ICAgICAgLy8gJy1leHBlY3RlZC50eHQnLAotICAgICAgICAvLyAnLWFjdHVhbC50eHQnLAotICAg
ICAgICBzdWZmaXhMaXN0LnB1c2goa1RleHREaWZmU3VmZml4KTsKLSAgICAgICAgLy8gJy13ZGlm
Zi5odG1sJywKLSAgICAgICAgLy8gJy1wcmV0dHktZGlmZi5odG1sJywKLSAgICB9Ci0KLSAgICAk
LmVhY2goZmFpbHVyZVR5cGVMaXN0LCBmdW5jdGlvbihpbmRleCwgZmFpbHVyZVR5cGUpIHsKLSAg
ICAgICAgc3dpdGNoKGZhaWx1cmVUeXBlKSB7Ci0gICAgICAgIGNhc2UgSU1BR0U6Ci0gICAgICAg
ICAgICBwdXNoSW1hZ2VTdWZmaXhlcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVEVYVDoKLSAgICAgICAgICAgIHB1c2hUZXh0U3VmZml4ZXMoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIElNQUdFX1RFWFQ6Ci0gICAgICAgICAgICBwdXNoSW1hZ2VTdWZm
aXhlcygpOwotICAgICAgICAgICAgcHVzaFRleHRTdWZmaXhlcygpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1JBU0g6Ci0gICAgICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0Ny
YXNoTG9nU3VmZml4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUgcmVzdWx0
IHR5cGVzLgotICAgICAgICAgICAgLy8gJy1leHBlY3RlZC5odG1sJywKLSAgICAgICAgICAgIC8v
ICctZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCcsCi0gICAgICAgICAgICAvLyAnLWV4cGVjdGVkLndh
dicsCi0gICAgICAgICAgICAvLyAnLWFjdHVhbC53YXYnLAotICAgICAgICAgICAgLy8gLi4uIGFu
ZCBwb3NzaWJseSBtb3JlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIHJldHVybiBiYXNlLnVuaXF1aWZ5QXJyYXkoc3VmZml4TGlzdCk7Ci19Ci0KLXJlc3Vs
dHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QgPSBmdW5jdGlvbihmYWlsdXJlVHlwZSkKLXsK
LSAgICBzd2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICBjYXNlIElNQUdFOgotICAgICAgICByZXR1
cm4gW2tQTkdFeHRlbnNpb25dOwotICAgIGNhc2UgVEVYVDoKLSAgICAgICAgcmV0dXJuIFtrVFhU
RXh0ZW5zaW9uXTsKLSAgICBjYXNlIElNQUdFX1RFWFQ6Ci0gICAgICAgIHJldHVybiBba1RYVEV4
dGVuc2lvbiwga1BOR0V4dGVuc2lvbl07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUgcmVzdWx0IHR5cGVzLgotICAgICAgICAv
LyAnLWV4cGVjdGVkLmh0bWwnLAotICAgICAgICAvLyAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwn
LAotICAgICAgICAvLyAnLWV4cGVjdGVkLndhdicsCi0gICAgICAgIC8vICctYWN0dWFsLndhdics
Ci0gICAgICAgIC8vIC4uLiBhbmQgcG9zc2libHkgbW9yZS4KLSAgICAgICAgcmV0dXJuIFtdOwot
ICAgIH0KLX07Ci0KLXJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0ID0gZnVuY3Rpb24oZmFpbHVyZUJs
b2IpCi17Ci0gICAgcmV0dXJuIGZhaWx1cmVCbG9iLnNwbGl0KCcgJyk7Ci19OwotCi1yZXN1bHRz
LmNhblJlYmFzZWxpbmUgPSBmdW5jdGlvbihmYWlsdXJlVHlwZUxpc3QpCi17Ci0gICAgcmV0dXJu
IGZhaWx1cmVUeXBlTGlzdC5zb21lKGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QoZWxlbWVudCkubGVuZ3RoID4gMDsK
LSAgICB9KTsKLX07Ci0KLWZ1bmN0aW9uIHJlc3VsdHNTdW1tYXJ5VVJMKGJ1aWxkZXJOYW1lLCB0
ZXN0TmFtZSkKLXsKLSAgICByZXR1cm4ga1Rlc3RSZXN1bHRzUXVlcnkgKyAkLnBhcmFtKHJlc3Vs
dHNQYXJhbWV0ZXJzKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSkpOwotfQotCi1mdW5jdGlvbiBkaXJl
Y3RvcnlPZlJlc3VsdHNTdW1tYXJ5VVJMKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSkKLXsKLSAgICB2
YXIgcGFyYW1ldGVycyA9IHJlc3VsdHNQYXJhbWV0ZXJzKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSk7
Ci0gICAgcGFyYW1ldGVyc1snZGlyJ10gPSAxOwotICAgIHJldHVybiBrVGVzdFJlc3VsdHNRdWVy
eSArICQucGFyYW0ocGFyYW1ldGVycyk7Ci19Ci0KLXZhciBnX3Jlc3VsdHNDYWNoZSA9IG5ldyBi
YXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKLSAgICBuZXQu
anNvbnAoa1Rlc3RSZXN1bHRzU2VydmVyICsgJ3Rlc3RmaWxlP2tleT0nICsga2V5LCBjYWxsYmFj
ayk7Ci19KTsKLQotZnVuY3Rpb24gYW55SXNGYWlsdXJlKHJlc3VsdHNMaXN0KQotewotICAgIHJl
dHVybiAkLmdyZXAocmVzdWx0c0xpc3QsIGlzRmFpbHVyZSkubGVuZ3RoID4gMDsKLX0KLQotZnVu
Y3Rpb24gYW55SXNTdWNjZXNzKHJlc3VsdHNMaXN0KQotewotICAgIHJldHVybiAkLmdyZXAocmVz
dWx0c0xpc3QsIGlzU3VjY2VzcykubGVuZ3RoID4gMDsKLX0KLQotZnVuY3Rpb24gYWRkSW1wbGll
ZEV4cGVjdGF0aW9ucyhyZXN1bHRzTGlzdCkKLXsKLSAgICBpZiAocmVzdWx0c0xpc3QuaW5kZXhP
ZignRkFJTCcpID09IC0xKQotICAgICAgICByZXR1cm4gcmVzdWx0c0xpc3Q7Ci0gICAgcmV0dXJu
IHJlc3VsdHNMaXN0LmNvbmNhdChrRmFpbGluZ1Jlc3VsdHMpOwotfQotCi1yZXN1bHRzLnVuZXhw
ZWN0ZWRSZXN1bHRzID0gZnVuY3Rpb24ocmVzdWx0Tm9kZSkKLXsKLSAgICB2YXIgYWN0dWFsUmVz
dWx0cyA9IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuYWN0dWFsKTsKLSAgICB2
YXIgZXhwZWN0ZWRSZXN1bHRzID0gYWRkSW1wbGllZEV4cGVjdGF0aW9ucyhyZXN1bHRzLmZhaWx1
cmVUeXBlTGlzdChyZXN1bHROb2RlLmV4cGVjdGVkKSkKLQotICAgIHJldHVybiAkLmdyZXAoYWN0
dWFsUmVzdWx0cywgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybiBleHBlY3RlZFJl
c3VsdHMuaW5kZXhPZihyZXN1bHQpID09IC0xOwotICAgIH0pOwotfTsKLQotZnVuY3Rpb24gaXNF
eHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmUocmVzdWx0Tm9kZSkKLXsKLSAgICBpZiAoIXJlc3Vs
dE5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIgYWN0dWFsUmVzdWx0cyA9IHJl
c3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuYWN0dWFsKTsKLSAgICBpZiAoYW55SXNT
dWNjZXNzKGFjdHVhbFJlc3VsdHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGFueUlzRmFpbHVyZShhY3R1YWxSZXN1bHRzKTsKLX0KLQotZnVuY3Rpb24gaXNVbmV4cGVjdGVk
RmFpbHVyZShyZXN1bHROb2RlKQotewotICAgIGlmICghcmVzdWx0Tm9kZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChhbnlJc1N1Y2Nlc3MocmVzdWx0cy5mYWlsdXJlVHlwZUxpc3Qo
cmVzdWx0Tm9kZS5hY3R1YWwpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBh
bnlJc0ZhaWx1cmUocmVzdWx0cy51bmV4cGVjdGVkUmVzdWx0cyhyZXN1bHROb2RlKSk7Ci19Ci0K
LWZ1bmN0aW9uIGlzVW5leHBlY3RlZFN1Y2Nlc3NlcyhyZXN1bHROb2RlKQotewotICAgIGlmICgh
cmVzdWx0Tm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhbnlJc0ZhaWx1cmUo
cmVzdWx0cy5mYWlsdXJlVHlwZUxpc3QocmVzdWx0Tm9kZS5hY3R1YWwpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBhbnlJc1N1Y2Nlc3MocmVzdWx0cy51bmV4cGVjdGVkUmVz
dWx0cyhyZXN1bHROb2RlKSk7Ci19Ci0KLWZ1bmN0aW9uIGlzUmVzdWx0Tm9kZShub2RlKQotewot
ICAgIHJldHVybiAhIW5vZGUuYWN0dWFsOwotfQotCi1yZXN1bHRzLmV4cGVjdGVkT3JVbmV4cGVj
dGVkRmFpbHVyZXMgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSkKLXsKLSAgICByZXR1cm4gYmFzZS5m
aWx0ZXJUcmVlKHJlc3VsdHNUcmVlLnRlc3RzLCBpc1Jlc3VsdE5vZGUsIGlzRXhwZWN0ZWRPclVu
ZXhwZWN0ZWRGYWlsdXJlKTsKLX07Ci0KLXJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzID0gZnVu
Y3Rpb24ocmVzdWx0c1RyZWUpCi17Ci0gICAgcmV0dXJuIGJhc2UuZmlsdGVyVHJlZShyZXN1bHRz
VHJlZS50ZXN0cywgaXNSZXN1bHROb2RlLCBpc1VuZXhwZWN0ZWRGYWlsdXJlKTsKLX07Ci0KLXJl
c3VsdHMudW5leHBlY3RlZFN1Y2Nlc3NlcyA9IGZ1bmN0aW9uKHJlc3VsdHNUcmVlKQotewotICAg
IHJldHVybiBiYXNlLmZpbHRlclRyZWUocmVzdWx0c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwg
aXNVbmV4cGVjdGVkU3VjY2Vzc2VzKTsKLX07Ci0KLWZ1bmN0aW9uIHJlc3VsdHNCeVRlc3QocmVz
dWx0c0J5QnVpbGRlciwgZmlsdGVyKQotewotICAgIHZhciByZXN1bHRzQnlUZXN0ID0ge307Ci0K
LSAgICAkLmVhY2gocmVzdWx0c0J5QnVpbGRlciwgZnVuY3Rpb24oYnVpbGRlck5hbWUsIHJlc3Vs
dHNUcmVlKSB7Ci0gICAgICAgICQuZWFjaChmaWx0ZXIocmVzdWx0c1RyZWUpLCBmdW5jdGlvbih0
ZXN0TmFtZSwgcmVzdWx0Tm9kZSkgewotICAgICAgICAgICAgcmVzdWx0c0J5VGVzdFt0ZXN0TmFt
ZV0gPSByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXSB8fCB7fTsKLSAgICAgICAgICAgIHJlc3VsdHNC
eVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJOYW1lXSA9IHJlc3VsdE5vZGU7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotCi0gICAgcmV0dXJuIHJlc3VsdHNCeVRlc3Q7Ci19Ci0KLXJlc3VsdHMuZXhwZWN0
ZWRPclVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCA9IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIp
Ci17Ci0gICAgcmV0dXJuIHJlc3VsdHNCeVRlc3QocmVzdWx0c0J5QnVpbGRlciwgcmVzdWx0cy5l
eHBlY3RlZE9yVW5leHBlY3RlZEZhaWx1cmVzKTsKLX07Ci0KLXJlc3VsdHMudW5leHBlY3RlZEZh
aWx1cmVzQnlUZXN0ID0gZnVuY3Rpb24ocmVzdWx0c0J5QnVpbGRlcikKLXsKLSAgICByZXR1cm4g
cmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJl
cyk7Ci19OwotCi1yZXN1bHRzLnVuZXhwZWN0ZWRTdWNjZXNzZXNCeVRlc3QgPSBmdW5jdGlvbihy
ZXN1bHRzQnlCdWlsZGVyKQotewotICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1
aWxkZXIsIHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nlcyk7Ci19OwotCi1yZXN1bHRzLmNvbGxl
Y3RVbmV4cGVjdGVkUmVzdWx0cyA9IGZ1bmN0aW9uKGRpY3Rpb25hcnlPZlJlc3VsdE5vZGVzKQot
ewotICAgIHZhciBjb2xsZWN0ZWRSZXN1bHRzID0gW107Ci0gICAgJC5lYWNoKGRpY3Rpb25hcnlP
ZlJlc3VsdE5vZGVzLCBmdW5jdGlvbihrZXksIHJlc3VsdE5vZGUpIHsKLSAgICAgICAgY29sbGVj
dGVkUmVzdWx0cyA9IGNvbGxlY3RlZFJlc3VsdHMuY29uY2F0KHJlc3VsdHMudW5leHBlY3RlZFJl
c3VsdHMocmVzdWx0Tm9kZSkpOwotICAgIH0pOwotICAgIHJldHVybiBiYXNlLnVuaXF1aWZ5QXJy
YXkoY29sbGVjdGVkUmVzdWx0cyk7Ci19OwotCi1mdW5jdGlvbiB3YWxrSGlzdG9yeShidWlsZGVy
TmFtZSwgdGVzdE5hbWUsIGNhbGxiYWNrKQotewotICAgIHZhciBpbmRleE9mTmV4dEtleVRvRmV0
Y2ggPSAwOwotICAgIHZhciBrZXlMaXN0ID0gW107Ci0KLSAgICBmdW5jdGlvbiBjb250aW51ZVdh
bGsoKQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4T2ZOZXh0S2V5VG9GZXRjaCA+PSBrZXlMaXN0
Lmxlbmd0aCkgewotICAgICAgICAgICAgcHJvY2Vzc1Jlc3VsdE5vZGUoMCwgbnVsbCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIga2V5ID0ga2V5TGlzdFtp
bmRleE9mTmV4dEtleVRvRmV0Y2hdOwotICAgICAgICArK2luZGV4T2ZOZXh0S2V5VG9GZXRjaDsK
LSAgICAgICAgZ19yZXN1bHRzQ2FjaGUuZ2V0KGtleSwgZnVuY3Rpb24ocmVzdWx0c1RyZWUpIHsK
LSAgICAgICAgICAgIHZhciByZXN1bHROb2RlID0gcmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdChy
ZXN1bHRzVHJlZSwgdGVzdE5hbWUpOwotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0gcGFyc2VJ
bnQocmVzdWx0c1RyZWVbJ3JldmlzaW9uJ10pCi0gICAgICAgICAgICBpZiAoaXNOYU4ocmV2aXNp
b24pKQotICAgICAgICAgICAgICAgIHJldmlzaW9uID0gMDsKLSAgICAgICAgICAgIHByb2Nlc3NS
ZXN1bHROb2RlKHJldmlzaW9uLCByZXN1bHROb2RlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdE5vZGUocmV2aXNpb24sIHJlc3VsdE5vZGUpCi0gICAg
ewotICAgICAgICB2YXIgc2hvdWxkQ29udGludWUgPSBjYWxsYmFjayhyZXZpc2lvbiwgcmVzdWx0
Tm9kZSk7Ci0gICAgICAgIGlmICghc2hvdWxkQ29udGludWUpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNvbnRpbnVlV2FsaygpOwotICAgIH0KLQotICAgIG5ldC5qc29ucChkaXJlY3Rv
cnlPZlJlc3VsdHNTdW1tYXJ5VVJMKGJ1aWxkZXJOYW1lLCBrUmVzdWx0c05hbWUpLCBmdW5jdGlv
bihkaXJlY3RvcnkpIHsKLSAgICAgICAga2V5TGlzdCA9IGRpcmVjdG9yeS5tYXAoZnVuY3Rpb24g
KGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQua2V5OyB9KTsKLSAgICAgICAgY29udGludWVXYWxr
KCk7Ci0gICAgfSk7Ci19Ci0KLXJlc3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVyZSA9IGZ1
bmN0aW9uKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIG9sZGVz
dEZhaWxpbmdSZXZpc2lvbiA9IDA7Ci0gICAgdmFyIG5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IDA7
Ci0KLSAgICB3YWxrSGlzdG9yeShidWlsZGVyTmFtZSwgdGVzdE5hbWUsIGZ1bmN0aW9uKHJldmlz
aW9uLCByZXN1bHROb2RlKSB7Ci0gICAgICAgIGlmICghcmV2aXNpb24pIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXJlc3Vs
dE5vZGUpIHsKLSAgICAgICAgICAgIG5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJldmlzaW9uOwot
ICAgICAgICAgICAgY2FsbGJhY2sob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5n
UmV2aXNpb24pOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpKSB7Ci0gICAgICAgICAgICBvbGRl
c3RGYWlsaW5nUmV2aXNpb24gPSByZXZpc2lvbjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghb2xkZXN0RmFpbGluZ1JldmlzaW9uKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7ICAvLyBXZSBuZWVkIHRvIGtlZXAgbG9va2luZyBmb3IgYSBmYWlsaW5n
IHJldmlzaW9uLgotICAgICAgICBuZXdlc3RQYXNzaW5nUmV2aXNpb24gPSByZXZpc2lvbjsKLSAg
ICAgICAgY2FsbGJhY2sob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNp
b24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSk7Ci19OwotCi1mdW5jdGlvbiBtZXJn
ZVJlZ3Jlc3Npb25SYW5nZXMocmVncmVzc2lvblJhbmdlcykKLXsKLSAgICB2YXIgbWVyZ2VkUmFu
Z2UgPSB7fTsKLQotICAgIG1lcmdlZFJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IDA7Ci0g
ICAgbWVyZ2VkUmFuZ2UubmV3ZXN0UGFzc2luZ1JldmlzaW9uID0gMDsKLQotICAgICQuZWFjaChy
ZWdyZXNzaW9uUmFuZ2VzLCBmdW5jdGlvbihidWlsZGVyTmFtZSwgcmFuZ2UpIHsKLSAgICAgICAg
aWYgKCFyYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24gfHwgIXJhbmdlLm5ld2VzdFBhc3NpbmdS
ZXZpc2lvbikKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmICghbWVyZ2VkUmFuZ2Uu
b2xkZXN0RmFpbGluZ1JldmlzaW9uKQotICAgICAgICAgICAgbWVyZ2VkUmFuZ2Uub2xkZXN0RmFp
bGluZ1JldmlzaW9uID0gcmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICBpZiAo
IW1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJh
bmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsK
LQotICAgICAgICBpZiAocmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uIDwgbWVyZ2VkUmFuZ2Uu
b2xkZXN0RmFpbGluZ1JldmlzaW9uKQotICAgICAgICAgICAgbWVyZ2VkUmFuZ2Uub2xkZXN0RmFp
bGluZ1JldmlzaW9uID0gcmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICBpZiAo
cmFuZ2UubmV3ZXN0UGFzc2luZ1JldmlzaW9uID4gbWVyZ2VkUmFuZ2UubmV3ZXN0UGFzc2luZ1Jl
dmlzaW9uKQotICAgICAgICAgICAgbWVyZ2VkUmFuZ2UubmV3ZXN0UGFzc2luZ1JldmlzaW9uID0g
cmFuZ2UubmV3ZXN0UGFzc2luZ1JldmlzaW9uOwotICAgIH0pOwotICAgIHJldHVybiBtZXJnZWRS
YW5nZTsKLX0KLQotcmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMgPSBmdW5jdGlvbihidWls
ZGVyTmFtZUxpc3QsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcXVlcmllc0luRmxp
Z2h0ID0gYnVpbGRlck5hbWVMaXN0Lmxlbmd0aDsKLSAgICBpZiAoIXF1ZXJpZXNJbkZsaWdodCkK
LSAgICAgICAgY2FsbGJhY2soMCwgMCk7Ci0KLSAgICB2YXIgcmVncmVzc2lvblJhbmdlcyA9IHt9
OwotICAgICQuZWFjaChidWlsZGVyTmFtZUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBidWlsZGVyTmFt
ZSkgewotICAgICAgICByZXN1bHRzLnJlZ3Jlc3Npb25SYW5nZUZvckZhaWx1cmUoYnVpbGRlck5h
bWUsIHRlc3ROYW1lLCBmdW5jdGlvbihvbGRlc3RGYWlsaW5nUmV2aXNpb24sIG5ld2VzdFBhc3Np
bmdSZXZpc2lvbikgewotICAgICAgICAgICAgdmFyIHJhbmdlID0ge307Ci0gICAgICAgICAgICBy
YW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24gPSBvbGRlc3RGYWlsaW5nUmV2aXNpb247Ci0gICAg
ICAgICAgICByYW5nZS5uZXdlc3RQYXNzaW5nUmV2aXNpb24gPSBuZXdlc3RQYXNzaW5nUmV2aXNp
b247Ci0gICAgICAgICAgICByZWdyZXNzaW9uUmFuZ2VzW2J1aWxkZXJOYW1lXSA9IHJhbmdlOwot
Ci0gICAgICAgICAgICAtLXF1ZXJpZXNJbkZsaWdodDsKLSAgICAgICAgICAgIGlmICghcXVlcmll
c0luRmxpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIG1lcmdlZFJhbmdlID0gbWVyZ2VSZWdy
ZXNzaW9uUmFuZ2VzKHJlZ3Jlc3Npb25SYW5nZXMpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG1lcmdlZFJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbWVyZ2VkUmFuZ2UubmV3ZXN0UGFz
c2luZ1JldmlzaW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Owot
Ci1yZXN1bHRzLmNvdW50RmFpbHVyZU9jY3VyYW5jZXMgPSBmdW5jdGlvbihidWlsZGVyTmFtZUxp
c3QsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcXVlcmllc0luRmxpZ2h0ID0gYnVp
bGRlck5hbWVMaXN0Lmxlbmd0aDsKLSAgICBpZiAoIXF1ZXJpZXNJbkZsaWdodCkKLSAgICAgICAg
Y2FsbGJhY2soMCk7Ci0KLSAgICB2YXIgZmFpbHVyZUNvdW50ID0gMDsKLSAgICAkLmVhY2goYnVp
bGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKLSAgICAgICAgd2Fs
a0hpc3RvcnkoYnVpbGRlck5hbWUsIHRlc3ROYW1lLCBmdW5jdGlvbihyZXZpc2lvbiwgcmVzdWx0
Tm9kZSkgewotICAgICAgICAgICAgaWYgKGlzVW5leHBlY3RlZEZhaWx1cmUocmVzdWx0Tm9kZSkp
IHsKLSAgICAgICAgICAgICAgICArK2ZhaWx1cmVDb3VudDsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLS1xdWVyaWVzSW5GbGlnaHQ7
Ci0gICAgICAgICAgICBpZiAoIXF1ZXJpZXNJbkZsaWdodCkKLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhmYWlsdXJlQ291bnQpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
KTsKLSAgICB9KTsKLX07Ci0KLXJlc3VsdHMucmVzdWx0Tm9kZUZvclRlc3QgPSBmdW5jdGlvbihy
ZXN1bHRzVHJlZSwgdGVzdE5hbWUpCi17Ci0gICAgdmFyIHRlc3ROYW1lUGF0aCA9IHRlc3ROYW1l
LnNwbGl0KCcvJyk7Ci0gICAgdmFyIGN1cnJlbnROb2RlID0gcmVzdWx0c1RyZWVbJ3Rlc3RzJ107
Ci0gICAgJC5lYWNoKHRlc3ROYW1lUGF0aCwgZnVuY3Rpb24oaW5kZXgsIHNlZ21lbnROYW1lKSB7
Ci0gICAgICAgIGlmICghY3VycmVudE5vZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGN1cnJlbnROb2RlID0gKHNlZ21lbnROYW1lIGluIGN1cnJlbnROb2RlKSA/IGN1cnJlbnROb2Rl
W3NlZ21lbnROYW1lXSA6IG51bGw7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGN1cnJlbnROb2RlOwot
fTsKLQotZnVuY3Rpb24gcmVzdWx0c0RpcmVjdG9yeUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpCi17
Ci0gICAgcmV0dXJuIGJ1aWxkZXJOYW1lLnJlcGxhY2UoL1sgLigpXS9nLCAnXycpOwotfQotCi1m
dW5jdGlvbiByZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxkZXJOYW1lKQotewotICAgIHJldHVybiBr
TGF5b3V0VGVzdFJlc3VsdHNTZXJ2ZXIgKyByZXN1bHRzRGlyZWN0b3J5Rm9yQnVpbGRlcihidWls
ZGVyTmFtZSkgKyBrTGF5b3V0VGVzdFJlc3VsdHNQYXRoOwotfQotCi1yZXN1bHRzLnJlc3VsdEtp
bmQgPSBmdW5jdGlvbih1cmwpCi17Ci0gICAgaWYgKC8tYWN0dWFsXC5bYS16XSskLy50ZXN0KHVy
bCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtBY3R1YWxLaW5kOwotICAgIGVsc2UgaWYgKC8t
ZXhwZWN0ZWRcLlthLXpdKyQvLnRlc3QodXJsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMua0V4
cGVjdGVkS2luZDsKLSAgICBlbHNlIGlmICgvZGlmZlwuW2Etel0rJC8udGVzdCh1cmwpKQotICAg
ICAgICByZXR1cm4gcmVzdWx0cy5rRGlmZktpbmQ7Ci0gICAgcmV0dXJuIHJlc3VsdHMua1Vua25v
d25LaW5kOwotfQotCi1yZXN1bHRzLnJlc3VsdFR5cGUgPSBmdW5jdGlvbih1cmwpCi17Ci0gICAg
aWYgKC9cLnBuZyQvLnRlc3QodXJsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMua0ltYWdlVHlw
ZTsKLSAgICByZXR1cm4gcmVzdWx0cy5rVGV4dFR5cGU7Ci19Ci0KLWZ1bmN0aW9uIHNvcnRSZXN1
bHRVUkxzQnlTdWZmaXgodXJscykKLXsKLSAgICB2YXIgc29ydGVkVVJMcyA9IFtdOwotICAgICQu
ZWFjaChrUHJlZmVycmVkU3VmZml4T3JkZXIsIGZ1bmN0aW9uKGksIHN1ZmZpeCkgewotICAgICAg
ICAkLmVhY2godXJscywgZnVuY3Rpb24oaiwgdXJsKSB7Ci0gICAgICAgICAgICBpZiAoIWJhc2Uu
ZW5kc1dpdGgodXJsLCBzdWZmaXgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIHNvcnRlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICB9KTsKLSAgICB9KTsKLSAgICBpZiAo
c29ydGVkVVJMcy5sZW5ndGggIT0gdXJscy5sZW5ndGgpCi0gICAgICAgIHRocm93ICJzb3J0UmVz
dWx0VVJMc0J5U3VmZml4IGZhaWxlZCB0byByZXR1cm4gdGhlIHNhbWUgbnVtYmVyIG9mIFVSTHMu
IgotICAgIHJldHVybiBzb3J0ZWRVUkxzOwotfQotCi1yZXN1bHRzLmZldGNoUmVzdWx0c1VSTHMg
PSBmdW5jdGlvbihmYWlsdXJlSW5mbywgY2FsbGJhY2spCi17Ci0gICAgdmFyIHN0ZW0gPSByZXN1
bHRzRGlyZWN0b3J5VVJMKGZhaWx1cmVJbmZvLmJ1aWxkZXJOYW1lKTsKLSAgICB2YXIgdGVzdE5h
bWVTdGVtID0gYmFzZS50cmltRXh0ZW5zaW9uKGZhaWx1cmVJbmZvLnRlc3ROYW1lKTsKLQotICAg
IHZhciBzdWZmaXhMaXN0ID0gcG9zc2libGVTdWZmaXhMaXN0Rm9yKGZhaWx1cmVJbmZvLmZhaWx1
cmVUeXBlTGlzdCk7Ci0KLSAgICB2YXIgcmVzdWx0VVJMcyA9IFtdOwotICAgIHZhciByZXF1ZXN0
c0luRmxpZ2h0ID0gc3VmZml4TGlzdC5sZW5ndGg7Ci0KLSAgICBpZiAoIXJlcXVlc3RzSW5GbGln
aHQpIHsKLSAgICAgICAgY2FsbGJhY2soW10pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gY2hlY2tDb21wbGV0ZSgpCi0gICAgewotICAgICAgICBpZiAoLS1yZXF1ZXN0
c0luRmxpZ2h0ID09IDApCi0gICAgICAgICAgICBjYWxsYmFjayhzb3J0UmVzdWx0VVJMc0J5U3Vm
Zml4KHJlc3VsdFVSTHMpKTsKLSAgICB9Ci0KLSAgICAkLmVhY2goc3VmZml4TGlzdCwgZnVuY3Rp
b24oaW5kZXgsIHN1ZmZpeCkgewotICAgICAgICB2YXIgdXJsID0gc3RlbSArIHRlc3ROYW1lU3Rl
bSArIHN1ZmZpeDsKLSAgICAgICAgbmV0LnByb2JlKHVybCwgewotICAgICAgICAgICAgc3VjY2Vz
czogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0VVJMcy5wdXNoKHVybCk7Ci0g
ICAgICAgICAgICAgICAgY2hlY2tDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgIGVycm9yOiBjaGVja0NvbXBsZXRlLAotICAgICAgICB9KTsKLSAgICB9KTsKLX07Ci0KLXJl
c3VsdHMuZmV0Y2hSZXN1bHRzRm9yQnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCBjYWxs
YmFjaykKLXsKLSAgICBuZXQuanNvbnAocmVzdWx0c1N1bW1hcnlVUkwoYnVpbGRlck5hbWUsIGtS
ZXN1bHRzTmFtZSksIGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAgIGNhbGxiYWNrKHJl
c3VsdHNUcmVlKTsKLSAgICB9KTsKLX07Ci0KLXJlc3VsdHMuZmV0Y2hSZXN1bHRzQnlCdWlsZGVy
ID0gZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVzdWx0
c0J5QnVpbGRlciA9IHt9Ci0gICAgdmFyIHJlcXVlc3RzSW5GbGlnaHQgPSBidWlsZGVyTmFtZUxp
c3QubGVuZ3RoOwotICAgICQuZWFjaChidWlsZGVyTmFtZUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBi
dWlsZGVyTmFtZSkgewotICAgICAgICByZXN1bHRzLmZldGNoUmVzdWx0c0ZvckJ1aWxkZXIoYnVp
bGRlck5hbWUsIGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAgICAgICByZXN1bHRzQnlC
dWlsZGVyW2J1aWxkZXJOYW1lXSA9IHJlc3VsdHNUcmVlOwotICAgICAgICAgICAgLS1yZXF1ZXN0
c0luRmxpZ2h0OwotICAgICAgICAgICAgaWYgKCFyZXF1ZXN0c0luRmxpZ2h0KQotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdHNCeUJ1aWxkZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsK
LX07Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0c191bml0dGVzdHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCShyZXZp
c2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9yZXN1bHRzX3VuaXR0ZXN0cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw0MTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkg
ewotCi1tb2R1bGUoInJlc3VsdHMiKTsKLQotdmFyIGtFeGFtcGxlUmVzdWx0c0pTT04gPSB7Ci0g
ICAgInRlc3RzIjogewotICAgICAgICAic2Nyb2xsYmFycyI6IHsKLSAgICAgICAgICAgICJjdXN0
b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIjogewotICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFH
RSIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiZmxha3ktc2Nyb2xsYmFyLmh0bWwiOiB7
Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAgICJh
Y3R1YWwiOiAiUEFTUyBURVhUIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ1bmV4cGVj
dGVkLXBhc3MuaHRtbCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRkFJTCIsCi0g
ICAgICAgICAgICAgICAgImFjdHVhbCI6ICJQQVNTIgotICAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAidXNlci1zY3JpcHQtdmlk
ZW8tZG9jdW1lbnQuaHRtbCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRkFJTCIs
Ci0gICAgICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQi
OiAiUEFTUyIsCi0gICAgICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICAgICAg
fQotICAgICAgICB9LAotICAgIH0sCi0gICAgInNraXBwZWQiOiAzMzksCi0gICAgIm51bV9yZWdy
ZXNzaW9ucyI6IDE0LAotICAgICJpbnRlcnJ1cHRlZCI6IGZhbHNlLAotICAgICJsYXlvdXRfdGVz
dHNfZGlyIjogIlwvbW50XC9kYXRhXC9iXC9idWlsZFwvc2xhdmVcL1dlYmtpdF9MaW51eFwvYnVp
bGRcL3NyY1wvdGhpcmRfcGFydHlcL1dlYktpdFwvTGF5b3V0VGVzdHMiLAotICAgICJ2ZXJzaW9u
IjogMywKLSAgICAibnVtX3Bhc3NlcyI6IDE1NTY2LAotICAgICJoYXNfcHJldHR5X3BhdGNoIjog
ZmFsc2UsCi0gICAgImZpeGFibGUiOiAxMjMzLAotICAgICJudW1fZmxha3kiOjEsCi0gICAgInVz
ZXNfZXhwZWN0YXRpb25zX2ZpbGUiOiB0cnVlLAotICAgICJoYXNfd2RpZmYiOiB0cnVlLAotICAg
ICJyZXZpc2lvbiI6ICI5MDQzMCIKLX07Ci0KLXRlc3QoInVuZXhwZWN0ZWRGYWlsdXJlcyIsIDEs
IGZ1bmN0aW9uKCkgewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhw
ZWN0ZWRGYWlsdXJlcyhrRXhhbXBsZVJlc3VsdHNKU09OKTsKLSAgICBkZWVwRXF1YWwodW5leHBl
Y3RlZEZhaWx1cmVzLCB7Ci0gICAgICAgICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6
IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICJhY3R1YWwi
OiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRlc3QoInVuZXhwZWN0ZWRGYWls
dXJlc0J5VGVzdCIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXNC
eVRlc3QgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCh7Ci0gICAgICAgICJNb2Nr
IEJ1aWxkZXIiOiBrRXhhbXBsZVJlc3VsdHNKU09OCi0gICAgfSk7Ci0gICAgZGVlcEVxdWFsKHVu
ZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwgewotICAgICAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQi
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKLX0pOwotCi10ZXN0KCJ1bmV4cGVj
dGVkU3VjY2Vzc2VzQnlUZXN0IiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHVuZXhwZWN0ZWRG
YWlsdXJlc0J5VGVzdCA9IHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdCh7Ci0gICAg
ICAgICJNb2NrIEJ1aWxkZXIiOiBrRXhhbXBsZVJlc3VsdHNKU09OCi0gICAgfSk7Ci0gICAgZGVl
cEVxdWFsKHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwgewotICAgICAgICAic2Nyb2xsYmFycy91
bmV4cGVjdGVkLXBhc3MuaHRtbCI6IHsKLSAgICAgICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0g
ICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICJhY3R1
YWwiOiAiUEFTUyIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRl
c3QoInJlc3VsdEtpbmQiLCAxMiwgZnVuY3Rpb24oKSB7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVz
dWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1hY3R1YWwudHh0IiksICJhY3R1YWwiKTsK
LSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWV4
cGVjdGVkLnR4dCIpLCAiZXhwZWN0ZWQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5k
KCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWRpZmYudHh0IiksICJkaWZmIik7Ci0gICAgZXF1YWxz
KHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby5iYXItYWN0dWFsLnR4
dCIpLCAiYWN0dWFsIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4
YW1wbGUuY29tL2Zvby5iYXItZXhwZWN0ZWQudHh0IiksICJleHBlY3RlZCIpOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWRpZmYudHh0
IiksICJkaWZmIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1w
bGUuY29tL2Zvby1hY3R1YWwucG5nIiksICJhY3R1YWwiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5y
ZXN1bHRLaW5kKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWV4cGVjdGVkLnBuZyIpLCAiZXhwZWN0
ZWQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJodHRwOi8vZXhhbXBsZS5jb20v
Zm9vLWRpZmYucG5nIiksICJkaWZmIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgi
aHR0cDovL2V4YW1wbGUuY29tL2Zvby1wcmV0dHktZGlmZi5odG1sIiksICJkaWZmIik7Ci0gICAg
ZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby13ZGlmZi5o
dG1sIiksICJkaWZmIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4
YW1wbGUuY29tL2Zvby14eXouaHRtbCIpLCAidW5rbm93biIpOwotfSk7Ci0KLXRlc3QoInJlc3Vs
dFR5cGUiLCAxMiwgZnVuY3Rpb24oKSB7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgi
aHR0cDovL2V4YW1wbGUuY29tL2Zvby1hY3R1YWwudHh0IiksICJ0ZXh0Iik7Ci0gICAgZXF1YWxz
KHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1leHBlY3RlZC50eHQi
KSwgInRleHQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBs
ZS5jb20vZm9vLWRpZmYudHh0IiksICJ0ZXh0Iik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0
VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby5iYXItYWN0dWFsLnR4dCIpLCAidGV4dCIpOwot
ICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFy
LWV4cGVjdGVkLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWRpZmYudHh0IiksICJ0ZXh0Iik7Ci0gICAgZXF1
YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1hY3R1YWwucG5n
IiksICJpbWFnZSIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFt
cGxlLmNvbS9mb28tZXhwZWN0ZWQucG5nIiksICJpbWFnZSIpOwotICAgIGVxdWFscyhyZXN1bHRz
LnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tZGlmZi5wbmciKSwgImltYWdlIik7
Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1w
cmV0dHktZGlmZi5odG1sIiksICJ0ZXh0Iik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlw
ZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby13ZGlmZi5odG1sIiksICJ0ZXh0Iik7Ci0gICAgZXF1
YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby54eXoiKSwgInRl
eHQiKTsKLX0pOwotCi10ZXN0KCJyZXN1bHROb2RlRm9yVGVzdCIsIDQsIGZ1bmN0aW9uKCkgewot
ICAgIGRlZXBFcXVhbChyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0KGtFeGFtcGxlUmVzdWx0c0pT
T04sICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIpLCB7Ci0gICAgICAgICJleHBlY3Rl
ZCI6ICJQQVNTIiwKLSAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgIH0pOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0KGtFeGFtcGxlUmVzdWx0c0pTT04sICJmb28uaHRt
bCIpLCBudWxsKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdChrRXhhbXBs
ZVJlc3VsdHNKU09OLCAidXNlcnNjcmlwdHMvZm9vLmh0bWwiKSwgbnVsbCk7Ci0gICAgZXF1YWxz
KHJlc3VsdHMucmVzdWx0Tm9kZUZvclRlc3Qoa0V4YW1wbGVSZXN1bHRzSlNPTiwgInVzZXJzY3Jp
cHRzL2Zvby9iYXIuaHRtbCIpLCBudWxsKTsKLX0pOwotCi10ZXN0KCJ3YWxrSGlzdG9yeSIsIDYs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigp
OwotCi0gICAgdmFyIGtleU1hcCA9IHsKLSAgICAgICAgImFneDBaWE4wTFhKbGMzVnNkSE55RUFz
U0NGUmxjM1JHYVd4bEdMbmNVQXciOiB7Ci0gICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAg
ICAgICAgICAgInVzZXJzY3JpcHRzIjogewotICAgICAgICAgICAgICAgICAgICAiYW5vdGhlci10
ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICJyZXZpc2lvbiI6ICI5MDQzMCIKLSAgICAgICAgfSwKLSAgICAgICAgImFneDBaWE4wTFhKbGMz
VnNkSE55RUFzU0NGUmxjM1JHYVd4bEdOZlRVQXciOnsKLSAgICAgICAgICAgICJ0ZXN0cyI6IHsK
LSAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1
c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sIjogewotICAgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICAgICAgICAgImFjdHVhbCI6
ICJURVhUIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAiYW5v
dGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAi
UEFTUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICJyZXZpc2lvbiI6ICI5MDQyOSIKLSAgICAgICAgfSwKLSAgICAgICAgImFneDBaWE4w
TFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdKV0NVUXciOnsKLSAgICAgICAgICAgICJ0ZXN0
cyI6IHsKLSAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJleHBl
Y3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkwNDI2IgotICAgICAgICB9LAotICAgICAgICAi
YWd4MFpYTjBMWEpsYzNWc2RITnlFQXNTQ0ZSbGMzUkdhV3hsR0tiTFVBdyI6ewotICAgICAgICAg
ICAgInRlc3RzIjogewotICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsKLSAgICAgICAg
ICAgICAgICAgICAgInVzZXItc2NyaXB0LXZpZGVvLWRvY3VtZW50Lmh0bWwiOiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRkFJTCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiOTA0MjQi
Ci0gICAgICAgIH0sCi0gICAgICAgICJhYmMiOnsKLSAgICAgICAgICAgICJ0ZXN0cyI6IHsKLSAg
ICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhbm90
aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQ
QVNTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgInJldmlzaW9uIjogIjkwNDI2IgotICAgICAgICB9LAotICAgICAgICAieHl6Ijp7Ci0g
ICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInJldmlz
aW9uIjogIjkwNDI1IgotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5qc29ucCA9
IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2Fs
bGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoL2Rpcj0xLy50ZXN0KHVybCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoL2J1aWxkZXI9TW9jay8udGVzdCh1cmwpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgImtleSI6
ICJhZ3gwWlhOMExYSmxjM1ZzZEhOeUVBc1NDRlJsYzNSR2FXeGxHTG5jVUF3IiB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgeyAia2V5IjogImFneDBaWE4wTFhKbGMzVnNkSE55RUFzU0NGUmxj
M1JHYVd4bEdOZlRVQXciIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7ICJrZXkiOiAiYWd4
MFpYTjBMWEpsYzNWc2RITnlFQXNTQ0ZSbGMzUkdhV3hsR0pXQ1VRdyIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHsgImtleSI6ICJhZ3gwWlhOMExYSmxjM1ZzZEhOeUVBc1NDRlJsYzNSR2FX
eGxHS2JMVUF3IiB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyAia2V5IjogImFneDBaWE4w
TFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdPajVVQXciIH0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICB7ICJrZXkiOiAiYWd4MFpYTjBMWEpsYzNWc2RITnlFQXNTQ0ZSbGMzUkdhV3hsR1At
QVVRdyIgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgImtleSI6ICJhZ3gwWlhOMExYSmxj
M1ZzZEhOeUVBc1NDRlJsYzNSR2FXeGxHUEwzVUF3IiB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgeyAia2V5IjogImFneDBaWE4wTFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdOSEpRQXci
IH0sCi0gICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
L2J1aWxkZXI9QW5vdGhlci8udGVzdCh1cmwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgImtleSI6ICJhYmMiIH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7ICJrZXkiOiAieHl6IiB9LAotICAgICAgICAgICAgICAgICAgICBd
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBvayhmYWxz
ZSwgJ1VuZXhwZWN0ZWQgVVJMOiAnICsgdXJsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBrZXkgPSB1cmwubWF0Y2goL2tleT0o
W14mXSspLylbMV07Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soa2V5TWFwW2tleV0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9OwotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1
bmN0aW9uKCkgewotICAgICAgICByZXN1bHRzLnJlZ3Jlc3Npb25SYW5nZUZvckZhaWx1cmUoIk1v
Y2sgQnVpbGRlciIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKG9s
ZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7Ci0gICAgICAgICAg
ICBlcXVhbHMob2xkZXN0RmFpbGluZ1JldmlzaW9uLCA5MDQyNik7Ci0gICAgICAgICAgICBlcXVh
bHMobmV3ZXN0UGFzc2luZ1JldmlzaW9uLCA5MDQyNCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAg
IHJlc3VsdHMudW5pZnlSZWdyZXNzaW9uUmFuZ2VzKFsiTW9jayBCdWlsZGVyIiwgIkFub3RoZXIg
QnVpbGRlciJdLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBmdW5jdGlvbihvbGRl
c3RGYWlsaW5nUmV2aXNpb24sIG5ld2VzdFBhc3NpbmdSZXZpc2lvbikgewotICAgICAgICAgICAg
ZXF1YWxzKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgOTA0MjYpOwotICAgICAgICAgICAgZXF1YWxz
KG5ld2VzdFBhc3NpbmdSZXZpc2lvbiwgOTA0MjUpOwotICAgICAgICB9KTsKLQotICAgICAgICBy
ZXN1bHRzLmNvdW50RmFpbHVyZU9jY3VyYW5jZXMoWyJNb2NrIEJ1aWxkZXIiLCAiQW5vdGhlciBC
dWlsZGVyIl0sICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKGZhaWx1
cmVDb3VudCkgewotICAgICAgICAgICAgZXF1YWxzKGZhaWx1cmVDb3VudCwgNCk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoIndhbGtIaXN0b3J5IChubyByZXZpc2lvbikiLCAz
LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3Io
KTsKLQotICAgIHZhciBrZXlNYXAgPSB7Ci0gICAgICAgICJ2c2Zkc2Zkc2Fmc2RhZmFzZCI6IHsK
LSAgICAgICAgICAgICJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7
Ci0gICAgICAgICAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInJldmlzaW9uIjogIiIKLSAgICAgICAg
fSwKLSAgICAgICAgImdhdnNhdnNyZmd3YWV2d2VmYXd2YWUiOnsKLSAgICAgICAgICAgICJ0ZXN0
cyI6IHsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiIgotICAgICAg
ICB9LAotICAgIH07Ci0KLSAgICBzaW11bGF0b3IuanNvbnAgPSBmdW5jdGlvbih1cmwsIGNhbGxi
YWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgaWYgKC9kaXI9MS8udGVzdCh1cmwpKSB7Ci0gICAgICAgICAgICAgICAgY2Fs
bGJhY2soWwotICAgICAgICAgICAgICAgICAgICB7ICJrZXkiOiAidnNmZHNmZHNhZnNkYWZhc2Qi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgImtleSI6ICJnYXZzYXZzcmZnd2FldndlZmF3dmFl
IiB9LAotICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB2YXIga2V5ID0gdXJsLm1hdGNoKC9rZXk9KFteJl0rKS8pWzFdOwotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGtleU1hcFtrZXldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7
Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBy
ZXN1bHRzLnJlZ3Jlc3Npb25SYW5nZUZvckZhaWx1cmUoIk1vY2sgQnVpbGRlciIsICJ1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwg
bmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7Ci0gICAgICAgICAgICBlcXVhbHMob2xkZXN0RmFpbGlu
Z1JldmlzaW9uLCAwKTsKLSAgICAgICAgICAgIGVxdWFscyhuZXdlc3RQYXNzaW5nUmV2aXNpb24s
IDApOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJjb2xsZWN0VW5leHBlY3Rl
ZFJlc3VsdHMiLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGljdGlvbmFyeU9mUmVzdWx0Tm9k
ZXMgPSB7Ci0gICAgICAgICJmb28iOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiSU1BR0Ui
LAotICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIKLSAgICAgICAgfSwKLSAgICAgICAgImJh
ciI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICJhY3R1
YWwiOiAiUEFTUyBURVhUIgotICAgICAgICB9LAotICAgICAgICAiYmF6IjogewotICAgICAgICAg
ICAgImV4cGVjdGVkIjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIKLSAg
ICAgICAgfSwKLSAgICAgICAgInF1eCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNT
IiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfSwKLSAgICAgICAgInRh
Y28iOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0
dWFsIjogIlRFWFQiCi0gICAgICAgIH0sCi0gICAgfTsKLQotICAgIHZhciBjb2xsZWN0ZWRSZXN1
bHRzID0gcmVzdWx0cy5jb2xsZWN0VW5leHBlY3RlZFJlc3VsdHMoZGljdGlvbmFyeU9mUmVzdWx0
Tm9kZXMpOwotICAgIGRlZXBFcXVhbChjb2xsZWN0ZWRSZXN1bHRzLCBbIlRFWFQiLCAiSU1BR0Ui
XSk7Ci19KTsKLQotdGVzdCgiZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QiLCA1LCBmdW5jdGlv
bigpIHsKLSAgICBkZWVwRXF1YWwocmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0ZW5zaW9uTGlzdCgn
VEVYVCcpLCBbJ3R4dCddKTsKLSAgICBkZWVwRXF1YWwocmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0
ZW5zaW9uTGlzdCgnSU1BR0UrVEVYVCcpLCBbJ3R4dCcsICdwbmcnXSk7Ci0gICAgZGVlcEVxdWFs
KHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QoJ0lNQUdFJyksIFsncG5nJ10pOwot
ICAgIGRlZXBFcXVhbChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KCdDUkFTSCcp
LCBbXSk7Ci0gICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3Qo
J1RJTUVPVVQnKSwgW10pOwotfSk7Ci0KLXRlc3QoImNhblJlYmFzZWxpbmUiLCA2LCBmdW5jdGlv
bigpIHsKLSAgICBvayhyZXN1bHRzLmNhblJlYmFzZWxpbmUoWydURVhUJ10pKTsKLSAgICBvayhy
ZXN1bHRzLmNhblJlYmFzZWxpbmUoWydJTUFHRStURVhUJywgJ0NSQVNIJ10pKTsKLSAgICBvayhy
ZXN1bHRzLmNhblJlYmFzZWxpbmUoWydJTUFHRSddKSk7Ci0gICAgb2soIXJlc3VsdHMuY2FuUmVi
YXNlbGluZShbJ0NSQVNIJ10pKTsKLSAgICBvayghcmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnVElN
RU9VVCddKSk7Ci0gICAgb2soIXJlc3VsdHMuY2FuUmViYXNlbGluZShbXSkpOwotfSk7Ci0KLXRl
c3QoImZldGNoUmVzdWx0c1VSTHMiLCA1LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9y
ID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHZhciBwcm9iZWRVUkxzID0gW107Ci0g
ICAgc2ltdWxhdG9yLnByb2JlID0gZnVuY3Rpb24odXJsLCBvcHRpb25zKQotICAgIHsKLSAgICAg
ICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBw
cm9iZWRVUkxzLnB1c2godXJsKTsKLSAgICAgICAgICAgIGlmIChiYXNlLmVuZHNXaXRoKHVybCwg
Jy50eHQnKSkKLSAgICAgICAgICAgICAgICBvcHRpb25zLnN1Y2Nlc3MuY2FsbCgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoL3RhY28uK3BuZyQvLnRlc3QodXJsKSkKLSAgICAgICAgICAgICAgICBv
cHRpb25zLnN1Y2Nlc3MuY2FsbCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG9wdGlvbnMuZXJyb3IuY2FsbCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxh
dG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJM
cyh7Ci0gICAgICAgICAgICAnYnVpbGRlck5hbWUnOiAiTW9jayBCdWlsZGVyIiwKLSAgICAgICAg
ICAgICd0ZXN0TmFtZSc6ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsCi0gICAgICAg
ICAgICAnZmFpbHVyZVR5cGVMaXN0JzogWydJTUFHRScsICdDUkFTSCddLAotICAgICAgICB9LCBm
dW5jdGlvbihyZXN1bHRVUkxzKSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0VVJMcywg
WwotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0v
bGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1
bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1jcmFzaC1sb2cudHh0IgotICAgICAgICAgICAg
XSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXN1bHRzLmZldGNoUmVzdWx0c1VSTHMoewotICAg
ICAgICAgICAgJ2J1aWxkZXJOYW1lJzogIk1vY2sgQnVpbGRlciIsCi0gICAgICAgICAgICAndGVz
dE5hbWUnOiAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLAotICAgICAgICAgICAgJ2Zh
aWx1cmVUeXBlTGlzdCc6IFsnVElNRU9VVCddLAotICAgICAgICB9LCBmdW5jdGlvbihyZXN1bHRV
UkxzKSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0VVJMcywgW10pOwotICAgICAgICB9
KTsKLSAgICAgICAgcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzKHsKLSAgICAgICAgICAgICdidWls
ZGVyTmFtZSc6ICJNb2NrIEJ1aWxkZXIiLAotICAgICAgICAgICAgJ3Rlc3ROYW1lJzogInVzZXJz
Y3JpcHRzL3RhY28uaHRtbCIsCi0gICAgICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogWydJTUFH
RScsICdJTUFHRStURVhUJ10sCi0gICAgICAgIH0sIGZ1bmN0aW9uKHJlc3VsdFVSTHMpIHsKLSAg
ICAgICAgICAgIGRlZXBFcXVhbChyZXN1bHRVUkxzLCBbCi0gICAgICAgICAgICAgICAgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tf
QnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvdGFjby1leHBl
Y3RlZC5wbmciLAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2Yv
Y2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQt
dGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tYWN0dWFsLnBuZyIsCi0gICAgICAgICAgICAg
ICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1
bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMv
dGFjby1kaWZmLnBuZyIsCi0gICAgICAgICAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5v
cmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xh
eW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvdGFjby1kaWZmLnR4dCIKLSAgICAgICAgICAg
IF0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRlZXBFcXVhbChwcm9iZWRVUkxzLCBb
Ci0gICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rl
c3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC5wbmciLAotICAgICAgICAiaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVy
L3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0
dWFsLnBuZyIsCi0gICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0v
bGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1
bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1kaWZmLnBuZyIsCi0gICAgICAgICJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1
aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC1jcmFzaC1sb2cudHh0IiwKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9j
aHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10
ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvdGFjby1leHBlY3RlZC5wbmciLAotICAgICAgICAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9j
a19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFj
dHVhbC5wbmciLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVt
L2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy90YWNvLWRpZmYucG5nIiwKLSAgICAgICAgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9y
ZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvdGFjby1kaWZmLnR4dCIKLSAg
ICBdKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1bi11bml0dGVzdHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sCShy
ZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRlc3RzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDU4ICszNyw1OCBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiA8aDIgaWQ9InF1bml0LXVzZXJBZ2VudCI+PC9oMj4KIDxvbCBpZD0icXVuaXQtdGVz
dHMiPjwvb2w+CiAKLTxzY3JpcHQgc3JjPSJjb25maWcuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9ImJhc2UuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJhc2VfdW5pdHRlc3RzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJuZXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Im5l
dF91bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IlRyYWMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InRyYWNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJCdWd6aWxsYS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iYnVnemlsbGFfdW5pdHRlc3Rz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iYnVpbGRlcnNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJj
aGVja291dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iY2hlY2tvdXRfdW5pdHRlc3RzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXN1bHRzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJyZXN1bHRzX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idWkuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InVpL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9ImNvbnRyb2xsZXJzLmpzIj48L3NjcmlwdD4gPCEtLSBUaGlzIHNjcmlwdCBpcyBzbGln
aHRseSBvZiBvcmRlci4gLS0+Ci08c2NyaXB0IHNyYz0idWkvcmVzdWx0c191bml0dGVzdHMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InVpX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0ibW9kZWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Im1vZGVsX3VuaXR0ZXN0
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9jb25maWcuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0cy9iYXNlX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
cy9uZXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0X3VuaXR0ZXN0cy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHRzL3RyYWNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHRzL0J1Z3ppbGxhLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRz
L2J1Z3ppbGxhX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9i
dWlsZGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9idWlsZGVyc191bml0
dGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdHMvcmVzdWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNjcmlwdHMvdWkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVz
dWx0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9jb250cm9sbGVycy5qcyI+
PC9zY3JpcHQ+IDwhLS0gVGhpcyBzY3JpcHQgaXMgc2xpZ2h0bHkgb2Ygb3JkZXIuIC0tPgorPHNj
cmlwdCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdHMvdWlfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHRzL21vZGVsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL21vZGVs
X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9ub3RpZmlj
YXRpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL25vdGlmaWNhdGlv
bnNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KIAogPCEtLSBGSVhNRTogV2Ugc2hvdWxkIGhhdmUg
dGVzdHMgZm9yIHRoZXNlIGZpbGVzISAtLT4KLTxzY3JpcHQgc3JjPSJCdWd6aWxsYS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iV2ViS2l0QnVnemlsbGEuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dHMvV2ViS2l0QnVnemlsbGEuanMiPjwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iVXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJVdGlsaXRpZXNfdW5pdHRlc3RzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL1V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0cy9VdGlsaXRpZXNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KIAotPHNj
cmlwdCBzcmM9Ik5ld0J1Z0Zvcm0uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ik5ld0J1Z0Zv
cm1fdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL05ld0J1Z0Zv
cm0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvTmV3QnVnRm9ybV91bml0dGVz
dHMuanMiPjwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJUZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3Rz
LmpzIj48L3NjcmlwdD4KIAotPHNjcmlwdCBzcmM9IkZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9IkZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybV91bml0dGVz
dHMuanMiPjwvc2NyaXB0PgogCi08c2NyaXB0IHNyYz0iRmxha3lUZXN0QnVnRm9ybS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvRmxha3lUZXN0QnVnRm9ybS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtX3VuaXR0ZXN0cy5qcyI+PC9z
Y3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSJGbGFreUxheW91dFRlc3REZXRlY3Rvci5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3JfdW5pdHRlc3RzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9y
X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSJCdWlsZGJvdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iQnVpbGRib3RfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxkYm90LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHRzL0J1aWxkYm90X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSJC
dWlsZGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJCdWlsZGVyX3VuaXR0ZXN0cy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9CdWlsZGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxkZXJfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KIAogPC9i
b2R5PgogPC9odG1sPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3VtbWFyeS5odG1sCShyZXZpc2lvbiA5MzI1NCkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zdW1tYXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE2ICsz
MywxNiBAQCBKYW1lcywgYSB3ZWIgZGV2ZWxvcGVyIGZyb20gQmlybWluZ2hhbSwgCiA8L2hlYWQ+
CiA8Ym9keT4KIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9s
aWJzL2pxdWVyeS8xLjYuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJj
b25maWcuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJhc2UuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Im5ldC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iVHJhYy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iQnVnemlsbGEuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJ1
aWxkZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJjaGVja291dC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0icmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idWkuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Im1vZGVsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL25ldC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHRzL0J1Z3ppbGxhLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL2J1aWxkZXJz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL2NoZWNrb3V0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNjcmlwdHMvdWkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvbW9kZWwu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9zdW1tYXJ5LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy90cmFjX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvdHJhY191bml0dGVzdHMuanMJKHJldmlzaW9uIDkzMjU0KQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3RyYWNfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDM0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0KLW1vZHVsZSgidHJh
YyIpOwotCi12YXIga0V4YW1wbGVDb21taXREYXRhWE1MID0gCi0gICAgJzw/eG1sIHZlcnNpb249
IjEuMCI/PlxuXG4nICsKLSAgICAnPHJzcyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2Vs
ZW1lbnRzLzEuMS8iIHZlcnNpb249IjIuMCI+XG5cbicgKwotICAgICcgIFxuXG4nICsKLSAgICAn
XG5cbicgKwotICAgICcgIDxjaGFubmVsPlxuXG4nICsKLSAgICAnICAgIDx0aXRsZT5SZXZpc2lv
bnMgb2YgL3RydW5rPC90aXRsZT5cblxuJyArCi0gICAgJyAgICA8bGluaz5odHRwOi8vdHJhYy53
ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9OTIzNjI8L2xpbms+XG5cbicgKwotICAgICcgICAgPGRl
c2NyaXB0aW9uPlRyYWMgTG9nIC0gUmV2aXNpb25zIG9mIC90cnVuazwvZGVzY3JpcHRpb24+XG5c
bicgKwotICAgICcgICAgPGxhbmd1YWdlPmVuLVVTPC9sYW5ndWFnZT5cblxuJyArCi0gICAgJyAg
ICA8Z2VuZXJhdG9yPlRyYWMgMC4xMS43PC9nZW5lcmF0b3I+XG5cbicgKwotICAgICcgICAgPGlt
YWdlPlxuXG4nICsKLSAgICAnICAgICAgPHRpdGxlPldlYktpdDwvdGl0bGU+XG5cbicgKwotICAg
ICcgICAgICA8dXJsPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hyb21lL3NpdGUvaWNvbi5wbmc8
L3VybD5cblxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9n
L3RydW5rP3Jldj05MjM2MjwvbGluaz5cblxuJyArCi0gICAgJyAgICA8L2ltYWdlPlxuXG4nICsK
LSAgICAnICAgIDxpdGVtPlxuXG4nICsKLSAgICAnICAgICAgICAgIDxhdXRob3I+bWFjcGhlcnNv
bkBjaHJvbWl1bS5vcmc8L2F1dGhvcj5cblxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPlRodSwg
MDQgQXVnIDIwMTEgMDI6MDk6MTkgR01UPC9wdWJEYXRlPlxuXG4nICsKLSAgICAnICAgICAgPHRp
dGxlPlJldmlzaW9uIDkyMzQyOiBTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1
ZSBhbmQgRUJveFNpemluZywgdXNlIGluIC4uLjwvdGl0bGU+XG5cbicgKwotICAgICcgICAgICA8
bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0Mi90cnVuazwvbGluaz5c
blxuJyArCi0gICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDIvdHJ1bms8L2d1aWQ+XG5cbicgKwotICAgICcgICAg
ICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG5cbicgKwotICAgICdTdXBwb3J0IGNhc3QgYmV0d2Vl
biBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGluIENTU1N0eWxlU2VsZWN0
b3IuXG5cbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1NyImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imlj
b24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NjU3Jmx0Oy9hJmd0O1xuXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuXG4nICsKLSAgICAn
Jmx0O3AmZ3Q7XG5cbicgKwotICAgICdSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuXG5cbicgKwot
ICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwotICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAgJ05vIG5l
dyB0ZXN0cyAvIHJlZmFjdG9yaW5nIG9ubHkuXG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG5cbicg
KwotICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAgJyogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaDpcblxuJyArCi0gICAgJyhXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUpOlxuXG4nICsKLSAgICAnSW1wbGVtZW50IGNhc3QgZnJvbSBFQm94U2l6aW5n
LlxuJyArCi0gICAgJyhXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJveFNp
emluZyk6XG4nICsKLSAgICAnSW1wbGVtZW50IGNhc3QgdG8gRUJveFNpemluZy5cbicgKwotICAg
ICcqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDpcbicgKwotICAgICcoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6XG4nICsKLSAgICAnVXNlIGFwcHJvcHJpYXRlIG1h
Y3JvIHRvIHNpbXBsaWZ5IGNvZGUgdXNpbmcgY2FzdC5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4n
ICsKLSAgICAnPC9kZXNjcmlwdGlvbj5cbicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9j
YXRlZ29yeT5cbicgKwotICAgICcgICAgPC9pdGVtPjxpdGVtPlxuJyArCi0gICAgJyAgICAgICAg
ICA8YXV0aG9yPmNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPC9hdXRob3I+XG4nICsKLSAgICAnICAg
ICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMjowMTozMSBHTVQ8L3B1YkRhdGU+XG4nICsK
LSAgICAnICAgICAgPHRpdGxlPlJldmlzaW9uIDkyMzQxOiBJbXBsZW1lbnQgRXZlbnRTZW5kZXIu
c2NhbGVQYWdlQnkoKSAuLi48L3RpdGxlPlxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQxL3RydW5rPC9saW5rPlxuJyArCi0gICAgJyAg
ICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvOTIzNDEvdHJ1bms8L2d1aWQ+XG4nICsKLSAgICAnICAgICAgPGRlc2NyaXB0aW9uPiZs
dDtwJmd0O1xuJyArCi0gICAgJ0ltcGxlbWVudCBFdmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpXG4n
ICsKLSAgICAnJmx0O2EgY2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMTMiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsg
Jmx0Oy9zcGFuJmd0O2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAx
MyZsdDsvYSZndDtcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4n
ICsKLSAgICAnUGF0Y2ggYnkgS2VudGFybyBIYXJhICZhbXA7bHQ7Jmx0O2EgY2xhc3M9Im1haWwt
bGluayIgaHJlZj0ibWFpbHRvOmhhcmFrZW5AZ29vZ2xlLmNvbSImZ3Q7Jmx0O3NwYW4gY2xhc3M9
Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aGFyYWtlbkBnb29nbGUuY29tJmx0Oy9hJmd0OyZhbXA7
Z3Q7IG9uIDIwMTEtMDgtMDNcbicgKwotICAgICdSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuXG4n
ICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ0ltcGxl
bWVudGVkIEV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KGYsIHgsIHkpLCB3aGljaCBzY2FsZXMgYSBw
YWdlIGJ5IGEgZmFjdG9yIG9mIGZcbicgKwotICAgICdhbmQgdGhlbiBzZXRzIGEgc2Nyb2xsIHBv
c2l0aW9uIHRvICh4LCB5KS4gRW5hYmxlZCB0aGUgdGVzdHMgdGhhdCBoYWQgYmVlbiB3YWl0aW5n
XG4nICsKLSAgICAnZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBFdmVudFNlbmRlci5zY2FsZVBh
Z2VCeShmLCB4LCB5KS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7
XG4nICsKLSAgICAnU291cmNlL1dlYktpdC9jaHJvbWl1bTpcbicgKwotICAgICcmbHQ7L3AmZ3Q7
XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnVGVzdHM6IGNvbXBvc2l0aW5nL3NjYWxp
bmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWxcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsK
LSAgICAnJmx0O2Jsb2NrcXVvdGUmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAn
ZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5rLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9F
bGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWxcbicgKwotICAgICdmYXN0L2RvbS9S
YW5nZS9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sXG4nICsKLSAgICAnZmFzdC9ldmVudHMv
c2Nyb2xsLWluLXNjYWxlZC1wYWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWxcbicgKwotICAg
ICdmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbFxu
JyArCi0gICAgJ2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3Qu
aHRtbFxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7L2Jsb2NrcXVvdGUmZ3Q7
XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnKiBwdWJsaWMvV2ViVmlldy5oOlxuJyAr
Ci0gICAgJyogc3JjL1dlYlZpZXdJbXBsLmNwcDpcbicgKwotICAgICcoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2NhbGVQYWdlKTogQSB3cmFwcGVyIG1ldGhvZCBmb3Igc2NhbGVQYWdlKCkgaW4gV2Vi
Q29yZS5cbicgKwotICAgICcqIHNyYy9XZWJWaWV3SW1wbC5oOlxuJyArCi0gICAgJyZsdDsvcCZn
dDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdUb29sczpcbicgKwotICAgICcmbHQ7
L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnVGVzdHM6IGNvbXBvc2l0aW5n
L3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWxcbicgKwotICAgICcmbHQ7L3AmZ3Q7
XG4nICsKLSAgICAnJmx0O2Jsb2NrcXVvdGUmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsK
LSAgICAnZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5rLmh0bWxcbicgKwotICAgICdmYXN0
L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWxcbicgKwotICAgICdmYXN0
L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sXG4nICsKLSAgICAnZmFzdC9l
dmVudHMvc2Nyb2xsLWluLXNjYWxlZC1wYWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWxcbicg
KwotICAgICdmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3Qu
aHRtbFxuJyArCi0gICAgJ2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50
LXJlY3QuaHRtbFxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7L2Jsb2NrcXVv
dGUmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9FdmVudFNlbmRlci5jcHA6XG4nICsKLSAgICAnKEV2ZW50U2VuZGVyOjpFdmVudFNl
bmRlcik6IEFkZGVkIGJpbmRpbmdzIGZvciBzY2FsZVBhZ2VCeSgpLlxuJyArCi0gICAgJyhFdmVu
dFNlbmRlcjo6c2NhbGVQYWdlQnkpOiBBIHdyYXBwZXIgbWV0aG9kIGZvciBzY2FsZVBhZ2UoKSBp
biBXZWJWaWV3LlxuJyArCi0gICAgJyogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5k
ZXIuaDpcbicgKwotICAgICcqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6
XG4nICsKLSAgICAnKFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcik6IFJlc2V0cyB0aGUg
c2NhbGUgZmFjdG9yIHRvIDEuXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtw
Jmd0O1xuJyArCi0gICAgJ0xheW91dFRlc3RzOlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwot
ICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBv
c2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLWV4cGVjdGVkLnBuZzogQWRkZWQu
XG4nICsKLSAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvc2NhbGUt
cGFnZS1zaHJpbmstZXhwZWN0ZWQucG5nOiBBZGRlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2No
cm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9zY2FsZS1wYWdlLXNocmluay1leHBlY3RlZC50eHQ6
IEFkZGVkLlxuJyArCi0gICAgJyogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL0VsZW1l
bnQvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
XG4nICsKLSAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUt
cGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuXG4nICsKLSAg
ICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJv
dW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBs
YXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJl
Y3RzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVt
LXdpbi9mYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
XG4nICsKLSAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEVu
YWJsZWQgb25lIHRlc3QuIEVuYWJsZWQgdHdvIHRlc3RzIGZvciBjaHJvbWl1bS1saW51eC5cbicg
KwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnPC9kZXNjcmlwdGlvbj5cbicgKwotICAgICcg
ICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicgKwotICAgICcgICAgPC9pdGVtPjxpdGVt
PlxuJyArCi0gICAgJyAgICAgICAgICA8YXV0aG9yPnJuaXdhQHdlYmtpdC5vcmc8L2F1dGhvcj5c
bicgKwotICAgICcgICAgICA8cHViRGF0ZT5UaHUsIDA0IEF1ZyAyMDExIDAxOjQxOjI5IEdNVDwv
cHViRGF0ZT5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzMzg6IFJldmVydCBh
biBlcnJvbmVvdXMgcmViYXNlbGluZSBmcm9tIHI5MjMxNS5cbicgKwotICAgICcqIC4uLjwvdGl0
bGU+XG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvOTIzMzgvdHJ1bms8L2xpbms+XG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9
ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjMzOC90cnVuazwvZ3Vp
ZD5cbicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKLSAgICAnUmV2
ZXJ0IGFuIGVycm9uZW91cyByZWJhc2VsaW5lIGZyb20gJmx0O2EgY2xhc3M9ImNoYW5nZXNldCIg
aHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzMTUiIHRpdGxlPSJSZW1v
dmUgTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzIGZsYWcgZnJvbSBuYXZpZ2F0b3IgSURM
IGZpbGVzIC4uLiImZ3Q7cjkyMzE1Jmx0Oy9hJmd0Oy5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4n
ICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnKiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAg
ICc8L2Rlc2NyaXB0aW9uPlxuJyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5
PlxuJyArCi0gICAgJyAgICA8L2l0ZW0+PGl0ZW0+XG4nICsKLSAgICAnICAgICAgICAgIDxhdXRo
b3I+bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPC9hdXRob3I+XG4nICsKLSAgICAnICAgICAgPHB1
YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMDoyMjoyMSBHTVQ8L3B1YkRhdGU+XG4nICsKLSAgICAn
ICAgICAgPHRpdGxlPlJldmlzaW9uIDkyMzM3OiBbUXRdW1RleG1hcF1bUkVHUkVTU0lPTl0gaHR0
cDovL3dlYmtpdC5vcmcvYmxvZy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCAuLi48L3RpdGxl
PlxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzkyMzM3L3RydW5rPC9saW5rPlxuJyArCi0gICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJm
YWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzMzcvdHJ1bms8L2d1aWQ+
XG4nICsKLSAgICAnICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCi0gICAgJ1tRdF1b
VGV4bWFwXVtSRUdSRVNTSU9OXSAmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHA6Ly93
ZWJraXQub3JnL2Jsb2ctZmlsZXMvdHJhbnNmb3JtLXN0eWxlLmh0bWwiJmd0OyZsdDtzcGFuIGNs
YXNzPSJpY29uIiZndDsgJmx0Oy9zcGFuJmd0O2h0dHA6Ly93ZWJraXQub3JnL2Jsb2ctZmlsZXMv
dHJhbnNmb3JtLXN0eWxlLmh0bWwmbHQ7L2EmZ3Q7IGRvZXNuXCd0IHNob3cgY29tcG9zaXRlZCBj
b250ZW50XG4nICsKLSAgICAnJmx0O2EgY2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2MjkiJmd0OyZsdDtzcGFuIGNsYXNzPSJp
Y29uIiZndDsgJmx0Oy9zcGFuJmd0O2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTYyOSZsdDsvYSZndDtcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0
O3AmZ3Q7XG4nICsKLSAgICAnUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi5cbicgKwotICAg
ICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnU29tZSBub24tRVMy
IGluaXRpYWxpemF0aW9uIHdhcyB3cm9uZ2Z1bGx5ICNpZmRlZmVkIGluIENQVShYODYpIGFuZCB0
aHVzIGNvbXBpbGVkLW91dC5cbicgKwotICAgICdXaGVuIHB1dCBpdCBpbiB0aGUgY29ycmVjdCAj
aWZkZWYsIGNvbXBvc2l0ZWQgbGF5ZXJzIHdoaWNoIHJlcXVpcmUgYW4gaW50ZXJtZWRpYXRlIGJ1
ZmZlclxuJyArCi0gICAgJ3dvcmsgYWdhaW4uXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0g
ICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ05vIG5ldyB0ZXN0cy4gRXhpc3Rpbmcgb3BhY2l0eSB0
ZXN0cyBpbiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZyB0ZXN0IHRoaXMuXG4nICsKLSAgICAnJmx0
Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJyogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6OkJpdG1h
cFRleHR1cmVHTDo6YmluZCk6XG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJzwvZGVz
Y3JpcHRpb24+XG4nICsKLSAgICAnICAgICAgPGNhdGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsK
LSAgICAnICAgIDwvaXRlbT48aXRlbT5cbicgKwotICAgICcgICAgICAgICAgPGF1dGhvcj5jb21t
aXQtcXVldWVAd2Via2l0Lm9yZzwvYXV0aG9yPlxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPldl
ZCwgMDMgQXVnIDIwMTEgMDQ6MjY6NTIgR01UPC9wdWJEYXRlPlxuJyArCi0gICAgJyAgICAgIDx0
aXRsZT5SZXZpc2lvbiA5MjI1OTogVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyMjU2LlxuJyAr
Ci0gICAgJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IC4uLjwvdGl0bGU+
XG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
OTIyNTkvdHJ1bms8L2xpbms+XG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZh
bHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1OS90cnVuazwvZ3VpZD5c
bicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKLSAgICAnVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgJmx0O2EgY2xhc3M9ImNoYW5nZXNldCIgaHJlZj0iaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTYiIHRpdGxlPSJNYWtlIEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvciBSZWZDb3VudGVkLiAuLi4iJmd0O3I5MjI1NiZsdDsvYSZndDsuXG4nICsKLSAgICAn
Jmx0O2EgY2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC85MjI1NiImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTYmbHQ7L2EmZ3Q7XG4nICsKLSAgICAn
Jmx0O2EgY2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjU1OTMiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFu
Jmd0O2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5MyZsdDsvYSZn
dDtcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAn
Q2F1c2luZyB0b25zIG9mIGNyYXNoZXMgb24gdGhlIGNocm9taXVtIHdpbiBib3RzIChSZXF1ZXN0
ZWQgYnlcbicgKwotICAgICdqYW1lc3Igb24gI3dlYmtpdCkuXG4nICsKLSAgICAnJmx0Oy9wJmd0
O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ1BhdGNoIGJ5IFNoZXJpZmYgQm90ICZh
bXA7bHQ7Jmx0O2EgY2xhc3M9Im1haWwtbGluayIgaHJlZj0ibWFpbHRvOndlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbSImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tJmx0Oy9hJmd0OyZhbXA7Z3Q7IG9uIDIwMTEtMDgt
MDJcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAn
KiBkb20vRXZlbnQuY3BwOlxuJyArCi0gICAgJyogZG9tL0V2ZW50Lmg6XG4nICsKLSAgICAnKiBk
b20vRXZlbnREaXNwYXRjaGVyLmNwcDpcbicgKwotICAgICcoV2ViQ29yZTo6RXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEV2ZW50KTpcbicgKwotICAgICcqIGRvbS9FdmVudERpc3BhdGNoZXIuaDpc
bicgKwotICAgICcqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9LZXli
b2FyZEV2ZW50Lmg6XG4nICsKLSAgICAnKiBkb20vTW91c2VFdmVudC5jcHA6XG4nICsKLSAgICAn
KiBkb20vTW91c2VFdmVudC5oOlxuJyArCi0gICAgJyogZG9tL05vZGUuY3BwOlxuJyArCi0gICAg
JyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEV2ZW50KTpcbicgKwotICAgICcoV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hLZXlFdmVudCk6XG4nICsKLSAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNo
TW91c2VFdmVudCk6XG4nICsKLSAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoV2hlZWxFdmVu
dCk6XG4nICsKLSAgICAnKiBkb20vV2hlZWxFdmVudC5jcHA6XG4nICsKLSAgICAnKiBkb20vV2hl
ZWxFdmVudC5oOlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9u
PlxuJyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAg
ICA8L2l0ZW0+XG4nICsKLSAgICAnIDwvY2hhbm5lbD5cbicgKwotICAgICc8L3Jzcz5cbicKLQot
dmFyIGtFeGFtcGxlQ29tbWl0RGF0YUxpc3QgPSBbewotICAgICJyZXZpc2lvbiI6IDkyMzQyLAot
ICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5MjM0MjogU3VwcG9ydCBjYXN0IGJldHdlZW4gQ1NTUHJp
bWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBpbiAuLi4iLAotICAgICJ0aW1lIjogIlRo
dSwgMDQgQXVnIDIwMTEgMDI6MDk6MTkgR01UIiwKLSAgICAic3VtbWFyeSI6ICJTdXBwb3J0IGNh
c3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGluIENTU1N0
eWxlU2VsZWN0b3IuIiwKLSAgICAiYXV0aG9yIjogIm1hY3BoZXJzb25AY2hyb21pdW0ub3JnIiwK
LSAgICAicmV2aWV3ZXIiOiAiU2ltb24gRnJhc2VyIiwKLSAgICAiYnVnSUQiOiA2NTY1NywKLSAg
ICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IHVuZGVmaW5lZAotfSwgewotICAgICJyZXZpc2lvbiI6IDky
MzQxLAotICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5MjM0MTogSW1wbGVtZW50IEV2ZW50U2VuZGVy
LnNjYWxlUGFnZUJ5KCkgLi4uIiwKLSAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAyOjAx
OjMxIEdNVCIsCi0gICAgInN1bW1hcnkiOiAiSW1wbGVtZW50IEV2ZW50U2VuZGVyLnNjYWxlUGFn
ZUJ5KCkiLAotICAgICJhdXRob3IiOiAiS2VudGFybyBIYXJhIiwKLSAgICAicmV2aWV3ZXIiOiAi
RGFyaW4gRmlzaGVyIiwKLSAgICAiYnVnSUQiOiA1ODAxMywKLSAgICAicmV2ZXJ0ZWRSZXZpc2lv
biI6IHVuZGVmaW5lZAotfSwgewotICAgICJyZXZpc2lvbiI6IDkyMzM4LAotICAgICJ0aXRsZSI6
ICJSZXZpc2lvbiA5MjMzODogUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2VsaW5lIGZyb20gcjky
MzE1LlxuKiAuLi4iLAotICAgICJ0aW1lIjogIlRodSwgMDQgQXVnIDIwMTEgMDE6NDE6MjkgR01U
IiwKLSAgICAic3VtbWFyeSI6ICJSZXZlcnQgYW4gZXJyb25lb3VzIHJlYmFzZWxpbmUgZnJvbSBy
OTIzMTUuIiwKLSAgICAiYXV0aG9yIjogInJuaXdhQHdlYmtpdC5vcmciLAotICAgICJyZXZpZXdl
ciI6IG51bGwsCi0gICAgImJ1Z0lEIjogTmFOLAotICAgICJyZXZlcnRlZFJldmlzaW9uIjogdW5k
ZWZpbmVkCi19LCB7Ci0gICAgInJldmlzaW9uIjogOTIzMzcsCi0gICAgInRpdGxlIjogIlJldmlz
aW9uIDkyMzM3OiBbUXRdW1RleG1hcF1bUkVHUkVTU0lPTl0gaHR0cDovL3dlYmtpdC5vcmcvYmxv
Zy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCAuLi4iLAotICAgICJ0aW1lIjogIlRodSwgMDQg
QXVnIDIwMTEgMDA6MjI6MjEgR01UIiwKLSAgICAic3VtbWFyeSI6ICJbUXRdW1RleG1hcF1bUkVH
UkVTU0lPTl0gIGh0dHA6Ly93ZWJraXQub3JnL2Jsb2ctZmlsZXMvdHJhbnNmb3JtLXN0eWxlLmh0
bWwgZG9lc24ndCBzaG93IGNvbXBvc2l0ZWQgY29udGVudCIsCi0gICAgImF1dGhvciI6ICJub2Ft
LnJvc2VudGhhbEBub2tpYS5jb20iLAotICAgICJyZXZpZXdlciI6ICJCZW5qYW1pbiBQb3VsYWlu
IiwKLSAgICAiYnVnSUQiOiA2NTYyOSwKLSAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IHVuZGVmaW5l
ZAotfSwgewotICAgICJyZXZpc2lvbiI6IDkyMjU5LAotICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5
MjI1OTogVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyMjU2LlxuaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIyNTYgLi4uIiwKLSAgICAidGltZSI6ICJXZWQsIDAzIEF1ZyAyMDEx
IDA0OjI2OjUyIEdNVCIsCi0gICAgInN1bW1hcnkiOiAiVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjkyMjU2LiIsCi0gICAgImF1dGhvciI6ICJTaGVyaWZmIEJvdCIsCi0gICAgInJldmlld2VyIjog
bnVsbCwKLSAgICAiYnVnSUQiOiA2NTU5MywKLSAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IDkyMjU2
Ci19XTsKLQotdGVzdCgiY2hhbmdlc2V0VVJMIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgZXF1YWxz
KHRyYWMuY2hhbmdlc2V0VVJMKDEyMzQpLCAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTIzNCIpOwotfSk7Ci0KLXRlc3QoImxvZ1VSTCIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGVx
dWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM0LCAxMjM2LCBmYWxzZSwgZmFsc2UpLCAiaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEyMzYmc3RvcF9yZXY9MTIzNCZsaW1p
dD00Iik7Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0cnVuaycsIDEyMzQsIDEyMzQsIHRydWUs
IGZhbHNlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM0JnN0b3Bf
cmV2PTEyMzQmbGltaXQ9MiZ2ZXJib3NlPW9uIik7Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0
cnVuaycsIDEyMzYsIDEyMzYsIGZhbHNlLCB0cnVlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
bG9nL3RydW5rP3Jldj0xMjM2JnN0b3BfcmV2PTEyMzYmbGltaXQ9MiZmb3JtYXQ9cnNzIik7Ci0g
ICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0cnVuaycsIDEyMzQsIDEyMzYsIHRydWUsIHRydWUpLCAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEyMzYmc3RvcF9yZXY9MTIzNCZs
aW1pdD00JnZlcmJvc2U9b24mZm9ybWF0PXJzcyIpOwotfSk7Ci0KLXRlc3QoInJlY2VudENvbW1p
dERhdGEiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtT
aW11bGF0b3IoKTsKLSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIGVxdWFscyh1cmwsICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90
cnVuaz92ZXJib3NlPW9uJmZvcm1hdD1yc3MmbGltaXQ9MTAnKTsKLSAgICAgICAgc2ltdWxhdG9y
LnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFyc2VyID0g
bmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFyc2VyLnBh
cnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94bWwiKTsK
LSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0gICAgfTsK
LQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB0cmFjLnJlY2Vu
dENvbW1pdERhdGEoJ3RydW5rJywgMTAsIGZ1bmN0aW9uKGNvbW1pdERhdGFMaXN0KSB7Ci0gICAg
ICAgICAgICAkLmVhY2goY29tbWl0RGF0YUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBjb21taXREYXRh
KSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5jbHVkaW5nIHRoZSBlbnRpcmUgbWVzc2FnZSBtYWtl
cyB0aGUgZGVlcEVxdWFsIGJlbG93IHRvIHVud2llbGR5LgotICAgICAgICAgICAgICAgIGRlbGV0
ZSBjb21taXREYXRhLm1lc3NhZ2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGRlZXBF
cXVhbChjb21taXREYXRhTGlzdCwga0V4YW1wbGVDb21taXREYXRhTGlzdCk7Ci0gICAgICAgIH0p
OwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImNvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdlIiwgMywg
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7
Ci0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAg
ICAgICBlcXVhbHModXJsLCAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEy
MzY1JnN0b3BfcmV2PTEyMzQ1JmxpbWl0PTIyJnZlcmJvc2U9b24mZm9ybWF0PXJzcycpOwotICAg
ICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7Ci0gICAgICAgICAgICB2YXIgcmVzcG9uc2VE
T00gPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlQ29tbWl0RGF0YVhNTCwgImFwcGxp
Y2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VET00pOwotICAgICAg
ICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHRyYWMuY29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UoJ3RydW5rJywgMTIzNDUsIDEyMzY1
LCBmdW5jdGlvbihjb21taXREYXRhTGlzdCkgewotICAgICAgICAgICAgJC5lYWNoKGNvbW1pdERh
dGFMaXN0LCBmdW5jdGlvbihpbmRleCwgY29tbWl0RGF0YSkgewotICAgICAgICAgICAgICAgIC8v
IEluY2x1ZGluZyB0aGUgZW50aXJlIG1lc3NhZ2UgbWFrZXMgdGhlIGRlZXBFcXVhbCBiZWxvdyB0
byB1bndpZWxkeS4KLSAgICAgICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0YS5tZXNzYWdlOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoY29tbWl0RGF0YUxpc3QsIGtF
eGFtcGxlQ29tbWl0RGF0YUxpc3QpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwotCi19KSgp
OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy91aS5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWkuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkg
fHwge307Ci0KLShmdW5jdGlvbiAoKSB7Ci0KLXVpLmRpc3BsYXlVUkxGb3JCdWlsZGVyID0gZnVu
Y3Rpb24oYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuICdodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD8nICsgJC5wYXJhbSh7Ci0gICAgICAgICdi
dWlsZGVyJzogYnVpbGRlck5hbWUKLSAgICB9KTsKLX0KLQotdWkuZGlzcGxheU5hbWVGb3JCdWls
ZGVyID0gZnVuY3Rpb24oYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGJ1aWxkZXJOYW1lLnJl
cGxhY2UoL1dlYmtpdCAvLCAnJyk7Ci19Ci0KLWZ1bmN0aW9uIGRpc3BsYXlOYW1lRm9yUmV2aXNp
b24ocmV2aXNpb25OdW1iZXIpCi17Ci0gICAgcmV0dXJuICdyJyArIHJldmlzaW9uTnVtYmVyOwot
fQotCi11aS51cmxGb3JUZXN0ID0gZnVuY3Rpb24odGVzdE5hbWUpCi17Ci0gICAgcmV0dXJuICdo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvJyArIHRlc3RO
YW1lOwotfQotCi11aS5pbmZvYmFyTWVzc2FnZUZvckNvbXBpbGVFcnJvcnMgPSBmdW5jdGlvbihi
dWlsZGVyTmFtZUxpc3QpCi17Ci0gICAgdmFyIGJsb2NrID0gJCgnPGRpdiBjbGFzcz0iY29tcGls
ZS1lcnJvcnMiPkJ1aWxkIEZhaWxlZDo8dWw+PC91bD48L2Rpdj4nKTsKLQotICAgIHZhciBsaXN0
ID0gJCgndWwnLCBibG9jayk7Ci0gICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24o
aW5kZXgsIGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAgIHZhciBsaXN0RWxlbWVudCA9ICQoJzxsaT48
YSB0YXJnZXQ9Il9ibGFuayI+PC9hPjwvbGk+Jyk7Ci0gICAgICAgIGxpc3QuYXBwZW5kKGxpc3RF
bGVtZW50KTsKLSAgICAgICAgJCgnYScsIGxpc3RFbGVtZW50KS5hdHRyKCdocmVmJywgdWkuZGlz
cGxheVVSTEZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKS50ZXh0KHVpLmRpc3BsYXlOYW1lRm9yQnVp
bGRlcihidWlsZGVyTmFtZSkpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGJsb2NrOwotfTsKLQot
dWkuZmFpbHVyZURldGFpbHNTdGF0dXMgPSBmdW5jdGlvbihmYWlsdXJlSW5mbywgYnVpbGRlck5h
bWVMaXN0KQotewotICAgIHZhciBmYWlsdXJlVHlwZXMgPSBmYWlsdXJlSW5mby5mYWlsdXJlVHlw
ZUxpc3Quam9pbignICcpOwotCi0gICAgdmFyIGJsb2NrID0gJCgnPHNwYW4+PHNwYW4gY2xhc3M9
InRlc3QtbmFtZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJidWlsZGVyLWxpc3QiPjwvc3Bhbj48L3Nw
YW4+Jyk7Ci0gICAgJCgnLnRlc3QtbmFtZScsIGJsb2NrKS5hZGRDbGFzcyhmYWlsdXJlVHlwZXMp
LnRleHQoZmFpbHVyZUluZm8udGVzdE5hbWUpOwotCi0gICAgdmFyIGJ1aWxkZXJMaXN0ID0gJCgn
LmJ1aWxkZXItbGlzdCcsIGJsb2NrKTsKLSAgICAkLmVhY2goYnVpbGRlck5hbWVMaXN0LCBmdW5j
dGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKLSAgICAgICAgdmFyIGJ1aWxkZXIgPSAkKCc8c3Bh
biBjbGFzcz0iYnVpbGRlci1uYW1lIj48L3NwYW4+JykKLSAgICAgICAgYnVpbGRlci50ZXh0KGJ1
aWxkZXJOYW1lKTsKLSAgICAgICAgaWYgKGJ1aWxkZXJOYW1lID09IGZhaWx1cmVJbmZvLmJ1aWxk
ZXJOYW1lKQotICAgICAgICAgICAgYnVpbGRlci5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKLSAgICAg
ICAgYnVpbGRlckxpc3QuYXBwZW5kKGJ1aWxkZXIpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGJs
b2NrOwotfTsKLQotZnVuY3Rpb24gYnVpbGRlclRhYmxlRGF0YUNlbGxzKHJlc3VsdE5vZGVzQnlC
dWlsZGVyKQotewotICAgIGlmICghcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpCi0gICAgICAgIHJlc3Vs
dE5vZGVzQnlCdWlsZGVyID0ge307Ci0KLSAgICB2YXIgbGlzdCA9IFtdOwotCi0gICAgJC5lYWNo
KGNvbmZpZy5rQnVpbGRlcnMsIGZ1bmN0aW9uKGluZGV4LCBidWlsZGVyTmFtZSkgewotICAgICAg
ICB2YXIgYmxvY2sgPSAkKCc8dGQgY2xhc3M9ImJ1aWxkZXIiPjwvdGQ+Jyk7Ci0gICAgICAgIGJs
b2NrLmF0dHIoJ3RpdGxlJywgdWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSk7
Ci0gICAgICAgIGJsb2NrLmF0dHIoY29uZmlnLmtCdWlsZGVyTmFtZUF0dHIsIGJ1aWxkZXJOYW1l
KTsKLQotICAgICAgICBpZiAoYnVpbGRlck5hbWUgaW4gcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsK
LSAgICAgICAgICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhwZWN0ZWRS
ZXN1bHRzKHJlc3VsdE5vZGVzQnlCdWlsZGVyW2J1aWxkZXJOYW1lXSk7Ci0gICAgICAgICAgICB2
YXIgZmFpbHVyZVR5cGVzID0gdW5leHBlY3RlZEZhaWx1cmVzLmpvaW4oJyAnKTsKLSAgICAgICAg
ICAgIGJsb2NrLmF0dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyLCBmYWlsdXJlVHlwZXMpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgbGlzdC5wdXNoKGJsb2NrWzBdKQotICAgIH0pOwotCi0gICAg
cmV0dXJuICQobGlzdCk7Ci19Ci0KLXVpLnN1bW1hcml6ZUZhaWx1cmUgPSBmdW5jdGlvbihmYWls
dXJlQW5hbHlzaXMpCi17Ci0gICAgdmFyIGJsb2NrID0gJCgnPHRyIGNsYXNzPSJyZXN1bHQiPjwv
dHI+Jyk7Ci0gICAgYmxvY2suYXBwZW5kKGJ1aWxkZXJUYWJsZURhdGFDZWxscyhmYWlsdXJlQW5h
bHlzaXMucmVzdWx0Tm9kZXNCeUJ1aWxkZXIpKTsKLSAgICBibG9jay5hcHBlbmQoCi0gICAgICAg
ICc8dGQgY2xhc3M9InRlc3QiPicgKwotICAgICAgICAgICc8ZGl2IGNsYXNzPSJ3aGF0Ij48aW5w
dXQgdHlwZT0iY2hlY2tib3giPiA8YSBjbGFzcz0idGVzdC1uYW1lIj48L2E+PC9kaXY+JyArCi0g
ICAgICAgICc8L3RkPjwvdHI+Jyk7Ci0gICAgYmxvY2suYXR0cihjb25maWcua1Rlc3ROYW1lQXR0
ciwgZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lKTsKLQotICAgIHZhciB1bmV4cGVjdGVkUmVzdWx0
cyA9IHJlc3VsdHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzKGZhaWx1cmVBbmFseXNpcy5yZXN1
bHROb2Rlc0J5QnVpbGRlcik7Ci0gICAgdmFyIGZhaWx1cmVUeXBlcyA9IHVuZXhwZWN0ZWRSZXN1
bHRzLmpvaW4oJyAnKTsKLSAgICAkKCcudGVzdC1uYW1lJywgYmxvY2spLnRleHQoZmFpbHVyZUFu
YWx5c2lzLnRlc3ROYW1lKS5hdHRyKCdocmVmJywgdWkudXJsRm9yVGVzdChmYWlsdXJlQW5hbHlz
aXMudGVzdE5hbWUpKS5hZGRDbGFzcyhmYWlsdXJlVHlwZXMpOwotCi0gICAgcmV0dXJuIGJsb2Nr
OwotfTsKLQotdWkuZmFpbHVyZUluZm9MaXN0Rm9yU3VtbWFyeSA9IGZ1bmN0aW9uKHRlc3RTdW1t
YXJ5KQotewotICAgIHZhciBmYWlsdXJlSW5mb0xpc3QgPSBbXTsKLQotICAgIHZhciB0ZXN0TmFt
ZSA9IHRlc3RTdW1tYXJ5LmF0dHIoY29uZmlnLmtUZXN0TmFtZUF0dHIpOwotICAgICQoJy5idWls
ZGVyJywgdGVzdFN1bW1hcnkpLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBmYWlsdXJl
VHlwZXMgPSAkKHRoaXMpLmF0dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyKTsKLSAgICAgICAg
aWYgKCFmYWlsdXJlVHlwZXMpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdmFyIGZhaWx1
cmVUeXBlTGlzdCA9IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KGZhaWx1cmVUeXBlcyk7Ci0gICAg
ICAgIHZhciBidWlsZGVyTmFtZSA9ICQodGhpcykuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0
cik7Ci0gICAgICAgIGZhaWx1cmVJbmZvTGlzdC5wdXNoKHsKLSAgICAgICAgICAgICd0ZXN0TmFt
ZSc6IHRlc3ROYW1lLAotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogYnVpbGRlck5hbWUsCi0g
ICAgICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogZmFpbHVyZVR5cGVMaXN0LAotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIHJldHVybiBmYWlsdXJlSW5mb0xpc3Q7Ci19OwotCi11aS5jb21t
aXRFbnRyeSA9IGZ1bmN0aW9uKGNvbW1pdERhdGEpCi17Ci0gICAgdmFyIGVudHJ5ID0gJCgnPHRk
IGNsYXNzPSJlbnRyeSI+PC90ZD4nKTsKLQotICAgIGVudHJ5LmFwcGVuZCgnPGRpdiBjbGFzcz0i
ZGV0YWlscyI+PGEgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJyZXZpc2lvbiI+PC9hPiA8c3BhbiBj
bGFzcz0ic3VtbWFyeSI+PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXV0aG9yIj48L3NwYW4+IDxzcGFu
IGNsYXNzPSJyZXZpZXdlci1jb250YWluZXIiPihSZXZpZXdlcjogPHNwYW4gY2xhc3M9InJldmll
d2VyIj48L3NwYW4+KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJyZWdyZXNzaW9ucyI+PC9kaXY+
Jyk7Ci0gICAgJCgnLnN1bW1hcnknLCBlbnRyeSkudGV4dChjb21taXREYXRhLnN1bW1hcnkpOwot
ICAgICQoJy5yZXZpc2lvbicsIGVudHJ5KS5hdHRyKCdocmVmJywgdHJhYy5jaGFuZ2VzZXRVUkwo
Y29tbWl0RGF0YS5yZXZpc2lvbikpLnRleHQoZGlzcGxheU5hbWVGb3JSZXZpc2lvbihjb21taXRE
YXRhLnJldmlzaW9uKSk7Ci0gICAgJCgnLmF1dGhvcicsIGVudHJ5KS50ZXh0KGNvbW1pdERhdGEu
YXV0aG9yKTsKLSAgICBpZiAoY29tbWl0RGF0YS5yZXZpZXdlcikKLSAgICAgICAgJCgnLnJldmll
d2VyJywgZW50cnkpLnRleHQoY29tbWl0RGF0YS5yZXZpZXdlcik7Ci0gICAgZWxzZQotICAgICAg
ICAkKCcucmV2aWV3ZXItY29udGFpbmVyJywgZW50cnkpLmRldGFjaCgpOwotICAgIGlmIChjb21t
aXREYXRhLndhc1JldmVydGVkKQotICAgICAgICBlbnRyeS5hZGRDbGFzcygncmV2ZXJ0ZWQnKTsK
LQotICAgIHJldHVybiBlbnRyeTsKLX0KLQotdWkuY2hhbmdlbG9nID0gZnVuY3Rpb24oY29tbWl0
RGF0YUxpc3QpCi17Ci0gICAgdmFyIGJsb2NrID0gJCgnPHRhYmxlIGNsYXNzPSJjaGFuZ2Vsb2ci
Pjx0Ym9keT48L3Rib2R5PjwvdGFibGU+Jyk7Ci0KLSAgICAkLmVhY2goY29tbWl0RGF0YUxpc3Qs
IGZ1bmN0aW9uKGluZGV4LCBjb21taXREYXRhKSB7Ci0gICAgICAgIHZhciByb3cgPSAkKCc8dHIg
Y2xhc3M9InJldmlzaW9uIj48L3RyPicpOwotICAgICAgICByb3cuYXBwZW5kKGJ1aWxkZXJUYWJs
ZURhdGFDZWxscygpKTsKLSAgICAgICAgcm93LmF0dHIoY29uZmlnLmtSZXZpc2lvbkF0dHIsIGNv
bW1pdERhdGEucmV2aXNpb24pOwotICAgICAgICByb3cuYXBwZW5kKHVpLmNvbW1pdEVudHJ5KGNv
bW1pdERhdGEpKTsKLSAgICAgICAgJCgndGJvZHknLCBibG9jaykuYXBwZW5kKHJvdyk7Ci0gICAg
fSk7Ci0KLSAgICByZXR1cm4gYmxvY2s7Ci19OwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3VpX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdWlfdW5p
dHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aV91bml0dGVz
dHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1
bmN0aW9uICgpIHsKLQotbW9kdWxlKCJpdSIpOwotCi12YXIga0V4YW1wbGVSZXN1bHRzQnlUZXN0
ID0gewotICAgICJzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0
eWxlLmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhw
ZWN0ZWQiOiAiSU1BR0UiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAg
fSwKLSAgICAgICAgIk1vY2sgTGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVY
VCIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAg
ICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxk
ZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0
dWFsIjogIlRFWFQiCi0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlc3QoImluZm9iYXJNZXNzYWdl
Rm9yQ29tcGlsZUVycm9ycyIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciBtZXNzYWdlID0gdWku
aW5mb2Jhck1lc3NhZ2VGb3JDb21waWxlRXJyb3JzKFsnTW9jayBCdWlsZGVyJywgJ0Fub3RoZXIg
QnVpbGRlciddKTsKLSAgICBtZXNzYWdlLndyYXAoJzx3cmFwcGVyPjwvd3JhcHBlcj4nKTsKLSAg
ICBlcXVhbChtZXNzYWdlLnBhcmVudCgpLmh0bWwoKSwKLSAgICAgICAgJzxkaXYgY2xhc3M9ImNv
bXBpbGUtZXJyb3JzIj5CdWlsZCBGYWlsZWQ6PHVsPicgKwotICAgICAgICAgICAgJzxsaT48YSB0
YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVt
LndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1Nb2NrK0J1aWxkZXIiPk1vY2sgQnVpbGRlcjwvYT48
L2xpPicgKwotICAgICAgICAgICAgJzxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1B
bm90aGVyK0J1aWxkZXIiPkFub3RoZXIgQnVpbGRlcjwvYT48L2xpPicgKwotICAgICAgICAnPC91
bD48L2Rpdj4nKTsKLX0pOwotCi10ZXN0KCJmYWlsdXJlRGV0YWlsc1N0YXR1cyIsIDEsIGZ1bmN0
aW9uKCkgewotICAgIHZhciBzdGF0dXMgPSB1aS5mYWlsdXJlRGV0YWlsc1N0YXR1cyh7Ci0gICAg
ICAgICdidWlsZGVyTmFtZSc6ICdNb2NrIEJ1aWxkZXInLAotICAgICAgICAndGVzdE5hbWUnOiAn
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLAotICAgICAgICAnZmFpbHVyZVR5cGVMaXN0
JzogWydURVhUJ10sCi0gICAgfSwgWydNb2NrIEJ1aWxkZXInLCAnQW5vdGhlciBCdWlsZGVyJ10p
OwotICAgIHN0YXR1cy53cmFwKCc8d3JhcHBlcj48L3dyYXBwZXI+Jyk7Ci0gICAgZXF1YWwoc3Rh
dHVzLnBhcmVudCgpLmh0bWwoKSwKLSAgICAgICAgJzxzcGFuPicgKwotICAgICAgICAgICAgJzxz
cGFuIGNsYXNzPSJ0ZXN0LW5hbWUgVEVYVCI+dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWw8
L3NwYW4+JyArCi0gICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJ1aWxkZXItbGlzdCI+JyArCi0g
ICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJidWlsZGVyLW5hbWUgc2VsZWN0ZWQiPk1vY2sg
QnVpbGRlcjwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJ1aWxkZXIt
bmFtZSI+QW5vdGhlciBCdWlsZGVyPC9zcGFuPicgKwotICAgICAgICAgICAgJzwvc3Bhbj4nICsK
LSAgICAgICAgJzwvc3Bhbj4nKTsKLX0pOwotCi10ZXN0KCJyZXN1bHRzLlJlc3VsdHNHcmlkIiwg
MSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3Jp
ZCgpCi0gICAgZ3JpZC5hZGRSZXN1bHRzKFsKLSAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItZGlmZi50eHQnLAotICAgICAgICAnaHR0cDovL2V4
YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1leHBlY3RlZC5wbmcnLAotICAg
ICAgICAnaHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1hY3R1
YWwucG5nJywKLSAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRz
L2Zvby1iYXItZGlmZi5wbmcnLAotICAgIF0pOwotICAgIGVxdWFsKGdyaWQuaW5uZXJIVE1MLAot
ICAgICAgICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKLSAgICAgICAgICAgICc8dGhl
YWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0cj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0
aD5FeHBlY3RlZDwvdGg+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGg+QWN0dWFsPC90aD4n
ICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsKLSAgICAgICAgICAgICAg
ICAnPC90cj4nICsKLSAgICAgICAgICAgICc8L3RoZWFkPicgKwotICAgICAgICAgICAgJzx0Ym9k
eT4nICsKLSAgICAgICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAnPHRk
IGNsYXNzPSJleHBlY3RlZCI+PGltZyBjbGFzcz0iaW1hZ2UtcmVzdWx0IiBzcmM9Imh0dHA6Ly9l
eGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItZXhwZWN0ZWQucG5nIj48L3Rk
PicgKwotICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJhY3R1YWwiPjxpbWcgY2xhc3M9
ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0LXRlc3QtcmVzdWx0
cy9mb28tYmFyLWFjdHVhbC5wbmciPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGQg
Y2xhc3M9ImRpZmYiPjxpbWcgY2xhc3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBs
ZS5jb20vbGF5b3V0LXRlc3QtcmVzdWx0cy9mb28tYmFyLWRpZmYucG5nIj48L3RkPicgKwotICAg
ICAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAg
ICc8L3RhYmxlPicgKwotICAgICAgICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKLSAg
ICAgICAgICAgICc8dGhlYWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0cj4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJzx0aD5FeHBlY3RlZDwvdGg+JyArCi0gICAgICAgICAgICAgICAgICAgICc8
dGg+QWN0dWFsPC90aD4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsK
LSAgICAgICAgICAgICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICc8L3RoZWFkPicgKwotICAg
ICAgICAgICAgJzx0Ym9keT4nICsKLSAgICAgICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAg
ICAgICAgICAgICAnPHRkIGNsYXNzPSJleHBlY3RlZCI+PC90ZD4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJzx0ZCBjbGFzcz0iYWN0dWFsIj48L3RkPicgKwotICAgICAgICAgICAgICAgICAgICAn
PHRkIGNsYXNzPSJkaWZmIj48aWZyYW1lIGNsYXNzPSJ0ZXh0LXJlc3VsdCIgc3JjPSJodHRwOi8v
ZXhhbXBsZS5jb20vbGF5b3V0LXRlc3QtcmVzdWx0cy9mb28tYmFyLWRpZmYudHh0Ij48L2lmcmFt
ZT48L3RkPicgKwotICAgICAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzwvdGJv
ZHk+JyArCi0gICAgICAgICc8L3RhYmxlPicpOwotfSk7Ci0KLXRlc3QoInJlc3VsdHMuUmVzdWx0
c0dyaWQgKGNyYXNobG9nKSIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciBncmlkID0gbmV3IHVp
LnJlc3VsdHMuUmVzdWx0c0dyaWQoKQotICAgIGdyaWQuYWRkUmVzdWx0cyhbJ2h0dHA6Ly9leGFt
cGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9nLnR4dCddKTsKLSAg
ICBlcXVhbChncmlkLmlubmVySFRNTCwgJzxpZnJhbWUgY2xhc3M9InRleHQtcmVzdWx0IiBzcmM9
Imh0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9n
LnR4dCI+PC9pZnJhbWU+Jyk7Ci19KTsKLQotdGVzdCgicmVzdWx0cy5SZXN1bHRzR3JpZCAoZW1w
dHkpIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1
bHRzR3JpZCgpCi0gICAgZ3JpZC5hZGRSZXN1bHRzKFtdKTsKLSAgICBlcXVhbChncmlkLmlubmVy
SFRNTCwgJycpOwotfSk7Ci0KLXRlc3QoInN1bW1hcml6ZUZhaWx1cmUiLCAxLCBmdW5jdGlvbigp
IHsKLSAgICB2YXIgZmFpbHVyZUFuYWx5c2lzID0gewotICAgICAgICAidGVzdE5hbWUiOiAic3Zn
L2R5bmFtaWMtdXBkYXRlcy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LXN2Z2RvbS1iYXNlRnJlcXVl
bmN5LXByb3AuaHRtbCIsCi0gICAgICAgICJyZXN1bHROb2Rlc0J5QnVpbGRlciI6IHsKLSAgICAg
ICAgICAgICJXZWJraXQgTWFjMTAuNSAoQ0cpIjogewotICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAgICAgImFjdHVhbCI6ICJQQVNTIgotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICJXZWJraXQgTWFjMTAuNSAoQ0cpKGRiZykoMikiOiB7Ci0gICAg
ICAgICAgICAgICAgImV4cGVjdGVkIjogIklNQUdFIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFs
IjoiUEFTUyIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHZhciBmYWls
dXJlU3VtbWFyeSA9IHVpLnN1bW1hcml6ZUZhaWx1cmUoZmFpbHVyZUFuYWx5c2lzKTsKLSAgICB2
YXIgZmFpbHVyZUluZm9MaXN0ID0gdWkuZmFpbHVyZUluZm9MaXN0Rm9yU3VtbWFyeShmYWlsdXJl
U3VtbWFyeSk7Ci0KLSAgICBkZWVwRXF1YWwoZmFpbHVyZUluZm9MaXN0LCBbewotICAgICAgICAi
dGVzdE5hbWUiOiAic3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LXN2
Z2RvbS1iYXNlRnJlcXVlbmN5LXByb3AuaHRtbCIsCi0gICAgICAgICJidWlsZGVyTmFtZSI6ICJX
ZWJraXQgTWFjMTAuNSAoQ0cpIiwKLSAgICAgICAgImZhaWx1cmVUeXBlTGlzdCI6IFsKLSAgICAg
ICAgICAgICJQQVNTIgotICAgICAgICBdCi0gICAgICB9LCB7Ci0gICAgICAgICJ0ZXN0TmFtZSI6
ICJzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQtc3ZnZG9tLWJhc2VG
cmVxdWVuY3ktcHJvcC5odG1sIiwKLSAgICAgICAgImJ1aWxkZXJOYW1lIjogIldlYmtpdCBNYWMx
MC41IChDRykoZGJnKSgyKSIsCi0gICAgICAgICJmYWlsdXJlVHlwZUxpc3QiOiBbCi0gICAgICAg
ICAgICAiUEFTUyIKLSAgICAgICAgXQotICAgICAgfQotICAgIF0pOwotfSk7Ci0KLX0pKCk7Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvdW5leHBlY3RlZC1wYXNzZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvdW5leHBlY3RlZC1wYXNzZXMuaHRtbAkocmV2aXNpb24gOTMyNTQp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvdW5leHBlY3RlZC1wYXNzZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiA8aHRt
bD4KIDxoZWFkPgogPHRpdGxlPlVuZXhwZWN0ZWQgUGFzc2VzPC90aXRsZT4KLTxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0ibWFpbi5jc3MiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJzdHlsZXMvbWFpbi5jc3MiPgogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGNsYXNzPSJhY3Rpb25z
Ij4KQEAgLTM0LDE2ICszNCwxNiBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiA8
L2Rpdj4KIDxkaXYgY2xhc3M9InJlY2VudC1oaXN0b3J5Ij48dGFibGUgY2xhc3M9ImNoYW5nZWxv
ZyI+PC90YWJsZT48L2Rpdj4KIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5j
b20vYWpheC9saWJzL2pxdWVyeS8xLjYuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4gCi08c2Ny
aXB0IHNyYz0iY29uZmlnLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiYXNlLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJuZXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IlRyYWMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IkJ1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iY2hlY2tvdXQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InVpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJtb2RlbC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0idW5leHBlY3RlZC1wYXNzZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdHMvY29uZmlnLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL2Jhc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvYnVpbGRlcnMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0cy91aS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9tb2RlbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy91bmV4cGVjdGVkLXBhc3Nlcy5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvdW5leHBl
Y3RlZC1wYXNzZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VuZXhwZWN0ZWQt
cGFzc2VzLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91bmV4cGVjdGVk
LXBhc3Nlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LShmdW5jdGlvbigpIHsKLQotZnVuY3Rpb24gc2VsZWN0ZWRTdWNjZXNzZXMoKQotewotICAgIHZh
ciBmYWlsdXJlSW5mb0xpc3QgPSBbXTsKLQotICAgICQoJy50ZXN0IGlucHV0OmNoZWNrYm94Jyku
ZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCF0aGlzLmNoZWNrZWQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGZhaWx1cmVJbmZvTGlzdCA9IGZhaWx1cmVJbmZvTGlzdC5jb25j
YXQodWkuZmFpbHVyZUluZm9MaXN0Rm9yU3VtbWFyeSgkKHRoaXMpLnBhcmVudHMoJy5yZXN1bHQn
KSkpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGZhaWx1cmVJbmZvTGlzdDsKLX0KLQotZnVuY3Rp
b24gdXBkYXRlRXhwZWN0YXRpb25zRm9yU2VsZWN0ZWQoKQotewotICAgIGNoZWNrb3V0LnVwZGF0
ZUV4cGVjdGF0aW9ucyhzZWxlY3RlZFN1Y2Nlc3NlcygpLCAkLm5vb3ApOwotfQotCi1mdW5jdGlv
biBzaG93VW5leHBlY3RlZFN1Y2Nlc3Moc3VjY2Vzc0FuYWx5c2lzKQotewotICAgIC8vIEZJWE1F
OiBSZW5hbWUgc3VtbWFyaXplRmFpbHVyZSB0byBtYWtlIGl0IGFwcHJvcHJpYXRlIHRvIHVzZSBo
ZXJlLgotICAgICQoJy5yZWNlbnQtaGlzdG9yeSB0YWJsZScpLmFwcGVuZCh1aS5zdW1tYXJpemVG
YWlsdXJlKHN1Y2Nlc3NBbmFseXNpcykpOwotfQotCi1mdW5jdGlvbiB1cGRhdGUoKQotewotICAg
IG1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXIoZnVuY3Rpb24oKSB7Ci0gICAgICAgIG1vZGVs
LmFuYWx5emVVbmV4cGVjdGVkU3VjY2Vzc2VzKHNob3dVbmV4cGVjdGVkU3VjY2Vzcyk7Ci0gICAg
fSk7Ci19Ci0KLSQoJy51cGRhdGUtZXhwZWN0YXRpb25zLXNlbGVjdGVkJykubGl2ZSgnY2xpY2sn
LCB1cGRhdGVFeHBlY3RhdGlvbnNGb3JTZWxlY3RlZCk7Ci0KLSQoZG9jdW1lbnQpLnJlYWR5KHVw
ZGF0ZSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29udHJvbGxlcnMvcmViYXNl
bGluZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29udHJvbGxlcnMvcmViYXNl
bGluZS5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29udHJvbGxlcnMv
cmViYXNlbGluZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLShmdW5jdGlvbigpIHsKLQotJChmdW5jdGlvbigpIHsKLSAgICBtb2RlbC51cGRhdGVSZXN1
bHRzQnlCdWlsZGVyKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcg
dWkucmVzdWx0cy5WaWV3KHsKLSAgICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMu
ZmV0Y2hSZXN1bHRzVVJMcwotICAgICAgICB9KTsKLQotICAgICAgICB2YXIgZmFpbHVyZUJ5VGVz
dCA9IHJlc3VsdHMuZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdChtb2RlbC5zdGF0
ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLSAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgY29udG9s
bGVycy5SZXN1bHRzRGV0YWlscyhyZXN1bHRzVmlldywgZmFpbHVyZUJ5VGVzdCk7Ci0gICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0c1ZpZXcpOwotICAgIH0pOwotfSk7Ci0K
LX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tZ3JlZW4ucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNvbi1ncmVlbi5wbmcJKHJl
dmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNvbi1ncmVlbi5wbmc6OTMy
NTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tZ3JlZW4ucG5nCSh3b3JraW5n
IGNvcHkpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tcmVkLnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tcmVkLnBuZwkocmV2aXNp
b24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9mYXZpY29uLXJlZC5wbmc6OTMyNTQpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tcmVkLnBuZwkod29ya2luZyBjb3B5KQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvQnVnemlsbGEuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvQnVnemlsbGEuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJv
bSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvQnVnemlsbGEuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9CdWd6aWxsYS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKwordmFyIGJ1Z3ppbGxhID0gYnVnemlsbGEgfHwge307CisKKyhmdW5jdGlvbigpIHsK
KwordmFyIGtPcGVuU3RhdHVzZXMgPSB7CisgICAgVU5DT05GSVJNRUQ6IHRydWUsCisgICAgTkVX
OiB0cnVlLAorICAgIEFTU0lHTkVEOiB0cnVlLAorICAgIFJFT1BFTkVEOiB0cnVlLAorfTsKKwor
dmFyIGdfc2VhcmNoQ2FjaGUgPSBuZXcgYmFzZS5Bc3luY2hyb25vdXNDYWNoZShmdW5jdGlvbihx
dWVyeSwgY2FsbGJhY2spIHsKKyAgICB2YXIgdXJsID0gY29uZmlnLmtCdWd6aWxsYVVSTCArICcv
YnVnbGlzdC5jZ2k/JyArICQucGFyYW0oeworICAgICAgICBjdHlwZTogJ3JzcycsCisgICAgICAg
IG9yZGVyOiAnYnVncy5idWdfaWQgZGVzYycsCisgICAgICAgIHF1aWNrc2VhcmNoOiBxdWVyeSwK
KyAgICB9KTsKKworICAgIG5ldC5nZXQodXJsLCBmdW5jdGlvbihyZXNwb25zZVhNTCkgeworICAg
ICAgICB2YXIgZW50cmllcyA9IHJlc3BvbnNlWE1MLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdlbnRy
eScpOworICAgICAgICB2YXIgcmVzdWx0cyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChlbnRy
aWVzLCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMg
YW4gWFNTIHJpc2s/CisgICAgICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gZW50cnkuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3N1bW1hcnknKVswXS50ZXh0Q29udGVudDsKKyAgICAgICAgICAg
IHZhciBzdGF0dXNSb3cgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcigndHIuYnpfZmVlZF9idWdf
c3RhdHVzJyk7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHRpdGxlOiBl
bnRyeS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGl0bGUnKVswXS50ZXh0Q29udGVudCwKKyAgICAg
ICAgICAgICAgICB1cmw6IGVudHJ5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZCcpWzBdLnRleHRD
b250ZW50LAorICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzUm93LmNlbGxzWzFdLnRleHRD
b250ZW50LAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIGNhbGxiYWNrKHJl
c3VsdHMpOworICAgIH0pOworfSk7CisKK2J1Z3ppbGxhLnF1aWNrU2VhcmNoID0gZnVuY3Rpb24o
cXVlcnksIGNhbGxiYWNrKQoreworICAgIGdfc2VhcmNoQ2FjaGUuZ2V0KHF1ZXJ5LCBjYWxsYmFj
ayk7Cit9OworCitidWd6aWxsYS5pc09wZW5TdGF0dXMgPSBmdW5jdGlvbihzdGF0dXMpCit7Cisg
ICAgcmV0dXJuIHN0YXR1cyBpbiBrT3BlblN0YXR1c2VzOworfTsKKworLy8gVGhpcyB2YWx1ZSBp
cyBidWlsdC1pbiB0byBhbGwgQnVnemlsbGEgaW5zdGFsbGF0aW9ucy4gU2VlIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzYxNjYwPi4KK2J1Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGggPSAyNTU7
CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdC5qcwkocmV2aXNpb24g
OTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGJvdC5qczo5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBCdWlsZGJvdChiYXNlVVJMKSB7CisgICAgdGhp
cy5iYXNlVVJMID0gYmFzZVVSTDsKKyAgICB0aGlzLl9jYWNoZSA9IHt9OworfQorCitCdWlsZGJv
dC5wcm90b3R5cGUgPSB7CisgICAgX2J1aWxkZXJzOiB7fSwKKworICAgIGJ1aWxkVVJMOiBmdW5j
dGlvbihidWlsZGVyTmFtZSwgYnVpbGROYW1lKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJhc2VV
UkwgKyAnYnVpbGRlcnMvJyArIGJ1aWxkZXJOYW1lICsgJy9idWlsZHMvJyArIGJ1aWxkTmFtZTsK
KyAgICB9LAorCisgICAgYnVpbGRlck5hbWVkOiBmdW5jdGlvbihuYW1lKSB7CisgICAgICAgIGlm
ICghKG5hbWUgaW4gdGhpcy5fYnVpbGRlcnMpKQorICAgICAgICAgICAgdGhpcy5fYnVpbGRlcnNb
bmFtZV0gPSBuZXcgQnVpbGRlcihuYW1lLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2J1
aWxkZXJzW25hbWVdOworICAgIH0sCisKKyAgICBnZXRUZXN0ZXJzOiBmdW5jdGlvbihjYWxsYmFj
aykgeworICAgICAgICB2YXIgY2FjaGVLZXkgPSAnZ2V0VGVzdGVycyc7CisgICAgICAgIGlmIChj
YWNoZUtleSBpbiB0aGlzLl9jYWNoZSkgeworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fYnVp
bGRlcnNGb3JOYW1lcyh0aGlzLl9jYWNoZVtjYWNoZUtleV0pKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgZ2V0UmVz
b3VyY2UodGhpcy5iYXNlVVJMICsgJ3Jlc3VsdHMvJywgZnVuY3Rpb24oeGhyKSB7CisgICAgICAg
ICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKKyAgICAgICAg
ICAgIHJvb3QuaW5uZXJIVE1MID0geGhyLnJlc3BvbnNlVGV4dDsKKyAgICAgICAgICAgIHZhciBu
YW1lcyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rk
OmZpcnN0LWNoaWxkID4gYSA+IGInKSwgZnVuY3Rpb24oZWxlbSkgeworICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtLmlubmVyVGV4dC5yZXBsYWNlKC9cLyQvLCAnJyk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gbmFtZXM7CisgICAgICAg
ICAgICBjYWxsYmFjayhzZWxmLl9idWlsZGVyc0Zvck5hbWVzKG5hbWVzKSk7CisgICAgICAgIH0p
OworICAgIH0sCisKKyAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHRoZSBm
b2xsb3dpbmcgcHJvcGVydGllczoKKyAgICAvLyAgIHJldmlzaW9uOiBzb3VyY2UgcmV2aXNpb24g
bnVtYmVyIGZvciB0aGlzIGJ1aWxkIChpbnRlZ2VyKQorICAgIC8vICAgYnVpbGROdW1iZXI6IG51
bWJlciBvZiB0aGlzIGJ1aWxkIChpbnRlZ2VyKQorICAgIHBhcnNlQnVpbGROYW1lOiBmdW5jdGlv
bihidWlsZE5hbWUpIHsKKyAgICAgICAgdGhyb3cgIkRlcml2ZWQgY2xhc3NlcyBtdXN0IGltcGxl
bWVudCI7CisgICAgfSwKKworICAgIHJlc3VsdHNEaXJlY3RvcnlVUkw6IGZ1bmN0aW9uKGJ1aWxk
ZXJOYW1lLCBidWlsZE5hbWUpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICdyZXN1
bHRzLycgKyBlbmNvZGVVUklDb21wb25lbnQoYnVpbGRlck5hbWUpICsgJy8nICsgZW5jb2RlVVJJ
Q29tcG9uZW50KGJ1aWxkTmFtZSkgKyAnLyc7CisgICAgfSwKKworICAgIF9idWlsZGVyc0Zvck5h
bWVzOiBmdW5jdGlvbihuYW1lcykgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg
IHJldHVybiBuYW1lcy5tYXAoZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gc2VsZi5idWlsZGVyTmFt
ZWQobmFtZSkgfSk7CisgICAgfSwKK307CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9C
dWlsZGJvdF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvQnVpbGRib3RfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL0J1aWxkYm90X3VuaXR0ZXN0cy5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL0J1aWxkYm90X3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCittb2R1bGUoJ0J1aWxkYm90Jyk7CisK
K3Rlc3QoJ3Jlc3VsdHNEaXJlY3RvcnlVUkwgaXMgVVJJLWVuY29kZWQnLCAxLCBmdW5jdGlvbigp
IHsKKyAgICB2YXIgYnVpbGRib3QgPSBuZXcgQnVpbGRib3QoJ2h0dHA6Ly9idWlsZC5leGFtcGxl
LmNvbS8nKTsKKyAgICBlcXVhbChidWlsZGJvdC5yZXN1bHRzRGlyZWN0b3J5VVJMKCdXaW5kb3dz
IDcgUmVsZWFzZSAoVGVzdHMpJywgJ3IxMCAoNSknKSwgJ2h0dHA6Ly9idWlsZC5leGFtcGxlLmNv
bS9yZXN1bHRzL1dpbmRvd3MlMjA3JTIwUmVsZWFzZSUyMChUZXN0cykvcjEwJTIwKDUpLycpOwor
fSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGVyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXIuanMJKHJldmlzaW9u
IDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvQnVpbGRlci5qczo5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBCdWlsZGVyKG5hbWUsIGJ1aWxkYm90KSB7Cisg
ICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICB0aGlzLmJ1aWxkYm90ID0gYnVpbGRib3Q7CisgICAg
dGhpcy5fY2FjaGUgPSB7fTsKK30KKworQnVpbGRlci5wcm90b3R5cGUgPSB7CisgICAgYnVpbGRV
Ukw6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgeworICAgICAgICByZXR1cm4gdGhpcy5idWlsZGJvdC5i
dWlsZFVSTCh0aGlzLm5hbWUsIGJ1aWxkTmFtZSk7CisgICAgfSwKKworICAgIGZhaWx1cmVEaWFn
bm9zaXNUZXh0QW5kVVJMOiBmdW5jdGlvbihidWlsZE5hbWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0
KSB7CisgICAgICAgIHZhciB1cmxTdGVtID0gdGhpcy5yZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxk
TmFtZSkgKyB0ZXN0TmFtZS5yZXBsYWNlKC9cLlteLl0rJC8sICcnKTsKKyAgICAgICAgdmFyIGRp
YWdub3N0aWNJbmZvID0geworICAgICAgICAgICAgZmFpbDogeworICAgICAgICAgICAgICAgIHRl
eHQ6ICdwcmV0dHkgZGlmZicsCisgICAgICAgICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1wcmV0
dHktZGlmZi5odG1sJywKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmbGFreTogeworICAg
ICAgICAgICAgICAgIHRleHQ6ICdwcmV0dHkgZGlmZiAoZmxha3kpJywKKyAgICAgICAgICAgICAg
ICB1cmw6IHVybFN0ZW0gKyAnLXByZXR0eS1kaWZmLmh0bWwnLAorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHRpbWVvdXQ6IHsKKyAgICAgICAgICAgICAgICB0ZXh0OiAndGltZWQgb3V0JywK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjcmFzaDogeworICAgICAgICAgICAgICAgIHRl
eHQ6ICdjcmFzaCBsb2cnLAorICAgICAgICAgICAgICAgIHVybDogdXJsU3RlbSArICctY3Jhc2gt
bG9nLnR4dCcsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgJ3dlYnByb2Nlc3MgY3Jhc2gn
OiB7CisgICAgICAgICAgICAgICAgdGV4dDogJ3dlYiBwcm9jZXNzIGNyYXNoIGxvZycsCisgICAg
ICAgICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1jcmFzaC1sb2cudHh0JywKKyAgICAgICAgICAg
IH0sCisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIGRpYWdub3N0aWNJbmZvW3Rlc3RSZXN1
bHQuZmFpbHVyZVR5cGVdOworICAgIH0sCisKKyAgICBnZXRCdWlsZE5hbWVzOiBmdW5jdGlvbihj
YWxsYmFjaykgeworICAgICAgICB0aGlzLl9nZXRCdWlsZE5hbWVzRnJvbVJlc3VsdHNEaXJlY3Rv
cnkodGhpcy5idWlsZGJvdC5iYXNlVVJMICsgJ3Jlc3VsdHMvJyArIHRoaXMubmFtZSwgY2FsbGJh
Y2spOworICAgIH0sCisKKyAgICBnZXRNb3N0UmVjZW50Q29tcGxldGVkQnVpbGROdW1iZXI6IGZ1
bmN0aW9uKGNhbGxiYWNrKSB7CisgICAgICAgIHZhciBjYWNoZUtleSA9ICdnZXRNb3N0UmVjZW50
Q29tcGxldGVkQnVpbGROdW1iZXInOworICAgICAgICBpZiAoY2FjaGVLZXkgaW4gdGhpcy5fY2Fj
aGUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2NhY2hlW2NhY2hlS2V5XSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Cisg
ICAgICAgIGdldFJlc291cmNlKHNlbGYuYnVpbGRib3QuYmFzZVVSTCArICdqc29uL2J1aWxkZXJz
LycgKyBzZWxmLm5hbWUsIGZ1bmN0aW9uKHhocikgeworICAgICAgICAgICAgdmFyIGRhdGEgPSBK
U09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworCisgICAgICAgICAgICB2YXIgY3VycmVudEJ1
aWxkcyA9IHt9OworICAgICAgICAgICAgaWYgKCdjdXJyZW50QnVpbGRzJyBpbiBkYXRhKQorICAg
ICAgICAgICAgICAgIGRhdGEuY3VycmVudEJ1aWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkTnVt
YmVyKSB7IGN1cnJlbnRCdWlsZHNbYnVpbGROdW1iZXJdID0gdHJ1ZSB9KTsKKworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IGRhdGEuY2FjaGVkQnVpbGRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1p
KSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGEuY2FjaGVkQnVpbGRzW2ldIGluIGN1cnJlbnRC
dWlsZHMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAg
c2VsZi5fY2FjaGVbY2FjaGVLZXldID0gZGF0YS5jYWNoZWRCdWlsZHNbaV07CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2soZGF0YS5jYWNoZWRCdWlsZHNbaV0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXld
ID0gLTE7CisgICAgICAgICAgICBjYWxsYmFjayhzZWxmLl9jYWNoZVtjYWNoZUtleV0pOworICAg
ICAgICB9LAorICAgICAgICBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgIHNlbGYuX2NhY2hl
W2NhY2hlS2V5XSA9IC0xOworICAgICAgICAgICAgY2FsbGJhY2soc2VsZi5fY2FjaGVbY2FjaGVL
ZXldKTsKKyAgICAgICAgfSk7CisgICAgfSwKKworICAgIGdldE51bWJlck9mRmFpbGluZ1Rlc3Rz
OiBmdW5jdGlvbihidWlsZE51bWJlciwgY2FsbGJhY2spIHsKKyAgICAgICAgdmFyIGNhY2hlS2V5
ID0gdGhpcy5uYW1lICsgJ19nZXROdW1iZXJPZkZhaWxpbmdUZXN0c18nICsgYnVpbGROdW1iZXI7
CisgICAgICAgIGNvbnN0IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiA9IDM7CisgICAgICAgIGlm
IChQZXJzaXN0ZW50Q2FjaGUuY29udGFpbnMoY2FjaGVLZXkpKSB7CisgICAgICAgICAgICB2YXIg
Y2FjaGVkRGF0YSA9IFBlcnNpc3RlbnRDYWNoZS5nZXQoY2FjaGVLZXkpOworICAgICAgICAgICAg
aWYgKGNhY2hlZERhdGEudmVyc2lvbiA9PT0gY3VycmVudENhY2hlZERhdGFWZXJzaW9uKSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soY2FjaGVkRGF0YS5mYWlsdXJlQ291bnQsIGNhY2hlZERh
dGEudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVzdWx0ID0geyBmYWlsdXJlQ291bnQ6IC0x
LCB0b29NYW55RmFpbHVyZXM6IGZhbHNlLCB2ZXJzaW9uOiBjdXJyZW50Q2FjaGVkRGF0YVZlcnNp
b24gfTsKKworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYuX2dldEJ1aWxk
SlNPTihidWlsZE51bWJlciwgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgdmFyIGxheW91
dFRlc3RTdGVwID0gZGF0YS5zdGVwcy5maW5kRmlyc3QoZnVuY3Rpb24oc3RlcCkgeyByZXR1cm4g
c3RlcC5uYW1lID09PSAnbGF5b3V0LXRlc3QnOyB9KTsKKyAgICAgICAgICAgIGlmICghbGF5b3V0
VGVzdFN0ZXApIHsKKyAgICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0KGNhY2hlS2V5
LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5mYWlsdXJlQ291bnQs
IHJlc3VsdC50b29NYW55RmFpbHVyZXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCEoJ2lzRmluaXNoZWQnIGluIGxheW91dFRlc3RT
dGVwKSkgeworICAgICAgICAgICAgICAgIC8vIHJ1bi13ZWJraXQtdGVzdHMgbmV2ZXIgZXZlbiBy
YW4sIG9yIGRpZG4ndCBmaW5pc2ggcnVubmluZy4KKyAgICAgICAgICAgICAgICBQZXJzaXN0ZW50
Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCEoJ3Jlc3VsdHMn
IGluIGxheW91dFRlc3RTdGVwKSB8fCBsYXlvdXRUZXN0U3RlcC5yZXN1bHRzWzBdID09PSAwKSB7
CisgICAgICAgICAgICAgICAgaWYgKCEoJ3RpbWVzJyBpbiBsYXlvdXRUZXN0U3RlcCkgfHwgbGF5
b3V0VGVzdFN0ZXAudGltZXMubGVuZ3RoIDwgMiB8fCBsYXlvdXRUZXN0U3RlcC50aW1lc1sxXSAt
IGxheW91dFRlc3RTdGVwLnRpbWVzWzBdIDwgc2VsZi5fbWluaW11bVN1Y2Nlc3NmdWxMYXlvdXRU
ZXN0U3RlcFJ1blRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHNvbWV0aGlu
ZyBjYXVzZWQgdGhlIHN0YXJ0L3N0b3AgdGltZXMgbm90IHRvIGJlIHJlY29yZGVkLCBvcgorICAg
ICAgICAgICAgICAgICAgICAvLyBydW4td2Via2l0LXRlc3RzIHJhbiBzbyBxdWlja2x5IHRoYXQg
d2UgY2FuJ3QgYmVsaWV2ZSB0aGVyZSB3YXNuJ3QgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAg
ICAgLy8gKGUuZy4sIGEgYnVnIGluIHRoZSBzY3JpcHQgdGhhdCBtYWRlIGl0IG5vdCBmaW5kIGFu
eSB0ZXN0cyB0byBydW4pLgorICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0
KGNhY2hlS2V5LCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQu
ZmFpbHVyZUNvdW50LCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFsbCB0
ZXN0cyBwYXNzZWQuCisgICAgICAgICAgICAgICAgcmVzdWx0LmZhaWx1cmVDb3VudCA9IDA7Cisg
ICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFpbHVyZUNvdW50LCByZXN1bHQudG9vTWFu
eUZhaWx1cmVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChsYXlvdXRUZXN0U3RlcC5yZXN1bHRzWzBdID09PSA0KSB7CisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBidWlsZCBzdGVwIHdhcyBpbnRlcnJ1cHRlZCAocGVyaGFwcyBkdWUg
dG8gdGhlIGJ1aWxkIHNsYXZlIHJlc3RhcnRpbmcpLgorICAgICAgICAgICAgICAgIFBlcnNpc3Rl
bnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
cmVzdWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoL0V4aXRpbmcg
ZWFybHkvLnRlc3QobGF5b3V0VGVzdFN0ZXAucmVzdWx0c1sxXVswXSkpCisgICAgICAgICAgICAg
ICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHRydWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5m
YWlsdXJlQ291bnQgPSBsYXlvdXRUZXN0U3RlcC5yZXN1bHRzWzFdLnJlZHVjZShmdW5jdGlvbihz
dW0sIG91dHB1dExpbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSAvXihcZCspXHMv
LmV4ZWMob3V0cHV0TGluZSk7CisgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN1bTsKKyAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCBs
ZWFrcywgbmV3IHRlc3RzLCBvciBwYXNzZXMgYXMgZmFpbHVyZXMuCisgICAgICAgICAgICAgICAg
aWYgKG91dHB1dExpbmUuY29udGFpbnMoJ2xlYWsnKSB8fCBvdXRwdXRMaW5lLmNvbnRhaW5zKCd3
ZXJlIG5ldycpIHx8IG91dHB1dExpbmUuY29udGFpbnMoJ25ldyBwYXNzZXMnKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN1bTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VtICsgcGFy
c2VJbnQobWF0Y2hbMV0sIDEwKTsKKyAgICAgICAgICAgIH0sIDApOworCisgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5mYWlsdXJlQ291bnQpIHsKKyAgICAgICAgICAgICAgICAvLyBydW4td2Via2l0
LXRlc3RzIGV4aXRlZCB3aXRoIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMsIGJ1dCB3ZQorICAgICAg
ICAgICAgICAgIC8vIGRpZG4ndCBmaW5kIGFueSBvdXRwdXQgYWJvdXQgdGhlIG51bWJlciBvZiBm
YWlsZWQgdGVzdHMuCisgICAgICAgICAgICAgICAgLy8gU29tZXRoaW5nIG11c3QgaGF2ZSBnb25l
IHdyb25nIChlLmcuLCBydW4td2Via2l0LXRlc3RzIHRpbWVkCisgICAgICAgICAgICAgICAgLy8g
b3V0IGFuZCB3YXMga2lsbGVkIGJ5IGJ1aWxkYm90KS4KKyAgICAgICAgICAgICAgICByZXN1bHQu
ZmFpbHVyZUNvdW50ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFBlcnNpc3Rl
bnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQuZmFpbHVyZUNvdW50LCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwKKworICAgIGdldE9sZEJ1aWxkTmFtZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgICAg
ICAgIHRoaXMuX2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeSh0aGlzLmJ1aWxkYm90
LmJhc2VVUkwgKyAnb2xkLXJlc3VsdHMvJyArIHRoaXMubmFtZSwgY2FsbGJhY2spOworICAgIH0s
CisKKyAgICByZXN1bHRzRGlyZWN0b3J5VVJMOiBmdW5jdGlvbihidWlsZE5hbWUpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuYnVpbGRib3QucmVzdWx0c0RpcmVjdG9yeVVSTCh0aGlzLm5hbWUsIGJ1
aWxkTmFtZSk7CisgICAgfSwKKworICAgIHJlc3VsdHNQYWdlVVJMOiBmdW5jdGlvbihidWlsZE5h
bWUpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0c0RpcmVjdG9yeVVSTChidWlsZE5hbWUp
ICsgJ3Jlc3VsdHMuaHRtbCc7CisgICAgfSwKKworICAgIF9nZXRCdWlsZEpTT046IGZ1bmN0aW9u
KGJ1aWxkTnVtYmVyLCBjYWxsYmFjaykgeworICAgICAgICB2YXIgY2FjaGVLZXkgPSAnZ2V0QnVp
bGRKU09OXycgKyBidWlsZE51bWJlcjsKKyAgICAgICAgaWYgKGNhY2hlS2V5IGluIHRoaXMuX2Nh
Y2hlKSB7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jYWNoZVtjYWNoZUtleV0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwor
ICAgICAgICBnZXRSZXNvdXJjZShzZWxmLmJ1aWxkYm90LmJhc2VVUkwgKyAnanNvbi9idWlsZGVy
cy8nICsgc2VsZi5uYW1lICsgJy9idWlsZHMvJyArIGJ1aWxkTnVtYmVyLCBmdW5jdGlvbih4aHIp
IHsKKyAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsK
KyAgICAgICAgICAgIHNlbGYuX2NhY2hlW2NhY2hlS2V5XSA9IGRhdGE7CisgICAgICAgICAgICBj
YWxsYmFjayhkYXRhKTsKKyAgICAgICAgfSk7CisgICAgfSwKKworICAgIF9nZXRCdWlsZE5hbWVz
RnJvbVJlc3VsdHNEaXJlY3Rvcnk6IGZ1bmN0aW9uKGRpcmVjdG9yeVVSTCwgY2FsbGJhY2spIHsK
KyAgICAgICAgdmFyIGNhY2hlS2V5ID0gJ19nZXRCdWlsZE5hbWVzRnJvbVJlc3VsdHNEaXJlY3Rv
cnkuJyArIGRpcmVjdG9yeVVSTDsKKyAgICAgICAgaWYgKGNhY2hlS2V5IGluIHRoaXMuX2NhY2hl
KSB7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9jYWNoZVtjYWNoZUtleV0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisg
ICAgICAgIGZ1bmN0aW9uIGJ1aWxkTmFtZXNGcm9tRGlyZWN0b3J5WEhSKHhocikgeworICAgICAg
ICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdodG1sJyk7CisgICAgICAg
ICAgICByb290LmlubmVySFRNTCA9IHhoci5yZXNwb25zZVRleHQ7CisKKyAgICAgICAgICAgIHZh
ciBidWlsZE5hbWVzID0gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHJvb3QucXVlcnlTZWxlY3Rv
ckFsbCgndGQ6Zmlyc3QtY2hpbGQgPiBhID4gYicpLCBmdW5jdGlvbihlbGVtKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW0uaW5uZXJUZXh0LnJlcGxhY2UoL1wvJC8sICcnKTsKKyAgICAg
ICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbihmaWxlbmFtZSkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKGZpbGVuYW1lKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYnVpbGROYW1lcy5yZXZlcnNlKCk7CisKKyAgICAgICAgICAgIHJl
dHVybiBidWlsZE5hbWVzOworICAgICAgICB9CisKKyAgICAgICAgZ2V0UmVzb3VyY2UoZGlyZWN0
b3J5VVJMLCBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgIHZhciBidWlsZE5hbWVzID0gYnVp
bGROYW1lc0Zyb21EaXJlY3RvcnlYSFIoeGhyKTsKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlW2Nh
Y2hlS2V5XSA9IGJ1aWxkTmFtZXM7CisgICAgICAgICAgICBjYWxsYmFjayhidWlsZE5hbWVzKTsK
KyAgICAgICAgfSk7CisgICAgfSwKKworICAgIC8vIEFueSBzdWNjZXNzZnVsIHJ1bnMgb2YgcnVu
LXdlYmtpdC10ZXN0cyB0aGF0IHRvb2sgbGVzcyB0aGFuIHRoaXMgbnVtYmVyIG9mIHNlY29uZHMg
YXJlCisgICAgLy8gYXNzdW1lZCB0byBiZSBlcnJvcnMuCisgICAgX21pbmltdW1TdWNjZXNzZnVs
TGF5b3V0VGVzdFN0ZXBSdW5UaW1lOiAyMCwKK307CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9CdWlsZGVyX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9CdWlsZGVyX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9CdWlsZGVyX3VuaXR0ZXN0cy5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL0J1aWxkZXJfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCittb2R1bGUoIkJ1aWxkZXIiKTsK
KworZnVuY3Rpb24gcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBjYWxs
YmFjaykgeworICAgIHZhciBtb2NrQnVpbGRib3QgPSB7fTsKKyAgICBtb2NrQnVpbGRib3QuYmFz
ZVVSTCA9ICdodHRwOi8vZXhhbXBsZS5jb20vJzsKKworICAgIHZhciBidWlsZGVyID0gbmV3IEJ1
aWxkZXIoJ3Rlc3QgYnVpbGRlcicsIG1vY2tCdWlsZGJvdCk7CisKKyAgICB2YXIgcmVhbEdldFJl
c291cmNlID0gd2luZG93LmdldFJlc291cmNlOworICAgIHdpbmRvdy5nZXRSZXNvdXJjZSA9IGZ1
bmN0aW9uKHVybCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7CisgICAgICAgIHZh
ciBtb2NrWEhSID0ge307CisgICAgICAgIG1vY2tYSFIucmVzcG9uc2VUZXh0ID0gSlNPTi5zdHJp
bmdpZnkoanNvbkRhdGEpOworCisgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIg
Zm9yIHRoaXMgY2FsbGJhY2sgdG8gaGFwcGVuCisgICAgICAgIC8vIGFzeW5jaHJvbm91c2x5LCB0
byBtYXRjaCB3aGF0IGhhcHBlbnMgZm9yIHJlYWwgcmVxdWVzdHMuCisgICAgICAgIHN1Y2Nlc3ND
YWxsYmFjayhtb2NrWEhSKTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IEl0J3MgbGFtZSB0byBi
ZSBtb2RpZnlpbmcgc2luZ2xldG9ucyBsaWtlIHRoaXMuIFdlIHNob3VsZCBnZXQgcmlkCisgICAg
Ly8gb2Ygb3VyIHNpbmdsZXRvbiB1c2FnZSBlbnRpcmVseSEKKyAgICBvayghKCJQZXJzaXN0ZW50
Q2FjaGUiIGluIHdpbmRvdykpOworICAgIHdpbmRvdy5QZXJzaXN0ZW50Q2FjaGUgPSB7CisgICAg
ICAgIGNvbnRhaW5zOiBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LAorICAgICAgICBzZXQ6
IGZ1bmN0aW9uKCkgeyB9LAorICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyB9LAorICAgIH07CisK
KyAgICBidWlsZGVyLmdldE51bWJlck9mRmFpbGluZ1Rlc3RzKDEsIGNhbGxiYWNrKTsKKworICAg
IHdpbmRvdy5nZXRSZXNvdXJjZSA9IHJlYWxHZXRSZXNvdXJjZTsKKyAgICBlcXVhbCh3aW5kb3cu
Z2V0UmVzb3VyY2UsIHJlYWxHZXRSZXNvdXJjZSk7CisgICAgZGVsZXRlIHdpbmRvdy5QZXJzaXN0
ZW50Q2FjaGU7Cit9CisKK3Rlc3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIHNob3VsZG4ndCBp
bmNsdWRlIGxlYWtzIiwgNCwgZnVuY3Rpb24oKSB7CisgICAgY29uc3QganNvbkRhdGEgPSB7Cisg
ICAgICAgIHN0ZXBzOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaXNGaW5pc2hl
ZDogdHJ1ZSwKKyAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsCisgICAgICAgICAgICAg
ICAgbmFtZTogJ2xheW91dC10ZXN0JywKKyAgICAgICAgICAgICAgICByZXN1bHRzOiBbCisgICAg
ICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIyMTc4IHRvdGFsIGxlYWtzIGZvdW5kISIsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgIjIgdGVzdCBjYXNlcyAoPDElKSBoYWQgaW5jb3JyZWN0IGxheW91dCIsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgIjIgdGVzdCBjYXNlcyAoPDElKSBjcmFzaGVkIiwKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHRpbWVz
OiBbCisgICAgICAgICAgICAgICAgICAgIDEzMTA1OTkyMDQuMTIzMTIyOSwKKyAgICAgICAgICAg
ICAgICAgICAgMTMxMDYwMDE1Mi45NzM2NTksCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgXSwKKyAgICB9OworCisgICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVz
dHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykg
eworICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIDQpOworICAgICAgICBlcXVhbCh0b29NYW55
RmFpbHVyZXMsIGZhbHNlKTsKKyAgICB9KTsKK30pOworCit0ZXN0KCJnZXROdW1iZXJPZkZhaWxp
bmdUZXN0cyBkZXRlY3RzIHNwdXJpb3VzIHJ1bi13ZWJraXQtdGVzdHMgZmFpbHVyZXMiLCA0LCBm
dW5jdGlvbigpIHsKKyAgICBjb25zdCBqc29uRGF0YSA9IHsKKyAgICAgICAgc3RlcHM6IFsKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKKyAgICAgICAg
ICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAorICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQt
dGVzdCIsIAorICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKKyAgICAgICAgICAgICAgICAgICAg
MiwgCisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICJsYXlv
dXQtdGVzdCIKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0sIAorICAg
ICAgICAgICAgICAgIHN0ZXBfbnVtYmVyOiA3LCAKKyAgICAgICAgICAgICAgICB0ZXh0OiBbCisg
ICAgICAgICAgICAgICAgICAgICJsYXlvdXQtdGVzdCIKKyAgICAgICAgICAgICAgICBdLCAKKyAg
ICAgICAgICAgICAgICB0aW1lczogWworICAgICAgICAgICAgICAgICAgICAxMzEwNDM3NzM2LjAw
NDk0LCAKKyAgICAgICAgICAgICAgICAgICAgMTMxMDQ0MDExOC4wMzgwMjMKKyAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgfSwgCisgICAgICAgIF0sCisgICAgfTsKKworICAgIHJ1bkdl
dE51bWJlck9mRmFpbGluZ1Rlc3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50
LCB0b29NYW55RmFpbHVyZXMpIHsKKyAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Cisg
ICAgICAgIGVxdWFsKHRvb01hbnlGYWlsdXJlcywgZmFsc2UpOworICAgIH0pOworfSk7CisKK3Rl
c3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIHVuZGVyc3RhbmRzIE5SV1QgZXhpdGluZyBlYXJs
eSBkdWUgdG8gdG9vIG1hbnkgZmFpbHVyZXMiLCA0LCBmdW5jdGlvbigpIHsKKyAgICBjb25zdCBq
c29uRGF0YSA9IHsKKyAgICAgICAgc3RlcHM6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKKyAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUs
IAorICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsIAorICAgICAgICAgICAgICAg
IHJlc3VsdHM6IFsKKyAgICAgICAgICAgICAgICAgIDIsIAorICAgICAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICAgICAgICIyMDExLTA3LTEzIDA0OjM4OjQ2LDMxNSAxMTI0NyBtYW5h
Z2VyLnB5Ojc4MCBXQVJOSU5HIEV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0
aW1lb3V0cy4gMjI1MSB0ZXN0cyBydW4uIiwgCisgICAgICAgICAgICAgICAgICAgICAgIjIwIGZh
aWxlZCIKKyAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICBdLCAKKyAgICAgICAg
ICAgICAgICBzdGVwX251bWJlcjogNCwgCisgICAgICAgICAgICAgICAgdGV4dDogWworICAgICAg
ICAgICAgICAgICAgICAiMjAxMS0wNy0xMyAwNDozODo0NiwzMTUgMTEyNDcgbWFuYWdlci5weTo3
ODAgV0FSTklORyBFeGl0aW5nIGVhcmx5IGFmdGVyIDIwIGNyYXNoZXMgYW5kIDAgdGltZW91dHMu
IDIyNTEgdGVzdHMgcnVuLiIsIAorICAgICAgICAgICAgICAgICAgICAiMjAgZmFpbGVkIgorICAg
ICAgICAgICAgICAgIF0sIAorICAgICAgICAgICAgICAgIHRpbWVzOiBbCisgICAgICAgICAgICAg
ICAgICAgIDEzMTA1NTcxMTUuNzkzMDgyLCAKKyAgICAgICAgICAgICAgICAgICAgMTMxMDU1NzEy
OS44MzIxMDQKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LCAKKyAgICAgICAgXSwK
KyAgICB9OworCisgICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBm
dW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgeworICAgICAgICBlcXVhbChm
YWlsdXJlQ291bnQsIDIwKTsKKyAgICAgICAgZXF1YWwodG9vTWFueUZhaWx1cmVzLCB0cnVlKTsK
KyAgICB9KTsKK30pOworCit0ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyB0cmVhdHMgYnVp
bGQgc3RlcCBpbnRlcnJ1cHRpb25zIGFzIGVycm9ycyIsIDQsIGZ1bmN0aW9uKCkgeworICAgIGNv
bnN0IGpzb25EYXRhID0geworICAgICAgICBzdGVwczogWworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGlzRmluaXNoZWQ6IHRydWUsCisgICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0
cnVlLAorICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsCisgICAgICAgICAgICAg
ICAgcmVzdWx0czogWworICAgICAgICAgICAgICAgICAgNCwKKyAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJydXB0ZWQiLAorICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDUsCisg
ICAgICAgICAgICAgICAgdGV4dDogWworICAgICAgICAgICAgICAgICAgICAibGF5b3V0LXRlc3Qi
LAorICAgICAgICAgICAgICAgICAgICAiaW50ZXJydXB0ZWQiLAorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgdGltZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgMTMxMDU5OTIw
NC4xMjMxMjI5LAorICAgICAgICAgICAgICAgICAgICAxMzEwNjAwMTUyLjk3MzY1OSwKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICBdLAorICAgIH07CisKKyAgICBy
dW5HZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVD
b3VudCwgdG9vTWFueUZhaWx1cmVzKSB7CisgICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgLTEp
OworICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIGZhbHNlKTsKKyAgICB9KTsKK30pOwor
Cit0ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyB0cmVhdHMgdW5maW5pc2hlZCB0ZXN0IHJ1
bnMgYXMgZXJyb3JzIiwgNCwgZnVuY3Rpb24oKSB7CisgICAgY29uc3QganNvbkRhdGEgPSB7Cisg
ICAgICAgIHN0ZXBzOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaXNTdGFydGVk
OiB0cnVlLCAKKyAgICAgICAgICAgICAgICBuYW1lOiAibGF5b3V0LXRlc3QiLCAKKyAgICAgICAg
ICAgICAgICBzdGVwX251bWJlcjogNSwgCisgICAgICAgICAgICAgICAgdGV4dDogWworICAgICAg
ICAgICAgICAgICAgICAibGF5b3V0LXRlc3RzIHJ1bm5pbmciCisgICAgICAgICAgICAgICAgXSwg
CisgICAgICAgICAgICAgICAgdGltZXM6IFsKKyAgICAgICAgICAgICAgICAgICAgMTMxMjk4OTI5
NS41MTg0ODEsIAorICAgICAgICAgICAgICAgICAgICBudWxsCisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfSwgCisgICAgICAgIF0sCisgICAgfTsKKworICAgIHJ1bkdldE51bWJlck9m
RmFpbGluZ1Rlc3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55
RmFpbHVyZXMpIHsKKyAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7CisgICAgICAgIGVx
dWFsKHRvb01hbnlGYWlsdXJlcywgZmFsc2UpOworICAgIH0pOworfSk7CisKK3Rlc3QoImdldE51
bWJlck9mRmFpbGluZ1Rlc3RzIHRyZWF0cyBzdWNjZXNzZnVsIGJ1dCB1bmJlbGlldmFibHkgc2hv
cnQgdGVzdCBydW5zIGFzIGVycm9ycyIsIDQsIGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGpzb25E
YXRhID0geworICAgICAgICBzdGVwczogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlzRmluaXNoZWQ6IHRydWUsIAorICAgICAgICAgICAgICAgIGlzU3RhcnRlZDogdHJ1ZSwgCisg
ICAgICAgICAgICAgICAgbmFtZTogImxheW91dC10ZXN0IiwgCisgICAgICAgICAgICAgICAgc3Rl
cF9udW1iZXI6IDcsIAorICAgICAgICAgICAgICAgIHRleHQ6IFsKKyAgICAgICAgICAgICAgICAg
ICAgImxheW91dC10ZXN0IgorICAgICAgICAgICAgICAgIF0sIAorICAgICAgICAgICAgICAgIHRp
bWVzOiBbCisgICAgICAgICAgICAgICAgICAgIDEzMTEyODg3OTcuNzIwNzAxOSwgCisgICAgICAg
ICAgICAgICAgICAgIDEzMTEyODg4MDIuNzc5MTk0MQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIH0sIAorICAgICAgICBdLAorICAgIH07CisKKyAgICBydW5HZXROdW1iZXJPZkZhaWxp
bmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1
cmVzKSB7CisgICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgLTEpOworICAgICAgICBlcXVhbCh0
b29NYW55RmFpbHVyZXMsIGZhbHNlKTsKKyAgICB9KTsKK30pOworCit0ZXN0KCJnZXROdW1iZXJP
ZkZhaWxpbmdUZXN0cyBkb2Vzbid0IGNhcmUgaWYgYSBmYWlsaW5nIHJ1biBpcyB1bmJlbGlldmFi
bHkgc2hvcnQiLCA0LCBmdW5jdGlvbigpIHsKKyAgICBjb25zdCBqc29uRGF0YSA9IHsKKyAgICAg
ICAgc3RlcHM6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0
cnVlLCAKKyAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAorICAgICAgICAgICAgICAg
IG5hbWU6ICJsYXlvdXQtdGVzdCIsIAorICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKKyAgICAg
ICAgICAgICAgICAgIDIsIAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAg
ICAgICIyMDExLTA3LTEzIDA0OjM4OjQ2LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJOSU5H
IEV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0ZXN0
cyBydW4uIiwgCisgICAgICAgICAgICAgICAgICAgICAgIjIwIGZhaWxlZCIKKyAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICBdLCAKKyAgICAgICAgICAgICAgICBzdGVwX251bWJl
cjogNCwgCisgICAgICAgICAgICAgICAgdGV4dDogWworICAgICAgICAgICAgICAgICAgICAiMjAx
MS0wNy0xMyAwNDozODo0NiwzMTUgMTEyNDcgbWFuYWdlci5weTo3ODAgV0FSTklORyBFeGl0aW5n
IGVhcmx5IGFmdGVyIDIwIGNyYXNoZXMgYW5kIDAgdGltZW91dHMuIDIyNTEgdGVzdHMgcnVuLiIs
IAorICAgICAgICAgICAgICAgICAgICAiMjAgZmFpbGVkIgorICAgICAgICAgICAgICAgIF0sIAor
ICAgICAgICAgICAgICAgIHRpbWVzOiBbCisgICAgICAgICAgICAgICAgICAgIDEzMTA1NTcxMTUu
NzkzMDgyLCAKKyAgICAgICAgICAgICAgICAgICAgMTMxMDU1NzExOS44MzIxMDQKKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9LCAKKyAgICAgICAgXSwKKyAgICB9OworCisgICAgcnVu
R2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291
bnQsIHRvb01hbnlGYWlsdXJlcykgeworICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIDIwKTsK
KyAgICAgICAgZXF1YWwodG9vTWFueUZhaWx1cmVzLCB0cnVlKTsKKyAgICB9KTsKK30pOworCit9
KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdG
b3JtLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0ZhaWxpbmdUZXN0
c0J1Z0Zvcm0uanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVz
dHNCdWdGb3JtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gRmFpbGluZ1Rlc3RzQnVnRm9ybSh0ZXN0ZXIsIGZhaWxpbmdCdWlsZE5hbWUs
IHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0cykgeworICAgIFRlc3RSZWxhdGVkQnVnRm9y
bS5jYWxsKHRoaXMsIHRlc3Rlcik7CisKKyAgICB0aGlzLl9mYWlsaW5nQnVpbGROYW1lID0gZmFp
bGluZ0J1aWxkTmFtZTsKKyAgICB0aGlzLl9wYXNzaW5nQnVpbGROYW1lID0gcGFzc2luZ0J1aWxk
TmFtZTsKKyAgICB0aGlzLl9mYWlsaW5nVGVzdHMgPSBmYWlsaW5nVGVzdHM7CisKKyAgICB0aGlz
LmRlc2NyaXB0aW9uID0gdGhpcy5fY3JlYXRlQnVnRGVzY3JpcHRpb24oKTsKKyAgICAvLyBGSVhN
RTogV2hlbiBhIG5ld2x5LWFkZGVkIHRlc3QgaGFzIGJlZW4gZmFpbGluZyBzaW5jZSBpdHMgaW50
cm9kdWN0aW9uLCBpdCBpc24ndCByZWFsbHkgYQorICAgIC8vICJyZWdyZXNzaW9uIi4gV2Ugc2hv
dWxkIHVzZSBkaWZmZXJlbnQga2V5d29yZHMgaW4gdGhhdCBjYXNlLiA8aHR0cDovL3dlYmtpdC5v
cmcvYi82MTY0NT4KKyAgICB0aGlzLmtleXdvcmRzICs9ICcsICcgKyBXZWJLaXRCdWd6aWxsYS5L
ZXl3b3JkLlJlZ3Jlc3Npb247CisgICAgdGhpcy50aXRsZSA9IHRoaXMuX2NyZWF0ZUJ1Z1RpdGxl
KCk7CisgICAgdGhpcy51cmwgPSB0aGlzLl9mYWlsaW5nUmVzdWx0c0hUTUxVUkwoKTsKK30KKwor
RmFpbGluZ1Rlc3RzQnVnRm9ybS5wcm90b3R5cGUgPSB7CisgICAgX2NyZWF0ZUJ1Z0Rlc2NyaXB0
aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZpcnN0U3VzcGVjdFJldmlzaW9uID0gdGhp
cy5fcGFzc2luZ1JldmlzaW9uKCkgPyB0aGlzLl9wYXNzaW5nUmV2aXNpb24oKSArIDEgOiB0aGlz
Ll9mYWlsaW5nUmV2aXNpb24oKTsKKyAgICAgICAgdmFyIGxhc3RTdXNwZWN0UmV2aXNpb24gPSB0
aGlzLl9mYWlsaW5nUmV2aXNpb24oKTsKKworICAgICAgICB2YXIgZW5kT2ZGaXJzdFNlbnRlbmNl
OworICAgICAgICBpZiAodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkgeworICAgICAgICAgICAgZW5k
T2ZGaXJzdFNlbnRlbmNlID0gJ3N0YXJ0ZWQgZmFpbGluZyBvbiAnICsgdGhpcy5fdGVzdGVyLm5h
bWU7CisgICAgICAgICAgICBpZiAoZmlyc3RTdXNwZWN0UmV2aXNpb24gPT09IGxhc3RTdXNwZWN0
UmV2aXNpb24pCisgICAgICAgICAgICAgICAgZW5kT2ZGaXJzdFNlbnRlbmNlICs9ICcgaW4gcicg
KyBmaXJzdFN1c3BlY3RSZXZpc2lvbiArICcgPCcgKyB0cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1
c3BlY3RSZXZpc2lvbikgKyAnPic7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZW5kT2ZGaXJzdFNlbnRlbmNlICs9ICcgYmV0d2VlbiByJyArIGZpcnN0U3VzcGVjdFJldmlzaW9u
ICsgJyBhbmQgcicgKyBsYXN0U3VzcGVjdFJldmlzaW9uICsgJyAoaW5jbHVzaXZlKSc7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZW5kT2ZGaXJzdFNlbnRlbmNlID0gKHRoaXMuX2ZhaWxp
bmdUZXN0cy5sZW5ndGggPT09IDEgPyAnaGFzJyA6ICdoYXZlJykgKyAnIGJlZW4gZmFpbGluZyBv
biAnICsgdGhpcy5fdGVzdGVyLm5hbWUgKyAnIHNpbmNlIGF0IGxlYXN0IHInICsgZmlyc3RTdXNw
ZWN0UmV2aXNpb24gKyAnIDwnICsgdHJhYy5jaGFuZ2VzZXRVUkwoZmlyc3RTdXNwZWN0UmV2aXNp
b24pICsgJz4nOworICAgICAgICB2YXIgZGVzY3JpcHRpb247CisgICAgICAgIGlmICh0aGlzLl9m
YWlsaW5nVGVzdHMubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlz
Ll9mYWlsaW5nVGVzdHNbMF0gKyAnICcgKyBlbmRPZkZpcnN0U2VudGVuY2UgKyAnLlxuXG4nOwor
ICAgICAgICBlbHNlIGlmICh0aGlzLl9mYWlsaW5nVGVzdHMubGVuZ3RoID09PSAyKQorICAgICAg
ICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLl9mYWlsaW5nVGVzdHMuam9pbignIGFuZCAnKSArICcg
JyArIGVuZE9mRmlyc3RTZW50ZW5jZSArICcuXG5cbic7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZGVzY3JpcHRpb24gPSAnVGhlIGZvbGxvd2luZyB0ZXN0cyAnICsgZW5kT2ZGaXJzdFNl
bnRlbmNlICsgJzpcblxuJworICAgICAgICAgICAgICAgICsgdGhpcy5fZmFpbGluZ1Rlc3RzLm1h
cChmdW5jdGlvbih0ZXN0KSB7IHJldHVybiAnICAgICcgKyB0ZXN0IH0pLmpvaW4oJ1xuJykKKyAg
ICAgICAgICAgICAgICArICdcblxuJzsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmlyc3RTdXNw
ZWN0UmV2aXNpb24gIT09IGxhc3RTdXNwZWN0UmV2aXNpb24pCisgICAgICAgICAgICBkZXNjcmlw
dGlvbiArPSB0cmFjLmxvZ1VSTCgndHJ1bmsnLCBmaXJzdFN1c3BlY3RSZXZpc2lvbiwgbGFzdFN1
c3BlY3RSZXZpc2lvbikgKyAnXG5cbic7CisgICAgICAgIGlmICh0aGlzLl9wYXNzaW5nQnVpbGRO
YW1lKQorICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gdGhpcy5fdGVzdGVyLnJlc3VsdHNQYWdl
VVJMKHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUpICsgJyBwYXNzZWRcbic7CisgICAgICAgIGRlc2Ny
aXB0aW9uICs9IHRoaXMuX2ZhaWxpbmdSZXN1bHRzSFRNTFVSTCgpICsgJyBmYWlsZWRcbic7CisK
KyAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworICAgIH0sCisKKyAgICBfY3JlYXRlQnVnVGl0
bGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBGSVhNRTogV2hlbiBhIG5ld2x5LWFkZGVkIHRl
c3QgaGFzIGJlZW4gZmFpbGluZyBzaW5jZSBpdHMgaW50cm9kdWN0aW9uLCBpdCBpc24ndCByZWFs
bHkgYQorICAgICAgICAvLyAicmVncmVzc2lvbiIuIFdlIHNob3VsZCB1c2UgYSBkaWZmZXJlbnQg
dGl0bGUgaW4gdGhhdCBjYXNlLiA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTY0NT4KKworICAgICAg
ICB2YXIgdGl0bGVQcmVmaXggPSAnUkVHUkVTU0lPTiAoJyArIHRoaXMuX3JlZ3Jlc3Npb25SYW5n
ZVN0cmluZygpICsgJyk6ICc7CisgICAgICAgIHZhciB0aXRsZVN1ZmZpeCA9ICcgZmFpbGluZyBv
biAnICsgdGhpcy5fdGVzdGVyLm5hbWU7CisgICAgICAgIHZhciB0aXRsZSA9IHRpdGxlUHJlZml4
ICsgdGhpcy5fZmFpbGluZ1Rlc3RzLmpvaW4oJywgJykgKyB0aXRsZVN1ZmZpeDsKKworICAgICAg
ICBpZiAodGl0bGUubGVuZ3RoIDw9IGJ1Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gdGl0bGU7CisKKyAgICAgICAgdmFyIHBhdGhQcmVmaXggPSBsb25n
ZXN0Q29tbW9uUGF0aFByZWZpeCh0aGlzLl9mYWlsaW5nVGVzdHMpOworICAgICAgICBpZiAocGF0
aFByZWZpeCkgeworICAgICAgICAgICAgdGl0bGUgPSB0aXRsZVByZWZpeCArIHRoaXMuX2ZhaWxp
bmdUZXN0cy5sZW5ndGggKyAnICcgKyBwYXRoUHJlZml4ICsgJyB0ZXN0cycgKyB0aXRsZVN1ZmZp
eDsKKyAgICAgICAgICAgIGlmICh0aXRsZS5sZW5ndGggPD0gYnVnemlsbGEua01heGltdW1CdWdU
aXRsZUxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7CisgICAgICAgIH0KKwor
ICAgICAgICB0aXRsZSA9IHRpdGxlUHJlZml4ICsgdGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0aCAr
ICcgdGVzdHMnICsgdGl0bGVTdWZmaXg7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGl0bGUu
bGVuZ3RoIDw9IGJ1Z3ppbGxhLmtNYXhpbXVtQnVnVGl0bGVMZW5ndGgpOworICAgICAgICByZXR1
cm4gdGl0bGU7CisgICAgfSwKKworICAgIF9mYWlsaW5nUmVzdWx0c0hUTUxVUkw6IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5fdGVzdGVyLnJlc3VsdHNQYWdlVVJMKHRoaXMuX2Zh
aWxpbmdCdWlsZE5hbWUpOworICAgIH0sCisKKyAgICBfZmFpbGluZ1JldmlzaW9uOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3Rlci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFt
ZSh0aGlzLl9mYWlsaW5nQnVpbGROYW1lKS5yZXZpc2lvbjsKKyAgICB9LAorCisgICAgX3Bhc3Np
bmdSZXZpc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhpcy5fcGFzc2luZ0J1aWxk
TmFtZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5fdGVz
dGVyLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUpLnJldmlz
aW9uOworICAgIH0sCisKKyAgICBfcmVncmVzc2lvblJhbmdlU3RyaW5nOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgdmFyIGZhaWxpbmdSZXZpc2lvbiA9IHRoaXMuX2ZhaWxpbmdSZXZpc2lvbigpOwor
ICAgICAgICB2YXIgcGFzc2luZ1JldmlzaW9uID0gdGhpcy5fcGFzc2luZ1JldmlzaW9uKCk7Cisg
ICAgICAgIGlmICghcGFzc2luZ1JldmlzaW9uIHx8IGZhaWxpbmdSZXZpc2lvbiAtIHBhc3NpbmdS
ZXZpc2lvbiA8PSAxKQorICAgICAgICAgICAgcmV0dXJuICdyJyArIGZhaWxpbmdSZXZpc2lvbjsK
KyAgICAgICAgcmV0dXJuICdyJyArIHBhc3NpbmdSZXZpc2lvbiArICctcicgKyBmYWlsaW5nUmV2
aXNpb247CisgICAgfSwKK307CisKK0ZhaWxpbmdUZXN0c0J1Z0Zvcm0ucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFRlc3RSZWxhdGVkQnVnRm9ybS5wcm90b3R5cGU7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5q
cwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdG
b3JtX3VuaXR0ZXN0cy5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZhaWxp
bmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCittb2R1bGUoJ0ZhaWxpbmdUZXN0c0J1
Z0Zvcm0nKTsKKworZnVuY3Rpb24gY3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSwgZmFpbGluZ0J1
aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3RzKSB7CisgICAgdmFyIG1vY2tC
dWlsZGJvdCA9IHt9OworICAgIG1vY2tCdWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9u
KGJ1aWxkTmFtZSkgeworICAgICAgICB2YXIgbWF0Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1l
KTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRj
aFsxXSwgMTApLAorICAgICAgICAgICAgYnVpbGROdW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAx
MCksCisgICAgICAgIH07CisgICAgfTsKKworICAgIHZhciBtb2NrQnVpbGRlciA9IHt9OworICAg
IG1vY2tCdWlsZGVyLm5hbWUgPSB0ZXN0ZXJOYW1lOworICAgIG1vY2tCdWlsZGVyLmJ1aWxkYm90
ID0gbW9ja0J1aWxkYm90OworICAgIG1vY2tCdWlsZGVyLnJlc3VsdHNQYWdlVVJMID0gZnVuY3Rp
b24oYnVpbGROYW1lKSB7CisgICAgICAgIHJldHVybiAnW1JFU1VMVFMgUEFHRSBVUkwgJyArIHRo
aXMubmFtZSArICcsICcgKyBidWlsZE5hbWUgKyAnXSc7CisgICAgfQorCisgICAgcmV0dXJuIG5l
dyBGYWlsaW5nVGVzdHNCdWdGb3JtKG1vY2tCdWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNz
aW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdHMpOworfQorCit0ZXN0KCdrZXl3b3JkcyBhcmUgc2V0
JywgMSwgZnVuY3Rpb24oKSB7CisgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgnV2luZG93
cyA3IFJlbGVhc2UgKFRlc3RzKScsICdyMTAgKDUpJywgJ3I4ICgyKScsIFsnY3NzMS9iYXNpYy9j
bGFzc19hc19zZWxlY3Rvci5odG1sJ10pOworCisgICAgZGVlcEVxdWFsKGZvcm0ua2V5d29yZHMu
c3BsaXQoJywgJyksIFtXZWJLaXRCdWd6aWxsYS5LZXl3b3JkLkxheW91dFRlc3RGYWlsdXJlLCBX
ZWJLaXRCdWd6aWxsYS5LZXl3b3JkLk1ha2luZ0JvdHNSZWQsIFdlYktpdEJ1Z3ppbGxhLktleXdv
cmQuUmVncmVzc2lvbl0pOworfSk7CisKK2NvbnN0IHRlc3RDYXNlcyA9IFsKKyAgICB7CisgICAg
ICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKKyAgICAgICAgZmFpbGluZ1Rlc3RzOiBb
CisgICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sJywKKyAgICAg
ICAgXSwKKyAgICAgICAgZXhwZWN0ZWREZXNjcmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNf
c2VsZWN0b3IuaHRtbCBoYXMgYmVlbiBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0
cykgc2luY2UgYXQgbGVhc3QgcjEwIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MD4uXG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHIxMCAo
NSldIGZhaWxlZFxuJywKKyAgICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHIxMCk6
IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBS
ZWxlYXNlIChUZXN0cyknLAorICAgIH0sCisgICAgeworICAgICAgICBmYWlsaW5nQnVpbGROYW1l
OiAncjEwICg1KScsCisgICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOSAoMyknLAorICAgICAg
ICBmYWlsaW5nVGVzdHM6IFsKKyAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVj
dG9yLmh0bWwnLAorICAgICAgICBdLAorICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3Nz
MS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dz
IDcgUmVsZWFzZSAoVGVzdHMpIGluIHIxMCA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTA+LlxuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCBy
OSAoMyldIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3Rz
KSwgcjEwICg1KV0gZmFpbGVkXG4nLAorICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lP
TiAocjEwKTogY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGZhaWxpbmcgb24gV2lu
ZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCisgICAgfSwKKyAgICB7CisgICAgICAgIGZhaWxpbmdC
dWlsZE5hbWU6ICdyMTAgKDUpJywKKyAgICAgICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScs
CisgICAgICAgIGZhaWxpbmdUZXN0czogWworICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3Nf
YXNfc2VsZWN0b3IuaHRtbCcsCisgICAgICAgIF0sCisgICAgICAgIGV4cGVjdGVkRGVzY3JpcHRp
b246ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9u
IFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUp
LlxuXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTAmc3RvcF9yZXY9OSZs
aW1pdD0zXG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4
ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
LCByMTAgKDUpXSBmYWlsZWRcbicsCisgICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9O
IChyOC1yMTApOiBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBX
aW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywKKyAgICB9LAorICAgIHsKKyAgICAgICAgZmFpbGlu
Z0J1aWxkTmFtZTogJ3IxMCAoNSknLAorICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIp
JywKKyAgICAgICAgZmFpbGluZ1Rlc3RzOiBbCisgICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFz
c19hc19zZWxlY3Rvci5odG1sJywKKyAgICAgICAgICAgICdmYXN0L2Nzcy9leC1hZnRlci1mb250
LXZhcmlhbnQuaHRtbCcsCisgICAgICAgIF0sCisgICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246
ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgYW5kIGZhc3QvY3NzL2V4LWFmdGVy
LWZvbnQtdmFyaWFudC5odG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAo
VGVzdHMpIGJldHdlZW4gcjkgYW5kIHIxMCAoaW5jbHVzaXZlKS5cblxuaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEwJnN0b3BfcmV2PTkmbGltaXQ9M1xuXG5bUkVTVUxUUyBQ
QUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VM
VFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4n
LAorICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogY3NzMS9iYXNp
Yy9jbGFzc19hc19zZWxlY3Rvci5odG1sLCBmYXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQu
aHRtbCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAorICAgIH0sCisgICAg
eworICAgICAgICBmYWlsaW5nQnVpbGROYW1lOiAncjEwICg1KScsCisgICAgICAgIHBhc3NpbmdC
dWlsZE5hbWU6ICdyOCAoMiknLAorICAgICAgICBmYWlsaW5nVGVzdHM6IFsKKyAgICAgICAgICAg
ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMS5odG1sJywKKyAgICAgICAgICAgICdjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMi5odG1sJywKKyAgICAgICAgICAgICdjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yMy5odG1sJywKKyAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yNC5odG1sJywKKyAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yNS5odG1sJywKKyAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9y
Ni5odG1sJywKKyAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1s
JywKKyAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sJywKKyAg
ICAgICAgXSwKKyAgICAgICAgZXhwZWN0ZWREZXNjcmlwdGlvbjogJ1RoZSBmb2xsb3dpbmcgdGVz
dHMgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiBy
OSBhbmQgcjEwIChpbmNsdXNpdmUpOlxuXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
cjEuaHRtbFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWxcbiAgICBjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMy5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19z
ZWxlY3RvcjQuaHRtbFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWxcbiAg
ICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNi5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFz
c19hc19zZWxlY3RvcjcuaHRtbFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0
bWxcblxuaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEwJnN0b3BfcmV2PTkm
bGltaXQ9M1xuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCBy
OCAoMildIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3Rz
KSwgcjEwICg1KV0gZmFpbGVkXG4nLAorICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lP
TiAocjgtcjEwKTogOCBjc3MxL2Jhc2ljIHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVh
c2UgKFRlc3RzKScsCisgICAgfSwKKyAgICB7CisgICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdy
MTAgKDUpJywKKyAgICAgICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCisgICAgICAgIGZh
aWxpbmdUZXN0czogWworICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3Ix
Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwn
LAorICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWwnLAorICAg
ICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWwnLAorICAgICAgICAg
ICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWwnLAorICAgICAgICAgICAgJ2Nz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I2Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3I3Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3I4Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvY2xhc3NfYXNfc2VsZWN0
b3I5Lmh0bWwnLAorICAgICAgICBdLAorICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lP
TiAocjgtcjEwKTogOSBjc3MxIHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRl
c3RzKScsCisgICAgfSwKKyAgICB7CisgICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUp
JywKKyAgICAgICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCisgICAgICAgIGZhaWxpbmdU
ZXN0czogWworICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWwn
LAorICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnLAorICAg
ICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWwnLAorICAgICAgICAg
ICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWwnLAorICAgICAgICAgICAgJ2Nz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3I2Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3I3Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNf
c2VsZWN0b3I4Lmh0bWwnLAorICAgICAgICAgICAgJ2NzczEvY2xhc3NfYXNfc2VsZWN0b3I5Lmh0
bWwnLAorICAgICAgICAgICAgJ2Zhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFudC5odG1sJywK
KyAgICAgICAgXSwKKyAgICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHI4LXIxMCk6
IDEwIHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCisgICAgfSwK
K107CisKK3Rlc3QoJ3RpdGxlcycsIDcsIGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBmb3JtID0gY3JlYXRl
VGVzdEZvcm0oJ1dpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLCB0ZXN0Q2FzZXNbaV0uZmFpbGlu
Z0J1aWxkTmFtZSwgdGVzdENhc2VzW2ldLnBhc3NpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5m
YWlsaW5nVGVzdHMpOworICAgICAgICBlcXVhbChmb3JtLnRpdGxlLCB0ZXN0Q2FzZXNbaV0uZXhw
ZWN0ZWRUaXRsZSk7CisgICAgfQorfSk7CisKK3Rlc3QoJ2Rlc2NyaXB0aW9ucycsIDUsIGZ1bmN0
aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmICghKCdleHBlY3RlZERlc2NyaXB0aW9uJyBpbiB0ZXN0Q2FzZXNbaV0pKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0o
J1dpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLCB0ZXN0Q2FzZXNbaV0uZmFpbGluZ0J1aWxkTmFt
ZSwgdGVzdENhc2VzW2ldLnBhc3NpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5mYWlsaW5nVGVz
dHMpOworICAgICAgICBlcXVhbChmb3JtLmRlc2NyaXB0aW9uLCB0ZXN0Q2FzZXNbaV0uZXhwZWN0
ZWREZXNjcmlwdGlvbik7CisgICAgfQorfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qcwkocmV2aXNpb24g
OTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qczo5
MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9y
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rp
b24gRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKSB7CisgICAgdGhpcy5fdGVzdHMgPSB7fTsKKyAg
ICB0aGlzLl9idWlsZENvdW50ID0gMDsKK30KKworRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IucHJv
dG90eXBlID0geworICAgIGluY29ycG9yYXRlVGVzdFJlc3VsdHM6IGZ1bmN0aW9uKGJ1aWxkTmFt
ZSwgZmFpbGluZ1Rlc3RzLCB0b29NYW55RmFpbHVyZXMpIHsKKyAgICAgICAgdmFyIG5ld0ZsYWt5
VGVzdHMgPSBbXTsKKworICAgICAgICBpZiAodG9vTWFueUZhaWx1cmVzKSB7CisgICAgICAgICAg
ICAvLyBTb21ldGhpbmcgd2FzIGdvaW5nIGhvcnJpYmx5IHdyb25nIGR1cmluZyB0aGlzIHRlc3Qg
cnVuLiBXZSBzaG91bGRuJ3QgYXNzdW1lIHRoYXQgYW55CisgICAgICAgICAgICAvLyBwYXNzZXMv
ZmFpbHVyZXMgYXJlIGR1ZSB0byBmbGFraW5lc3MuCisgICAgICAgICAgICByZXR1cm4gbmV3Rmxh
a3lUZXN0czsKKyAgICAgICAgfQorCisgICAgICAgICsrdGhpcy5fYnVpbGRDb3VudDsKKworICAg
ICAgICAvLyBSZWNvcmQgZmFpbGluZyB0ZXN0cy4KKyAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUg
aW4gZmFpbGluZ1Rlc3RzKSB7CisgICAgICAgICAgICBpZiAoISh0ZXN0TmFtZSBpbiB0aGlzLl90
ZXN0cykpIHsKKyAgICAgICAgICAgICAgIGlmICh0aGlzLl9idWlsZENvdW50ID4gdGhpcy5fbWF4
aW11bUZhaWxPclBhc3NDb3VudCkgeworICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgdGVzdCBo
YXNuJ3QgZmFpbGVkIGluIHRoZSBfbWF4aW11bUZhaWxPclBhc3NDb3VudCBtb3N0IHJlY2VudCBi
dWlsZHMsIHNvCisgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgY29uc2lkZXIgaXQgdG8gYmUg
Zmxha3kuIEluIGZhY3QsIHdlIGRvbid0IGhhdmUgdG8gdHJhY2sgaXQgYXQgYWxsIQorICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgdGhpcy5fdGVzdHNbdGVzdE5hbWVdID0geworICAgICAgICAgICAgICAgICAgICBzdGF0ZTog
dGhpcy5fc3RhdGVzLkxhc3RTZWVuRmFpbGluZywKKyAgICAgICAgICAgICAgICAgICAgY291bnQ6
IDAsCisgICAgICAgICAgICAgICAgICAgIGhpc3Rvcnk6IFtdLAorICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB0ZXN0RGF0YSA9IHRoaXMuX3Rlc3Rz
W3Rlc3ROYW1lXTsKKyAgICAgICAgICAgIHRlc3REYXRhLmhpc3RvcnkucHVzaCh7IGJ1aWxkOiBi
dWlsZE5hbWUsIHJlc3VsdDogZmFpbGluZ1Rlc3RzW3Rlc3ROYW1lXSB9KTsKKworICAgICAgICAg
ICAgaWYgKHRlc3REYXRhLnN0YXRlID09PSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5GYWlsaW5nKSB7
CisgICAgICAgICAgICAgICAgKyt0ZXN0RGF0YS5jb3VudDsKKyAgICAgICAgICAgICAgICBpZiAo
dGVzdERhdGEuY291bnQgPiB0aGlzLl9tYXhpbXVtRmFpbE9yUGFzc0NvdW50KQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0RGF0YS5zdGF0ZSA9IHRoaXMuX3N0YXRlcy5Ob3RGbGFreTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAodGVzdERhdGEuc3RhdGUgPT09IHRoaXMuX3N0YXRlcy5MYXN0U2Vl
blBhc3NpbmcpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zdGF0ZSA9IHRoaXMuX3N0YXRl
cy5Qb3NzaWJseUZsYWt5OworICAgICAgICAgICAgICAgIG5ld0ZsYWt5VGVzdHMucHVzaCh0ZXN0
TmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWNvcmQgcGFz
c2luZyB0ZXN0cy4KKyAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGhpcy5fdGVzdHMpIHsK
KyAgICAgICAgICAgIGlmICh0ZXN0TmFtZSBpbiBmYWlsaW5nVGVzdHMpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciB0ZXN0RGF0YSA9IHRoaXMuX3Rlc3RzW3Rl
c3ROYW1lXTsKKyAgICAgICAgICAgIHRlc3REYXRhLmhpc3RvcnkucHVzaCh7IGJ1aWxkOiBidWls
ZE5hbWUsIHJlc3VsdDogeyBmYWlsdXJlVHlwZTogJ3Bhc3MnIH0gfSk7CisKKyAgICAgICAgICAg
IGlmICh0ZXN0RGF0YS5zdGF0ZSA9PT0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuUGFzc2luZykgewor
ICAgICAgICAgICAgICAgICsrdGVzdERhdGEuY291bnQ7CisgICAgICAgICAgICAgICAgaWYgKHRl
c3REYXRhLmNvdW50ID4gdGhpcy5fbWF4aW11bUZhaWxPclBhc3NDb3VudCkKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdERhdGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMuTm90Rmxha3k7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHRlc3REYXRhLnN0YXRlID09PSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5G
YWlsaW5nKSB7CisgICAgICAgICAgICAgICAgdGVzdERhdGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMu
TGFzdFNlZW5QYXNzaW5nOworICAgICAgICAgICAgICAgIHRlc3REYXRhLmNvdW50ID0gMTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXdGbGFreVRlc3RzOwor
ICAgIH0sCisKKyAgICBhbGxGYWlsdXJlczogZnVuY3Rpb24odGVzdE5hbWUpIHsKKyAgICAgICAg
aWYgKCEodGVzdE5hbWUgaW4gdGhpcy5fdGVzdHMpKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RzW3Rlc3ROYW1lXS5oaXN0b3J5LmZpbHRlcihm
dW5jdGlvbihoaXN0b3J5SXRlbSkgeyByZXR1cm4gaGlzdG9yeUl0ZW0ucmVzdWx0LmZhaWx1cmVU
eXBlICE9PSAncGFzcycgfSk7CisgICAgfSwKKworICAgIGdldCBwb3NzaWJseUZsYWt5VGVzdHMo
KSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlz
KHNlbGYuX3Rlc3RzKS5maWx0ZXIoZnVuY3Rpb24odGVzdE5hbWUpIHsgcmV0dXJuIHNlbGYuX3Rl
c3RzW3Rlc3ROYW1lXS5zdGF0ZSA9PT0gc2VsZi5fc3RhdGVzLlBvc3NpYmx5Rmxha3kgfSk7Cisg
ICAgfSwKKworICAgIC8vIElmIGEgdGVzdCBoYXMgcmVjZW50bHkgZmFpbGVkIG9yIHBhc3NlZCBt
b3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgdGltZXMgaW4gYSByb3cgd2UgZG9uJ3QKKyAgICAvLyBj
b25zaWRlciBpdCB0byBiZSBmbGFreS4KKyAgICBfbWF4aW11bUZhaWxPclBhc3NDb3VudDogOSwK
KworICAgIF9zdGF0ZXM6IHsKKyAgICAgICAgTGFzdFNlZW5GYWlsaW5nOiAwLAorICAgICAgICBM
YXN0U2VlblBhc3Npbmc6IDEsCisgICAgICAgIFBvc3NpYmx5Rmxha3k6IDIsCisgICAgICAgIE5v
dEZsYWt5OiAzLAorICAgIH0sCit9OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxh
a3lMYXlvdXRUZXN0RGV0ZWN0b3JfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qcwkocmV2
aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GbGFreUxheW91dFRlc3REZXRlY3Rv
cl91bml0dGVzdHMuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreUxh
eW91dFRlc3REZXRlY3Rvcl91bml0dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisoZnVuY3Rpb24oKSB7CisKK21vZHVsZSgnRmxha3lMYXlvdXRU
ZXN0RGV0ZWN0b3InKTsKKworY29uc3QgcnVucyA9IFsKKyAgICB7CisgICAgICAgIGJ1aWxkTmFt
ZTogJ2J1aWxkNicsCisgICAgICAgIGZhaWxpbmdUZXN0czogeworICAgICAgICAgICAgYjogJ2Zh
aWwnLAorICAgICAgICB9LAorICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNlLAorICAgIH0s
CisgICAgeworICAgICAgICBidWlsZE5hbWU6ICdidWlsZDUnLAorICAgICAgICBmYWlsaW5nVGVz
dHM6IHsKKyAgICAgICAgICAgIGE6ICdmYWlsJywKKyAgICAgICAgICAgIGI6ICdmYWlsJywKKyAg
ICAgICAgfSwKKyAgICAgICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKKyAgICB9LAorICAgIHsK
KyAgICAgICAgYnVpbGROYW1lOiAnYnVpbGQ0JywKKyAgICAgICAgZmFpbGluZ1Rlc3RzOiB7Cisg
ICAgICAgICAgICBiOiAnZmFpbCcsCisgICAgICAgIH0sCisgICAgICAgIHRvb01hbnlGYWlsdXJl
czogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICAgIGJ1aWxkTmFtZTogJ2J1aWxkMycsCisg
ICAgICAgIGZhaWxpbmdUZXN0czogeworICAgICAgICAgICAgYTogJ2NyYXNoJywKKyAgICAgICAg
ICAgIGI6ICdmYWlsJywKKyAgICAgICAgfSwKKyAgICAgICAgdG9vTWFueUZhaWx1cmVzOiBmYWxz
ZSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgYnVpbGROYW1lOiAnYnVpbGQyJywKKyAgICAgICAg
ZmFpbGluZ1Rlc3RzOiB7CisgICAgICAgICAgICBhOiAnZmFpbCcsCisgICAgICAgIH0sCisgICAg
ICAgIHRvb01hbnlGYWlsdXJlczogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICAgIGJ1aWxk
TmFtZTogJ2J1aWxkMScsCisgICAgICAgIGZhaWxpbmdUZXN0czoge30sCisgICAgICAgIHRvb01h
bnlGYWlsdXJlczogZmFsc2UsCisgICAgfSwKK107CisKK3Rlc3QoJ3Bvc3NpYmx5Rmxha3lUZXN0
cycsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRl
c3REZXRlY3RvcigpOworICAgIHJ1bnMuZm9yRWFjaChmdW5jdGlvbihydW4pIHsgZGV0ZWN0b3Iu
aW5jb3Jwb3JhdGVUZXN0UmVzdWx0cyhydW4uYnVpbGROYW1lLCBydW4uZmFpbGluZ1Rlc3RzLCBy
dW4udG9vTWFueUZhaWx1cmVzKSB9KTsKKworICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJs
eUZsYWt5VGVzdHMsIFsnYSddKTsKK30pOworCit0ZXN0KCdhbGxGYWlsdXJlcycsIDMsIGZ1bmN0
aW9uKCkgeworICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3Rvcigp
OworICAgIHJ1bnMuZm9yRWFjaChmdW5jdGlvbihydW4pIHsgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVU
ZXN0UmVzdWx0cyhydW4uYnVpbGROYW1lLCBydW4uZmFpbGluZ1Rlc3RzLCBydW4udG9vTWFueUZh
aWx1cmVzKSB9KTsKKworICAgIGRlZXBFcXVhbChkZXRlY3Rvci5hbGxGYWlsdXJlcygnYScpLCBb
CisgICAgICAgIHsgYnVpbGQ6ICdidWlsZDUnLCByZXN1bHQ6ICdmYWlsJyB9LAorICAgICAgICB7
IGJ1aWxkOiAnYnVpbGQzJywgcmVzdWx0OiAnY3Jhc2gnIH0sCisgICAgICAgIHsgYnVpbGQ6ICdi
dWlsZDInLCByZXN1bHQ6ICdmYWlsJyB9LAorICAgIF0pOworCisgICAgZGVlcEVxdWFsKGRldGVj
dG9yLmFsbEZhaWx1cmVzKCdiJyksIFsKKyAgICAgICAgeyBidWlsZDogJ2J1aWxkNicsIHJlc3Vs
dDogJ2ZhaWwnIH0sCisgICAgICAgIHsgYnVpbGQ6ICdidWlsZDUnLCByZXN1bHQ6ICdmYWlsJyB9
LAorICAgICAgICB7IGJ1aWxkOiAnYnVpbGQ0JywgcmVzdWx0OiAnZmFpbCcgfSwKKyAgICAgICAg
eyBidWlsZDogJ2J1aWxkMycsIHJlc3VsdDogJ2ZhaWwnIH0sCisgICAgXSk7CisKKyAgICBlcXVh
bChkZXRlY3Rvci5hbGxGYWlsdXJlcygnYycpLCBudWxsKTsKK30pOworCit0ZXN0KCdmYWlsaW5n
IG1hbnkgdGltZXMgaW4gYSByb3cgc2hvdWxkIG5vdCBjb3VudCBhcyBmbGFreScsIDMsIGZ1bmN0
aW9uKCkgeworICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3Rvcigp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgZGV0ZWN0b3IuaW5j
b3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7CisKKyAg
ICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0
UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOworCisgICAgZGVlcEVxdWFsKGRldGVjdG9yLnBv
c3NpYmx5Rmxha3lUZXN0cywgW10pOworCisgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVz
dWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7CisKKyAgICBkZWVwRXF1YWwoZGV0
ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Cit9KTsKKwordGVzdCgnZmFpbGluZyBhZnRl
ciBwYXNzaW5nIG1hbnkgdGltZXMgaW4gYSByb3cgc2hvdWxkIG5vdCBjb3VudCBhcyBmbGFreScs
IDMsIGZ1bmN0aW9uKCkgeworICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3RE
ZXRlY3RvcigpOworICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywg
eyBhOiAnZmFpbCcgfSwgZmFsc2UpOworCisgICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5
Rmxha3lUZXN0cywgW10pOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQorICAg
ICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7
CisKKyAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7CisKKyAg
ICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0s
IGZhbHNlKTsKKworICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtd
KTsKK30pOworCit0ZXN0KCdmbGFraW5nIG5vdyBzaG91bGQgb3ZlcnJpZGUgbWFueSBwYXN0IGZh
aWx1cmVzJywgMSwgZnVuY3Rpb24oKSB7CisgICAgdmFyIGRldGVjdG9yID0gbmV3IEZsYWt5TGF5
b3V0VGVzdERldGVjdG9yKCk7CisgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygn
YnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7CisgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVU
ZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOworICAgIGRldGVjdG9yLmluY29ycG9yYXRl
VGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOworICAgIGRldGVjdG9y
LmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJl
c3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOworICAgIGRlZXBFcXVhbChkZXRl
Y3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFsnYSddKTsKK30pOworCit0ZXN0KCdwYXNzaW5nIG5v
dyBzaG91bGQgb3ZlcnJpZGUgcGFzdCBmbGFraW5lc3MnLCAxLCBmdW5jdGlvbigpIHsKKyAgICB2
YXIgZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJl
c3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKKyAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RS
ZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKKyAgICBkZXRlY3Rvci5pbmNv
cnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7CisgICAgZGV0ZWN0b3IuaW5j
b3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7CisgICAg
ZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOworICAg
IGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKK30pOworCit0ZXN0
KCd0b28gbWFueSBmYWlsdXJlcyBub3cgc2hvdWxkIG5vdCBvdmVycmlkZSBwYXN0IGZsYWtpbmVz
cycsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRl
c3REZXRlY3RvcigpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAg
ZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgdHJ1ZSk7CisgICAg
ZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBm
YWxzZSk7CisgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwg
ZmFsc2UpOworICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBh
OiAnZmFpbCcgfSwgZmFsc2UpOworICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMo
J2J1aWxkJywge30sIGZhbHNlKTsKKyAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFr
eVRlc3RzLCBbJ2EnXSk7Cit9KTsKKworfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL0ZsYWt5VGVzdEJ1Z0Zvcm0uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvRmxha3lUZXN0QnVnRm9ybS5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9GbGFreVRlc3RCdWdGb3JtLmpzOjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvRmxha3lUZXN0QnVnRm9ybS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworZnVuY3Rpb24gRmxha3lUZXN0QnVnRm9ybSh0ZXN0ZXIsIGZhaWxpbmdC
dWlsZE5hbWVzLCBmYWlsaW5nVGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWlsZCwgbmV3ZXN0QW5hbHl6
ZWRCdWlsZCwgYW5hbHl6ZWRCdWlsZENvdW50KSB7CisgICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNh
bGwodGhpcywgdGVzdGVyKTsKKworICAgIHRoaXMuX2ZhaWxpbmdCdWlsZE5hbWVzID0gZmFpbGlu
Z0J1aWxkTmFtZXM7CisgICAgdGhpcy5fZmFpbGluZ1Rlc3QgPSBmYWlsaW5nVGVzdDsKKyAgICB0
aGlzLl9vbGRlc3RBbmFseXplZEJ1aWxkID0gb2xkZXN0QW5hbHl6ZWRCdWlsZDsKKyAgICB0aGlz
Ll9uZXdlc3RBbmFseXplZEJ1aWxkID0gbmV3ZXN0QW5hbHl6ZWRCdWlsZDsKKyAgICB0aGlzLl9h
bmFseXplZEJ1aWxkQ291bnQgPSBhbmFseXplZEJ1aWxkQ291bnQ7CisKKyAgICB0aGlzLmRlc2Ny
aXB0aW9uID0gdGhpcy5fY3JlYXRlQnVnRGVzY3JpcHRpb24oKTsKKyAgICB0aGlzLnRpdGxlID0g
dGhpcy5fY3JlYXRlQnVnVGl0bGUoKTsKKyAgICB0aGlzLnVybCA9IHRoaXMuX3Rlc3Rlci5yZXN1
bHRzUGFnZVVSTCh0aGlzLl9mYWlsaW5nQnVpbGROYW1lc1swXSk7Cit9CisKK0ZsYWt5VGVzdEJ1
Z0Zvcm0ucHJvdG90eXBlID0geworICAgIF9jcmVhdGVCdWdEZXNjcmlwdGlvbjogZnVuY3Rpb24o
KSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAgICAgICB2YXIgcmVzdWx0ID0gc2Vs
Zi5fZmFpbGluZ1Rlc3QKKyAgICAgICAgICAgICsgJyBmYWlsZWQgJyArIHNlbGYuX2ZhaWxpbmdC
dWlsZE5hbWVzLmxlbmd0aCArICcgb3V0IG9mICcgKyBzZWxmLl9hbmFseXplZEJ1aWxkQ291bnQg
KyAnIHRpbWVzJworICAgICAgICAgICAgKyAnIG9uICcgKyBzZWxmLl90ZXN0ZXIubmFtZQorICAg
ICAgICAgICAgKyAnIGJldHdlZW4gcicgKyBzZWxmLl90ZXN0ZXIuYnVpbGRib3QucGFyc2VCdWls
ZE5hbWUoc2VsZi5fb2xkZXN0QW5hbHl6ZWRCdWlsZCkucmV2aXNpb24KKyAgICAgICAgICAgICsg
JyBhbmQgcicgKyBzZWxmLl90ZXN0ZXIuYnVpbGRib3QucGFyc2VCdWlsZE5hbWUoc2VsZi5fbmV3
ZXN0QW5hbHl6ZWRCdWlsZCkucmV2aXNpb24KKyAgICAgICAgICAgICsgJyAoaW5jbHVzaXZlKS5c
blxuJzsKKworICAgICAgICByZXN1bHQgKz0gJ0ZhaWx1cmVzOlxuXG4nOworICAgICAgICByZXN1
bHQgKz0gc2VsZi5fZmFpbGluZ0J1aWxkTmFtZXMubWFwKGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rlci5yZXN1bHRzUGFnZVVSTChidWlsZE5hbWUp
ICsgJ1xuJzsKKyAgICAgICAgfSkuam9pbignJyk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9LAorCisgICAgX2NyZWF0ZUJ1Z1RpdGxlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2ZhaWxpbmdUZXN0ICsgJyBzb21ldGltZXMgZmFpbHMgb24gJyArIHRoaXMuX3Rl
c3Rlci5uYW1lOworICAgIH0sCit9OworCitGbGFreVRlc3RCdWdGb3JtLnByb3RvdHlwZS5fX3By
b3RvX18gPSBUZXN0UmVsYXRlZEJ1Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMJKHJl
dmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmxha3lUZXN0QnVnRm9ybV91bml0
dGVzdHMuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RCdWdG
b3JtX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworKGZ1bmN0aW9uKCkgeworCittb2R1bGUoJ0ZsYWt5VGVzdEJ1Z0Zvcm0nKTsKKworZnVu
Y3Rpb24gY3JlYXRlVGVzdEZvcm0oZmFpbGluZ0J1aWxkTmFtZXMsIGZhaWxpbmdUZXN0LCBvbGRl
c3RBbmFseXplZEJ1aWxkLCBuZXdlc3RBbmFseXplZEJ1aWxkLCBhbmFseXplZEJ1aWxkQ291bnQp
IHsKKyAgICB2YXIgbW9ja0J1aWxkYm90ID0ge307CisgICAgbW9ja0J1aWxkYm90LnBhcnNlQnVp
bGROYW1lID0gZnVuY3Rpb24oYnVpbGROYW1lKSB7CisgICAgICAgIHZhciBtYXRjaCA9IC8oXGQr
KS8uZXhlYyhidWlsZE5hbWUpOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcmV2aXNp
b246IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksCisgICAgICAgICAgICBidWlsZE51bWJlcjogcGFy
c2VJbnQobWF0Y2hbMl0sIDEwKSwKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgdmFyIG1vY2tC
dWlsZGVyID0ge307CisgICAgbW9ja0J1aWxkZXIubmFtZSA9ICdbQlVJTERFUiBOQU1FXSc7Cisg
ICAgbW9ja0J1aWxkZXIuYnVpbGRib3QgPSBtb2NrQnVpbGRib3Q7CisgICAgbW9ja0J1aWxkZXIu
cmVzdWx0c1BhZ2VVUkwgPSBmdW5jdGlvbihidWlsZE5hbWUpIHsKKyAgICAgICAgcmV0dXJuICdb
UkVTVUxUUyBQQUdFIFVSTCAnICsgdGhpcy5uYW1lICsgJywgJyArIGJ1aWxkTmFtZSArICddJzsK
KyAgICB9CisKKyAgICByZXR1cm4gbmV3IEZsYWt5VGVzdEJ1Z0Zvcm0obW9ja0J1aWxkZXIsIGZh
aWxpbmdCdWlsZE5hbWVzLCBmYWlsaW5nVGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWlsZCwgbmV3ZXN0
QW5hbHl6ZWRCdWlsZCwgYW5hbHl6ZWRCdWlsZENvdW50KTsKK30KKworY29uc3QgdGVzdENhc2Vz
ID0gWworICAgIHsKKyAgICAgICAgb2xkZXN0QW5hbHl6ZWRCdWlsZDogJ3IxICgxKScsCisgICAg
ICAgIG5ld2VzdEFuYWx5emVkQnVpbGQ6ICdyMTUgKDgpJywKKyAgICAgICAgYW5hbHl6ZWRCdWls
ZENvdW50OiA4LAorICAgICAgICBmYWlsaW5nQnVpbGROYW1lczogWworICAgICAgICAgICAgJ3Ix
MCAoNSknLAorICAgICAgICAgICAgJ3I4ICgyKScsCisgICAgICAgIF0sCisgICAgICAgIGZhaWxp
bmdUZXN0OiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sJywKKyAgICAgICAgZXhw
ZWN0ZWREZXNjcmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBmYWls
ZWQgMiBvdXQgb2YgOCB0aW1lcyBvbiBbQlVJTERFUiBOQU1FXSBiZXR3ZWVuIHIxIGFuZCByMTUg
KGluY2x1c2l2ZSkuXG5cbkZhaWx1cmVzOlxuXG5bUkVTVUxUUyBQQUdFIFVSTCBbQlVJTERFUiBO
QU1FXSwgcjEwICg1KV1cbltSRVNVTFRTIFBBR0UgVVJMIFtCVUlMREVSIE5BTUVdLCByOCAoMild
XG4nLAorICAgICAgICBleHBlY3RlZFRpdGxlOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
ci5odG1sIHNvbWV0aW1lcyBmYWlscyBvbiBbQlVJTERFUiBOQU1FXScsCisgICAgICAgIGV4cGVj
dGVkVVJMOiAnW1JFU1VMVFMgUEFHRSBVUkwgW0JVSUxERVIgTkFNRV0sIHIxMCAoNSldJywKKyAg
ICB9LAorXTsKKwordGVzdCgndGl0bGVzJywgMSwgZnVuY3Rpb24oKSB7CisgICAgdGVzdENhc2Vz
LmZvckVhY2goZnVuY3Rpb24odGVzdENhc2UpIHsKKyAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVU
ZXN0Rm9ybSh0ZXN0Q2FzZS5mYWlsaW5nQnVpbGROYW1lcywgdGVzdENhc2UuZmFpbGluZ1Rlc3Qs
IHRlc3RDYXNlLm9sZGVzdEFuYWx5emVkQnVpbGQsIHRlc3RDYXNlLm5ld2VzdEFuYWx5emVkQnVp
bGQsIHRlc3RDYXNlLmFuYWx5emVkQnVpbGRDb3VudCk7CisgICAgICAgIGVxdWFsKGZvcm0udGl0
bGUsIHRlc3RDYXNlLmV4cGVjdGVkVGl0bGUpOworICAgIH0pOworfSk7CisKK3Rlc3QoJ2Rlc2Ny
aXB0aW9ucycsIDEsIGZ1bmN0aW9uKCkgeworICAgIHRlc3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9u
KHRlc3RDYXNlKSB7CisgICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0odGVzdENhc2Uu
ZmFpbGluZ0J1aWxkTmFtZXMsIHRlc3RDYXNlLmZhaWxpbmdUZXN0LCB0ZXN0Q2FzZS5vbGRlc3RB
bmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5uZXdlc3RBbmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5hbmFs
eXplZEJ1aWxkQ291bnQpOworICAgICAgICBlcXVhbChmb3JtLmRlc2NyaXB0aW9uLCB0ZXN0Q2Fz
ZS5leHBlY3RlZERlc2NyaXB0aW9uKTsKKyAgICB9KTsKK30pOworCit0ZXN0KCdVUkxzJywgMSwg
ZnVuY3Rpb24oKSB7CisgICAgdGVzdENhc2VzLmZvckVhY2goZnVuY3Rpb24odGVzdENhc2UpIHsK
KyAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSh0ZXN0Q2FzZS5mYWlsaW5nQnVpbGRO
YW1lcywgdGVzdENhc2UuZmFpbGluZ1Rlc3QsIHRlc3RDYXNlLm9sZGVzdEFuYWx5emVkQnVpbGQs
IHRlc3RDYXNlLm5ld2VzdEFuYWx5emVkQnVpbGQsIHRlc3RDYXNlLmFuYWx5emVkQnVpbGRDb3Vu
dCk7CisgICAgICAgIGVxdWFsKGZvcm0udXJsLCB0ZXN0Q2FzZS5leHBlY3RlZFVSTCk7CisgICAg
fSk7Cit9KTsKKworfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91dFRl
c3RIaXN0b3J5QW5hbHl6ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplci5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9MYXlvdXRUZXN0SGlzdG9yeUFuYWx5emVyLmpzOjkzMjU0KQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplci5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIExheW91dFRl
c3RIaXN0b3J5QW5hbHl6ZXIoYnVpbGRlcikgeworICAgIHRoaXMuX2J1aWxkZXIgPSBidWlsZGVy
OworICAgIHRoaXMuX2ZsYWtpbmVzc0RldGVjdG9yID0gbmV3IEZsYWt5TGF5b3V0VGVzdERldGVj
dG9yKCk7CisgICAgdGhpcy5faGlzdG9yeSA9IHt9OworICAgIHRoaXMuX2xvYWRlciA9IG5ldyBM
YXlvdXRUZXN0UmVzdWx0c0xvYWRlcihidWlsZGVyKTsKKyAgICB0aGlzLl90ZXN0UnVuc1NpbmNl
TGFzdEludGVyZXN0aW5nQ2hhbmdlID0gMDsKK30KKworTGF5b3V0VGVzdEhpc3RvcnlBbmFseXpl
ci5wcm90b3R5cGUgPSB7CisgICAgLyoKKyAgICAgKiBQZXJpb2RpY2FsbHkgY2FsbHMgY2FsbGJh
Y2sgdW50aWwgYWxsIGN1cnJlbnQgZmFpbHVyZXMgaGF2ZSBiZWVuIGV4cGxhaW5lZC4gQ2FsbGJh
Y2sgaXMKKyAgICAgKiBwYXNzZWQgYW4gb2JqZWN0IGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAg
KiB7CisgICAgICogICAgICdoaXN0b3J5JzogeworICAgICAqICAgICAgICAgJ3IxMjM0NyAoNjgx
KSc6IHsKKyAgICAgKiAgICAgICAgICAgICAndG9vTWFueUZhaWx1cmVzJzogZmFsc2UsCisgICAg
ICogICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAqICAgICAgICAgICAgICAgICAnY3NzMS9i
YXNpYy9jbGFzc19hc19zZWxlY3RvcjIuaHRtbCc6ICdmYWlsJywKKyAgICAgKiAgICAgICAgICAg
ICB9LAorICAgICAqICAgICAgICAgfSwKKyAgICAgKiAgICAgICAgICdyMTIzNDYgKDY4MCknOiB7
CisgICAgICogICAgICAgICAgICAgJ3Rvb01hbnlGYWlsdXJlcyc6IGZhbHNlLAorICAgICAqICAg
ICAgICAgICAgICd0ZXN0cyc6IHt9LAorICAgICAqICAgICAgICAgfSwKKyAgICAgKiAgICAgICAg
ICdyMTIzNDUgKDY3OSknOiB7CisgICAgICogICAgICAgICAgICAgJ3Rvb01hbnlGYWlsdXJlcyc6
IGZhbHNlLAorICAgICAqICAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgKiAgICAgICAgICAg
ICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCc6ICdjcmFzaCcsCisgICAg
ICogICAgICAgICAgICAgfSwKKyAgICAgKiAgICAgICAgIH0sCisgICAgICogICAgIH0sCisgICAg
ICogICAgICdwb3NzaWJseUZsYWt5JzogeworICAgICAqICAgICAgICAgJ2Zhc3Qvd29ya2Vycy93
b3JrZXItdGVzdC5odG1sJzogWworICAgICAqICAgICAgICAgICAgIHsgJ2J1aWxkJzogJ3IxMjM0
NCAoNjc4KScsICdyZXN1bHQnOiAnZmFpbCcgfSwKKyAgICAgKiAgICAgICAgICAgICB7ICdidWls
ZCc6ICdyMTIzNDAgKDY3NiknLCAncmVzdWx0JzogJ2NyYXNoJyB9LAorICAgICAqICAgICAgICAg
XSwKKyAgICAgKiAgICAgfSwKKyAgICAgKiB9CisgICAgICogRWFjaCBidWlsZCBjb250YWlucyBq
dXN0IHRoZSBmYWlsdXJlcyB0aGF0IGEpIGFyZSBzdGlsbCBvY2N1cnJpbmcgb24gdGhlIGJvdHMs
IGFuZCBiKSB3ZXJlIG5ldworICAgICAqIGluIHRoYXQgYnVpbGQuCisgICAgICovCisgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAg
ICAgc2VsZi5fYnVpbGRlci5nZXRCdWlsZE5hbWVzKGZ1bmN0aW9uKGJ1aWxkTmFtZXMpIHsKKyAg
ICAgICAgICAgIHNlbGYuX2FuYWx5emVCdWlsZHMoYnVpbGROYW1lcywgY2FsbGJhY2ssIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHNlbGYuX2J1aWxkZXIuZ2V0T2xkQnVpbGROYW1lcyhm
dW5jdGlvbihvbGRCdWlsZE5hbWVzKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FuYWx5
emVCdWlsZHMob2xkQnVpbGROYW1lcywgY2FsbGJhY2spOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICBfYW5hbHl6ZUJ1aWxk
czogZnVuY3Rpb24oYnVpbGROYW1lcywgY2FsbGJhY2ssIGFuYWx5emVkQWxsQnVpbGRzQ2FsbGJh
Y2spIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBmdW5jdGlvbiBpbm5lcihi
dWlsZEluZGV4KSB7CisgICAgICAgICAgICBzZWxmLl9pbmNvcnBvcmF0ZUJ1aWxkSGlzdG9yeShi
dWlsZE5hbWVzLCBidWlsZEluZGV4LCBmdW5jdGlvbihjYWxsQWdhaW4pIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAgICAgaGlzdG9yeTogc2VsZi5faGlz
dG9yeSwKKyAgICAgICAgICAgICAgICAgICAgcG9zc2libHlGbGFreToge30sCisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICBzZWxmLl9mbGFraW5lc3NEZXRlY3Rvci5wb3NzaWJs
eUZsYWt5VGVzdHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0TmFtZSkgeworICAgICAgICAgICAgICAg
ICAgICBkYXRhLnBvc3NpYmx5Rmxha3lbdGVzdE5hbWVdID0gc2VsZi5fZmxha2luZXNzRGV0ZWN0
b3IuYWxsRmFpbHVyZXModGVzdE5hbWUpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgdmFyIG5leHRJbmRleCA9IGJ1aWxkSW5kZXggKyAxOworICAgICAgICAgICAgICAg
IHZhciBhbmFseXplZEFsbEJ1aWxkcyA9IG5leHRJbmRleCA+PSBidWlsZE5hbWVzLmxlbmd0aDsK
KyAgICAgICAgICAgICAgICB2YXIgaGF2ZU1vcmVEYXRhVG9GZXRjaCA9ICFhbmFseXplZEFsbEJ1
aWxkcyB8fCBhbmFseXplZEFsbEJ1aWxkc0NhbGxiYWNrOworCisgICAgICAgICAgICAgICAgdmFy
IGNhbGxiYWNrUmVxdWVzdGVkU3RvcCA9ICFjYWxsYmFjayhkYXRhLCBoYXZlTW9yZURhdGFUb0Zl
dGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tSZXF1ZXN0ZWRTdG9wKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoIWNhbGxBZ2FpbikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKGFuYWx5
emVkQWxsQnVpbGRzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbmFseXplZEFsbEJ1aWxk
c0NhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICAgICAgYW5hbHl6ZWRBbGxCdWlsZHNDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaW5uZXIobmV4dEluZGV4
KSB9LCAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIGlubmVyKDApOwor
ICAgIH0sCisKKyAgICBfaW5jb3Jwb3JhdGVCdWlsZEhpc3Rvcnk6IGZ1bmN0aW9uKGJ1aWxkTmFt
ZXMsIGJ1aWxkSW5kZXgsIGNhbGxiYWNrKSB7CisgICAgICAgIHZhciBwcmV2aW91c0J1aWxkTmFt
ZSA9IE9iamVjdC5rZXlzKHRoaXMuX2hpc3RvcnkpLmxhc3QoKTsKKyAgICAgICAgdmFyIG5leHRC
dWlsZE5hbWUgPSBidWlsZE5hbWVzW2J1aWxkSW5kZXhdOworCisgICAgICAgIHZhciBzZWxmID0g
dGhpczsKKyAgICAgICAgc2VsZi5fbG9hZGVyLnN0YXJ0KG5leHRCdWlsZE5hbWUsIGZ1bmN0aW9u
KHRlc3RzLCB0b29NYW55RmFpbHVyZXMpIHsKKyAgICAgICAgICAgIGlmICh0b29NYW55RmFpbHVy
ZXMpIHsKKyAgICAgICAgICAgICAgICB2YXIgZmlyc3RCdWlsZE5hbWUgPSBPYmplY3Qua2V5cyhz
ZWxmLl9oaXN0b3J5KVswXTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgKGkuZS4s
IGN1cnJlbnQgb3IgbW9zdCByZWNlbnQpIGJ1aWxkIGV4aXRlZCBlYXJseSBkdWUgdG8gdG9vIG1h
bnkKKyAgICAgICAgICAgICAgICAvLyBmYWlsdXJlcywgd2Ugd2FudCB0byBwcm9jZXNzIG90aGVy
IHRvby1tYW55LWZhaWx1cmVzIGJ1aWxkcyBub3JtYWxseSB0byB0cnkgdG8KKyAgICAgICAgICAg
ICAgICAvLyBmaWd1cmUgb3V0IHdoZW4gdGhlIHRvby1tYW55LWZhaWx1cmVzIHN0YXJ0ZWQgb2Nj
dXJyaW5nLiBJZiB0aGUgZmlyc3QvY3VycmVudAorICAgICAgICAgICAgICAgIC8vIGJ1aWxkIGRp
ZCBub3QgZXhpdCBkdWUgdG8gdG9vIG1hbnkgZmFpbHVyZXMsIHRoZW4gdG9vLW1hbnktZmFpbHVy
ZXMgYnVpbGRzIHdpbGwKKyAgICAgICAgICAgICAgICAvLyBvbmx5IGNvbmZ1c2Ugb3VyIGFuYWx5
c2lzIChzaW5jZSB0aGV5IHJ1biBhIHNlbWktYXJiaXRyYXJ5IHN1YnNldCBvZiB0ZXN0cyksIHNv
CisgICAgICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc2tpcCB0aGVtIGVudGlyZWx5Lgor
ICAgICAgICAgICAgICAgIGlmIChmaXJzdEJ1aWxkTmFtZSAmJiAhc2VsZi5faGlzdG9yeVtmaXJz
dEJ1aWxkTmFtZV0udG9vTWFueUZhaWx1cmVzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHRydWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICArK3NlbGYuX3Rlc3RSdW5zU2luY2VMYXN0
SW50ZXJlc3RpbmdDaGFuZ2U7CisKKyAgICAgICAgICAgIHZhciBoaXN0b3J5SXRlbSA9IHsKKyAg
ICAgICAgICAgICAgICB0b29NYW55RmFpbHVyZXM6IHRvb01hbnlGYWlsdXJlcywKKyAgICAgICAg
ICAgICAgICB0ZXN0czoge30sCisgICAgICAgICAgICB9OworICAgICAgICAgICAgc2VsZi5faGlz
dG9yeVtuZXh0QnVpbGROYW1lXSA9IGhpc3RvcnlJdGVtOworCisgICAgICAgICAgICB2YXIgcHJl
dmlvdXNIaXN0b3J5SXRlbTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c0J1aWxkTmFtZSkKKyAg
ICAgICAgICAgICAgICBwcmV2aW91c0hpc3RvcnlJdGVtID0gc2VsZi5faGlzdG9yeVtwcmV2aW91
c0J1aWxkTmFtZV07CisKKyAgICAgICAgICAgIHZhciBuZXdGbGFreVRlc3RzID0gc2VsZi5fZmxh
a2luZXNzRGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cyhuZXh0QnVpbGROYW1lLCB0ZXN0
cywgdG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgIGlmIChuZXdGbGFreVRlc3RzLmxlbmd0
aCkgeworICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RSdW5zU2luY2VMYXN0SW50ZXJlc3RpbmdD
aGFuZ2UgPSAwOworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgcG9zc2libHkgZmxha3kg
dGVzdHMgZnJvbSB0aGUgZmFpbHVyZSBoaXN0b3J5LCBzaW5jZSB3aGVuIHRoZXkgZmFpbGVkCisg
ICAgICAgICAgICAgICAgLy8gaXMgbm8gbG9uZ2VyIG1lYW5pbmdmdWwuCisgICAgICAgICAgICAg
ICAgbmV3Rmxha3lUZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGJ1aWxkTmFtZSBpbiBzZWxmLl9oaXN0b3J5KQorICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYuX2hpc3RvcnlbYnVpbGROYW1lXS50ZXN0c1t0ZXN0
TmFtZV07CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvciAodmFyIHRlc3ROYW1lIGluIHRlc3RzKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZXZp
b3VzSGlzdG9yeUl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4g
cHJldmlvdXNIaXN0b3J5SXRlbS50ZXN0cykpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHByZXZpb3VzSGlzdG9yeUl0ZW0udGVz
dHNbdGVzdE5hbWVdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoaXN0b3J5
SXRlbS50ZXN0c1t0ZXN0TmFtZV0gPSB0ZXN0c1t0ZXN0TmFtZV07CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciBwcmV2aW91c1VuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCA9IHByZXZp
b3VzQnVpbGROYW1lID8gT2JqZWN0LmtleXMoc2VsZi5faGlzdG9yeVtwcmV2aW91c0J1aWxkTmFt
ZV0udGVzdHMpLmxlbmd0aCA6IDA7CisgICAgICAgICAgICB2YXIgdW5leHBsYWluZWRGYWlsdXJl
c0NvdW50ID0gT2JqZWN0LmtleXMoc2VsZi5faGlzdG9yeVtuZXh0QnVpbGROYW1lXS50ZXN0cyku
bGVuZ3RoOworCisgICAgICAgICAgICBpZiAocHJldmlvdXNVbmV4cGxhaW5lZEZhaWx1cmVzQ291
bnQgJiYgIXVuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCkKKyAgICAgICAgICAgICAgICBzZWxmLl90
ZXN0UnVuc1NpbmNlTGFzdEludGVyZXN0aW5nQ2hhbmdlID0gMDsKKworICAgICAgICAgICAgY29u
c3QgbWluaW11bVJlcXVpcmVkVGVzdFJ1bnNXaXRob3V0SW50ZXJlc3RpbmdDaGFuZ2VzID0gNTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHVuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCB8fCBzZWxmLl90
ZXN0UnVuc1NpbmNlTGFzdEludGVyZXN0aW5nQ2hhbmdlIDwgbWluaW11bVJlcXVpcmVkVGVzdFJ1
bnNXaXRob3V0SW50ZXJlc3RpbmdDaGFuZ2VzKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rp
b24odGVzdHMpIHsKKyAgICAgICAgICAgIC8vIFNvbWUgdGVzdHMgZmFpbGVkLCBidXQgd2UgY291
bGRuJ3QgZmV0Y2ggcmVzdWx0cy5odG1sIChwZXJoYXBzIGJlY2F1c2UgdGhlIHRlc3QKKyAgICAg
ICAgICAgIC8vIHJ1biBhYm9ydGVkIGVhcmx5IGZvciBzb21lIHJlYXNvbikuIEp1c3Qgc2tpcCB0
aGlzIGJ1aWxkIGVudGlyZWx5LgorICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAg
IH0pOworICAgIH0sCit9OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVz
dFJlc3VsdHNMb2FkZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
TGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanM6OTMyNTQpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9MYXlvdXRUZXN0UmVzdWx0c0xvYWRlci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIExheW91dFRlc3RSZXN1bHRz
TG9hZGVyKGJ1aWxkZXIpIHsKKyAgICB0aGlzLl9idWlsZGVyID0gYnVpbGRlcjsKK30KKworTGF5
b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlID0geworICAgIHN0YXJ0OiBmdW5jdGlvbihi
dWlsZE5hbWUsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7CisgICAgICAgIHZhciBjYWNoZUtl
eSA9ICdMYXlvdXRUZXN0UmVzdWx0c0xvYWRlci4nICsgdGhpcy5fYnVpbGRlci5uYW1lICsgJy4n
ICsgYnVpbGROYW1lOworICAgICAgICBjb25zdCBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24gPSA4
OworICAgICAgICBpZiAoUGVyc2lzdGVudENhY2hlLmNvbnRhaW5zKGNhY2hlS2V5KSkgeworICAg
ICAgICAgICAgdmFyIGNhY2hlZERhdGEgPSBQZXJzaXN0ZW50Q2FjaGUuZ2V0KGNhY2hlS2V5KTsK
KyAgICAgICAgICAgIGlmIChjYWNoZWREYXRhLnZlcnNpb24gPT09IGN1cnJlbnRDYWNoZWREYXRh
VmVyc2lvbikgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZWREYXRhLmVycm9yKQorICAgICAg
ICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKGNhY2hlZERhdGEudGVzdHMsIGNhY2hlZERhdGEu
dG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGNhY2hlZERhdGEudGVzdHMsIGNhY2hlZERhdGEudG9vTWFueUZhaWx1cmVz
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlGYWlsdXJlczogZmFsc2Us
IGVycm9yOiBmYWxzZSwgdmVyc2lvbjogY3VycmVudENhY2hlZERhdGFWZXJzaW9uIH07CisKKyAg
ICAgICAgZnVuY3Rpb24gY2FjaGVQYXJzZVJlc3VsdHNBbmRDYWxsQ2FsbGJhY2socGFyc2VSZXN1
bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNlUmVzdWx0LnRlc3RzOworICAg
ICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHBhcnNlUmVzdWx0LnRvb01hbnlGYWls
dXJlczsKKworICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC50ZXN0cywgcmVzdWx0LnRvb01hbnlGYWls
dXJlcyk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNl
bGYuX2ZldGNoQW5kUGFyc2VOUldUUmVzdWx0cyhidWlsZE5hbWUsIGNhY2hlUGFyc2VSZXN1bHRz
QW5kQ2FsbENhbGxiYWNrLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNlbGYuX2ZldGNoQW5k
UGFyc2VPUldUUmVzdWx0cyhidWlsZE5hbWUsIGNhY2hlUGFyc2VSZXN1bHRzQW5kQ2FsbENhbGxi
YWNrLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjb3VsZG4ndCBmZXRjaCBy
ZXN1bHRzIGZvciB0aGlzIGJ1aWxkLgorICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0
KTsKKyAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKHJlc3VsdC50ZXN0cywgcmVzdWx0LnRv
b01hbnlGYWlsdXJlcyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSwKKwor
ICAgIF9mZXRjaEFuZFBhcnNlTlJXVFJlc3VsdHM6IGZ1bmN0aW9uKGJ1aWxkTmFtZSwgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7CisgICAgICAgIGdldFJlc291cmNlKHRoaXMuX2J1
aWxkZXIucmVzdWx0c0RpcmVjdG9yeVVSTChidWlsZE5hbWUpICsgJ2Z1bGxfcmVzdWx0cy5qc29u
JywgZnVuY3Rpb24oeGhyKSB7CisgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKG5ldyBOUldU
UmVzdWx0c1BhcnNlcigpKS5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KSk7CisgICAgICAgIH0sCisg
ICAgICAgIGZ1bmN0aW9uKHhocikgeworICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOworICAg
ICAgICB9KTsKKyAgICB9LAorCisgICAgX2ZldGNoQW5kUGFyc2VPUldUUmVzdWx0czogZnVuY3Rp
b24oYnVpbGROYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAg
dmFyIHBhcnNlZEJ1aWxkTmFtZSA9IHRoaXMuX2J1aWxkZXIuYnVpbGRib3QucGFyc2VCdWlsZE5h
bWUoYnVpbGROYW1lKTsKKworICAgICAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzYyMzgwIHdh
cyBmaXhlZCBpbiByODk2MTAuCisgICAgICAgIHZhciByZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFu
eUZhaWx1cmVzSW5mbyA9IHBhcnNlZEJ1aWxkTmFtZS5yZXZpc2lvbiA+PSA4OTYxMDsKKworICAg
ICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlGYWlsdXJlczogZmFsc2UgfTsK
KworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgZnVuY3Rpb24gZmV0Y2hBbmRQ
YXJzZVJlc3VsdHNIVE1MKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgeworICAgICAg
ICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5fYnVpbGRlci5yZXN1bHRzUGFnZVVSTChidWlsZE5hbWUp
LCBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFyc2VSZXN1bHQgPSAobmV3
IE9SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAg
ICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNlUmVzdWx0LnRlc3RzOworICAgICAgICAgICAgICAg
IGlmIChyZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFueUZhaWx1cmVzSW5mbykKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHBhcnNlUmVzdWx0LnRvb01hbnlGYWls
dXJlczsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBmYWls
ZWQgdG8gZmV0Y2ggcmVzdWx0cy5odG1sLgorICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZmV0Y2hO
dW1iZXJPZkZhaWxpbmdUZXN0cyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKKyAg
ICAgICAgICAgIHNlbGYuX2J1aWxkZXIuZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMocGFyc2VkQnVp
bGROYW1lLmJ1aWxkTnVtYmVyLCBmdW5jdGlvbihmYWlsaW5nVGVzdENvdW50LCB0b29NYW55RmFp
bHVyZXMpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVzID0gdG9vTWFu
eUZhaWx1cmVzOworCisgICAgICAgICAgICAgICAgaWYgKGZhaWxpbmdUZXN0Q291bnQgPCAwKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgZmFpbGluZyB0ZXN0cyBjb3Vs
ZG4ndCBiZSBkZXRlcm1pbmVkLgorICAgICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFpbGluZ1Rlc3RDb3VudCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFu
eUZhaWx1cmVzSW5mbykgeworICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZl
dGNoTnVtYmVyT2ZGYWlsaW5nVGVzdHMoZnVuY3Rpb24oZmFpbGluZ1Rlc3RDb3VudCkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWZhaWxpbmdUZXN0Q291bnQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEFsbCB0ZXN0cyBwYXNzZWQsIHNvIG5vIHJlc3VsdHMuaHRtbCB3YXMgZ2Vu
ZXJhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIGZldGNo
aW5nIHJlc3VsdHMuCisgICAgICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmV0Y2hOdW1iZXJPZkZhaWxpbmdUZXN0
cyhmdW5jdGlvbihmYWlsaW5nVGVzdENvdW50KSB7CisgICAgICAgICAgICBpZiAoIWZhaWxpbmdU
ZXN0Q291bnQpIHsKKyAgICAgICAgICAgICAgICAvLyBBbGwgdGVzdHMgcGFzc2VkLgorICAgICAg
ICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRmluZCBvdXQgd2hpY2ggdGVzdHMg
ZmFpbGVkLgorICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAg
fSwgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOworICAgIH0sCit9
OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTlJXVFJlc3VsdHNQYXJzZXIuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTlJXVFJlc3VsdHNQYXJzZXIuanMJ
KHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTlJXVFJlc3VsdHNQYXJzZXIu
anM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OUldUUmVzdWx0c1BhcnNlci5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24g
TlJXVFJlc3VsdHNQYXJzZXIoKSB7Cit9CisKK05SV1RSZXN1bHRzUGFyc2VyLnByb3RvdHlwZSA9
IHsKKyAgICBwYXJzZTogZnVuY3Rpb24odW5leHBlY3RlZFJlc3VsdHNKUykgeworICAgICAgICB2
YXIgZGF0YTsKKyAgICAgICAgZnVuY3Rpb24gQUREX1JFU1VMVFMoeCkgeworICAgICAgICAgICAg
ZGF0YSA9IHg7CisgICAgICAgIH0KKworICAgICAgICBldmFsKHVuZXhwZWN0ZWRSZXN1bHRzSlMp
OworICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhKTsKKworICAgICAgICB2YXIgcmVzdWx0ID0g
eyB0ZXN0czoge30sIHRvb01hbnlGYWlsdXJlczogZGF0YS5pbnRlcnJ1cHRlZCB9OworCisgICAg
ICAgIGZ1bmN0aW9uIGZvckVhY2hUZXN0KHRyZWUsIGhhbmRsZXIsIG9wdF9wcmVmaXgpIHsKKyAg
ICAgICAgICAgIHZhciBwcmVmaXggPSBvcHRfcHJlZml4IHx8ICcnOworCisgICAgICAgICAgICBm
b3IgKHZhciBrZXkgaW4gdHJlZSkgeworICAgICAgICAgICAgICAgIHZhciBuZXdQcmVmaXggPSBw
cmVmaXggPyAocHJlZml4ICsgJy8nICsga2V5KSA6IGtleTsKKyAgICAgICAgICAgICAgICBpZiAo
J2FjdHVhbCcgaW4gdHJlZVtrZXldKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0ZXN0T2Jq
ZWN0ID0gdHJlZVtrZXldOworICAgICAgICAgICAgICAgICAgICB0ZXN0T2JqZWN0Lm5hbWUgPSBu
ZXdQcmVmaXg7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIodGVzdE9iamVjdCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZvckVhY2hUZXN0KHRyZWVb
a2V5XSwgaGFuZGxlciwgbmV3UHJlZml4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGlzRmFpbHVyZUV4cGVjdGVkKGV4cGVjdGVkLCBhY3R1YWwpIHsKKyAg
ICAgICAgICAgIGlmIChhY3R1YWwgPT09ICdTS0lQJykKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgdmFyIGV4cGVjdGVkQXJyYXkgPSBleHBlY3RlZC5zcGxpdCgn
ICcpOworICAgICAgICAgICAgdmFyIGFjdHVhbEFycmF5ID0gYWN0dWFsLnNwbGl0KCcgJyk7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbEFycmF5Lmxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgdmFyIGFjdHVhbFZhbHVlID0gYWN0dWFsQXJyYXlbaV07CisgICAg
ICAgICAgICAgICAgaWYgKGV4cGVjdGVkQXJyYXkuY29udGFpbnMoYWN0dWFsVmFsdWUpKQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRB
cnJheS5jb250YWlucygnRkFJTCcpICYmIFsnSU1BR0UnLCAnVEVYVCcsICdJTUFHRStURVhUJ10u
Y29udGFpbnMoYWN0dWFsVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY29udmVydE5SV1RS
ZXN1bHRTdHJpbmcobnJ3dFJlc3VsdCkgeworICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25z
ID0geworICAgICAgICAgICAgICAgIENSQVNIOiAnY3Jhc2gnLAorICAgICAgICAgICAgICAgICdJ
TUFHRStURVhUJzogJ2ZhaWwnLAorICAgICAgICAgICAgICAgIElNQUdFOiAnZmFpbCcsCisgICAg
ICAgICAgICAgICAgVEVYVDogJ2ZhaWwnLAorICAgICAgICAgICAgICAgIFRJTUVPVVQ6ICd0aW1l
b3V0JywKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChucnd0UmVzdWx0IGluIHRy
YW5zbGF0aW9ucykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRpb25zW25yd3RSZXN1
bHRdOworCisgICAgICAgICAgICBpZiAobnJ3dFJlc3VsdC5jb250YWlucygnICcpKQorICAgICAg
ICAgICAgICAgIHJldHVybiAnZmxha3knOworCisgICAgICAgICAgICByZXR1cm4gJ3Vua25vd24g
ZmFpbHVyZSB0eXBlICcgKyBucnd0UmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgZm9yRWFj
aFRlc3QoZGF0YS50ZXN0cywgZnVuY3Rpb24odGVzdCkgeworICAgICAgICAgICAgaWYgKGlzRmFp
bHVyZUV4cGVjdGVkKHRlc3QuZXhwZWN0ZWQsIHRlc3QuYWN0dWFsKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdC5uYW1lXSA9IHsgZmFpbHVy
ZVR5cGU6IGNvbnZlcnROUldUUmVzdWx0U3RyaW5nKHRlc3QuYWN0dWFsKSB9OworICAgICAgICB9
KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCit9OwpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvTmV3QnVnRm9ybS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9OZXdCdWdGb3JtLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL05ld0J1Z0Zvcm0uanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9O
ZXdCdWdGb3JtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbiBOZXdCdWdGb3JtKCkgeworfQorCitOZXdCdWdGb3JtLnByb3RvdHlwZSA9IHsK
KyAgICBkb21FbGVtZW50OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZvcm1EYXRhID0ge307
CisKKyAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50KQorICAgICAgICAgICAgZm9ybURhdGEuY29t
cG9uZW50ID0gdGhpcy5jb21wb25lbnQ7CisgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKQor
ICAgICAgICAgICAgZm9ybURhdGEuY29tbWVudCA9IHRoaXMuZGVzY3JpcHRpb247CisgICAgICAg
IGlmICh0aGlzLmtleXdvcmRzKQorICAgICAgICAgICAgZm9ybURhdGEua2V5d29yZHMgPSB0aGlz
LmtleXdvcmRzOworICAgICAgICBpZiAodGhpcy5vcGVyYXRpbmdTeXN0ZW0pCisgICAgICAgICAg
ICBmb3JtRGF0YS5vcF9zeXMgPSB0aGlzLm9wZXJhdGluZ1N5c3RlbTsKKyAgICAgICAgaWYgKHRo
aXMucGxhdGZvcm0pCisgICAgICAgICAgICBmb3JtRGF0YS5yZXBfcGxhdGZvcm0gPSB0aGlzLnBs
YXRmb3JtOworICAgICAgICBpZiAodGhpcy5wcm9kdWN0KQorICAgICAgICAgICAgZm9ybURhdGEu
cHJvZHVjdCA9IHRoaXMucHJvZHVjdDsKKyAgICAgICAgaWYgKHRoaXMudGl0bGUpCisgICAgICAg
ICAgICBmb3JtRGF0YS5zaG9ydF9kZXNjID0gdGhpcy50aXRsZTsKKyAgICAgICAgaWYgKHRoaXMu
dXJsKQorICAgICAgICAgICAgZm9ybURhdGEuYnVnX2ZpbGVfbG9jID0gdGhpcy51cmw7CisgICAg
ICAgIGlmICh0aGlzLnZlcnNpb24pCisgICAgICAgICAgICBmb3JtRGF0YS52ZXJzaW9uID0gdGhp
cy52ZXJzaW9uOworCisgICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
Zm9ybScpOworICAgICAgICBmb3JtLm1ldGhvZCA9ICdQT1NUJzsKKyAgICAgICAgZm9ybS5hY3Rp
b24gPSBjb25maWcua0J1Z3ppbGxhVVJMICsgJy9lbnRlcl9idWcuY2dpJzsKKworICAgICAgICBm
b3IgKHZhciBrZXkgaW4gZm9ybURhdGEpIHsKKyAgICAgICAgICAgIHZhciBpbnB1dCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICAgICAgICBpbnB1dC50eXBlID0gJ2hp
ZGRlbic7CisgICAgICAgICAgICBpbnB1dC5uYW1lID0ga2V5OworICAgICAgICAgICAgaW5wdXQu
dmFsdWUgPSBmb3JtRGF0YVtrZXldOworICAgICAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1
dCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZm9ybTsKKyAgICB9LAorfTsKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL05ld0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL05ld0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCShy
ZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05ld0J1Z0Zvcm1fdW5pdHRlc3Rz
LmpzOjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTmV3QnVnRm9ybV91bml0dGVz
dHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyhmdW5j
dGlvbigpIHsKKworbW9kdWxlKCdOZXdCdWdGb3JtJyk7CisKK2NvbnN0IHRlc3RGb3JtRGF0YSA9
IHsKKyAgICBjb21wb25lbnQ6IHsgZm9ybU5hbWU6ICdjb21wb25lbnQnLCB2YWx1ZTogJ1Rvb2xz
IC8gVGVzdHMnIH0sCisgICAgZGVzY3JpcHRpb246IHsgZm9ybU5hbWU6ICdjb21tZW50JywgdmFs
dWU6ICdUaGlzIGlzIGEgZGVzY3JpcHRpb25cblxud2l0aFxubmV3bGluZXMnIH0sCisgICAga2V5
d29yZHM6IHsgZm9ybU5hbWU6ICdrZXl3b3JkcycsIHZhbHVlOiAnUXQsIFBsYXRmb3JtT25seScg
fSwKKyAgICBvcGVyYXRpbmdTeXN0ZW06IHsgZm9ybU5hbWU6ICdvcF9zeXMnLCB2YWx1ZTogJ1dp
bmRvd3MgNycgfSwKKyAgICBwbGF0Zm9ybTogeyBmb3JtTmFtZTogJ3JlcF9wbGF0Zm9ybScsIHZh
bHVlOiAnUEMnIH0sCisgICAgcHJvZHVjdDogeyBmb3JtTmFtZTogJ3Byb2R1Y3QnLCB2YWx1ZTog
J1dlYktpdCcgfSwKKyAgICB0aXRsZTogeyBmb3JtTmFtZTogJ3Nob3J0X2Rlc2MnLCB2YWx1ZTog
J1RoaXMgaXMgYSBidWcgdGl0bGUnIH0sCisgICAgdXJsOiB7IGZvcm1OYW1lOiAnYnVnX2ZpbGVf
bG9jJywgdmFsdWU6ICdodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeT1mb28jYW5jaG9yJyB9
LAorICAgIHZlcnNpb246IHsgZm9ybU5hbWU6ICd2ZXJzaW9uJywgdmFsdWU6ICc1MjgrIChOaWdo
dGx5IEJ1aWxkKScgfSwKK307CisKK2Z1bmN0aW9uIGNyZWF0ZVRlc3RGb3JtKCkgeworICAgIHZh
ciBmb3JtID0gbmV3IE5ld0J1Z0Zvcm0oKTsKKyAgICBmb3IgKHZhciBrZXkgaW4gdGVzdEZvcm1E
YXRhKSB7CisgICAgICAgIGZvcm1ba2V5XSA9IHRlc3RGb3JtRGF0YVtrZXldLnZhbHVlOworICAg
IH0KKyAgICByZXR1cm4gZm9ybTsKK30KKwordGVzdCgncHJvcGVydGllcyBhcmUgc2V0JywgOSwg
ZnVuY3Rpb24oKSB7CisgICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgpOworCisgICAgZm9y
ICh2YXIga2V5IGluIHRlc3RGb3JtRGF0YSkgeworICAgICAgICBlcXVhbChmb3JtW2tleV0sIHRl
c3RGb3JtRGF0YVtrZXldLnZhbHVlKTsKKyAgICB9Cit9KTsKKwordGVzdCgnZG9tRWxlbWVudCgp
IHBvc3RzIHRvIGVudGVyX2J1Zy5jZ2knLCAzLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgZm9ybUVs
ZW1lbnQgPSBjcmVhdGVUZXN0Rm9ybSgpLmRvbUVsZW1lbnQoKTsKKyAgICBlcXVhbChmb3JtRWxl
bWVudC50YWdOYW1lLCAnRk9STScpOworICAgIGVxdWFsKGZvcm1FbGVtZW50Lm1ldGhvZCwgJ1BP
U1QnKTsKKyAgICBlcXVhbChmb3JtRWxlbWVudC5hY3Rpb24sICdodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9lbnRlcl9idWcuY2dpJyk7Cit9KTsKKwordGVzdCgnZG9tRWxlbWVudCgpIGNvbnRhaW5z
IG9ubHkgaGlkZGVuIGlucHV0IGVsZW1lbnRzJywgOSwgZnVuY3Rpb24oKSB7CisgICAgdmFyIGVs
ZW1lbnRzID0gY3JlYXRlVGVzdEZvcm0oKS5kb21FbGVtZW50KCkuZWxlbWVudHM7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBlcXVhbChl
bGVtZW50c1tpXS50eXBlLCAnaGlkZGVuJyk7CisgICAgfQorfSk7CisKK3Rlc3QoJ2RvbUVsZW1l
bnQoKSBjb250YWlucyBhbGwgZm9ybSB2YWx1ZXMnLCA5LCBmdW5jdGlvbigpIHsKKyAgICB2YXIg
Zm9ybUVsZW1lbnQgPSBjcmVhdGVUZXN0Rm9ybSgpLmRvbUVsZW1lbnQoKTsKKworICAgIGZvciAo
dmFyIGtleSBpbiB0ZXN0Rm9ybURhdGEpIHsKKyAgICAgICAgdmFyIGRhdGEgPSB0ZXN0Rm9ybURh
dGFba2V5XTsKKyAgICAgICAgZXF1YWwoZm9ybUVsZW1lbnRbZGF0YS5mb3JtTmFtZV0udmFsdWUs
IGRhdGEudmFsdWUsIGtleSk7CisgICAgfQorfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9PUldUUmVzdWx0c1BhcnNlci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9PUldUUmVzdWx0c1BhcnNlci5qcwkocmV2aXNpb24gOTMyNTQpCShm
cm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9PUldUUmVzdWx0c1BhcnNlci5qczo5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBPUldUUmVzdWx0c1BhcnNlcigp
IHsKK30KKworT1JXVFJlc3VsdHNQYXJzZXIucHJvdG90eXBlID0geworICAgIHBhcnNlOiBmdW5j
dGlvbihyZXN1bHRzSFRNTFN0cmluZykgeworICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czog
e30sIHRvb01hbnlGYWlsdXJlczogZmFsc2UgfTsKKworICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKKyAgICAgICAgcm9vdC5pbm5lckhUTUwgPSByZXN1
bHRzSFRNTFN0cmluZzsKKworICAgICAgICAvLyBOb3RlIHRoYXQgc29tZSBvbGQgcmVzdWx0cy5o
dG1sIGZpbGVzIHdvbid0IGNvbnRhaW4gdGhpcyBlbGVtZW50IGV2ZW4gaWYgd2UgaGFkIHRvIHN0
b3AKKyAgICAgICAgLy8gcnVubmluZyBlYXJseSBkdWUgdG8gdG9vIG1hbnkgZmFpbHVyZXMuIE91
ciBjYWxsZXIgd2lsbCBoYXZlIHRvIGZpZ3VyZSB0aGF0IG91dAorICAgICAgICAvLyB0aGVtc2Vs
dmVzLgorICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVzID0gcm9vdC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCdzdG9wcGVkLXJ1bm5pbmctZWFybHktbWVzc2FnZScpLmxlbmd0aCA+IDA7CisK
KyAgICAgICAgZnVuY3Rpb24gcGFyc2VSZXN1bHRUYWJsZShyZWdleCkgeworICAgICAgICAgICAg
dmFyIHBhcmFncmFwaCA9IEFycmF5LnByb3RvdHlwZS5maW5kRmlyc3QuY2FsbChyb290LnF1ZXJ5
U2VsZWN0b3JBbGwoJ3AnKSwgZnVuY3Rpb24ocGFyYWdyYXBoKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlZ2V4LnRlc3QocGFyYWdyYXBoLmlubmVyVGV4dCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGlmICghcGFyYWdyYXBoKQorICAgICAgICAgICAgICAgIHJldHVybiBbXTsK
KyAgICAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFncmFwaC5uZXh0RWxlbWVudFNpYmxpbmc7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJsZS5ub2RlTmFtZSA9PT0gJ1RBQkxFJyk7Cisg
ICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHRhYmxlLnJvd3MsIGZ1
bmN0aW9uKHJvdykgeworICAgICAgICAgICAgICAgIHZhciBsaW5rcyA9IHJvdy5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnYScpOworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6IGxpbmtzWzBdLmlubmVyVGV4dCwKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGlua3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gL15jcmFzaCBsb2cgXCgoLiopXCkk
Ly5leGVjKGxpbmtzW2ldLmlubmVyVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0
Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmNyYXNoaW5nU3ltYm9sID0gbWF0Y2hbMV07CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBwYXJzZVJlc3VsdFRhYmxl
KC9kaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHMvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RE
YXRhKSB7CisgICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7IGZhaWx1
cmVUeXBlOiAnZmFpbCcgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHBhcnNlUmVzdWx0VGFibGUo
L3RpbWVkIG91dC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKKyAgICAgICAgICAgIHJl
c3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsgZmFpbHVyZVR5cGU6ICd0aW1lb3V0JyB9Owor
ICAgICAgICB9KTsKKyAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvdG9vbCB0byBjcmFzaC8pLmZv
ckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKKyAgICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0
RGF0YS5uYW1lXSA9IHsKKyAgICAgICAgICAgICAgICBmYWlsdXJlVHlwZTogJ2NyYXNoJywKKyAg
ICAgICAgICAgICAgICBjcmFzaGluZ1N5bWJvbDogdGVzdERhdGEuY3Jhc2hpbmdTeW1ib2wsCisg
ICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvV2Vi
IHByb2Nlc3MgdG8gY3Jhc2gvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3REYXRhKSB7CisgICAgICAg
ICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7CisgICAgICAgICAgICAgICAgZmFp
bHVyZVR5cGU6ICd3ZWJwcm9jZXNzIGNyYXNoJywKKyAgICAgICAgICAgICAgICBjcmFzaGluZ1N5
bWJvbDogdGVzdERhdGEuY3Jhc2hpbmdTeW1ib2wsCisgICAgICAgICAgICB9OworICAgICAgICB9
KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCit9OwpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL1BlcnNpc3RlbnRDYWNoZS5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9QZXJzaXN0ZW50Q2FjaGUuanM6OTMyNTQpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9QZXJzaXN0ZW50Q2FjaGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK3ZhciBQZXJzaXN0ZW50Q2FjaGUgPSB7CisgICAgY29udGFp
bnM6IGZ1bmN0aW9uKGtleSkgeworICAgICAgICByZXR1cm4ga2V5IGluIGxvY2FsU3RvcmFnZTsK
KyAgICB9LAorCisgICAgZ2V0OiBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgdmFyIHN0cmluZyA9
IGxvY2FsU3RvcmFnZVtrZXldOworICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgIHJl
dHVybiBzdHJpbmc7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHVwZGF0ZSB0aGUgZGF0
ZSBzdG9yZWQgd2l0aCB0aGUgdmFsdWUgaGVyZSB0byBtYWtlIHRoaXMgbW9yZSBvZiBhbiBNUlUK
KyAgICAgICAgLy8gY2FjaGUgKGluc3RlYWQgb2YgbW9zdC1yZWNlbnRseS1zdG9yZWQpLCBidXQg
dGhhdCB3b3VsZCByZXN1bHQgaW4gZXh0cmEgZGlzayBhY2Nlc3MgdGhhdAorICAgICAgICAvLyBt
aWdodCBub3QgYmUgc28gZ3JlYXQuCisgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRoaXMuX3Bh
cnNlRGF0ZUFuZEpTT05Gcm9tU3RyaW5nKHN0cmluZykuanNvbik7CisgICAgfSwKKworICAgIHNl
dDogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbG9j
YWxTdG9yYWdlW2tleV0gPSB0aGlzLl9hZGREYXRlVG9KU09OU3RyaW5nKEpTT04uc3RyaW5naWZ5
KHZhbHVlKSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmIChlLmNvZGUg
IT09IDIyKSAvLyBRVU9UQV9FWENFRURFRF9FUlIKKyAgICAgICAgICAgICAgICB0aHJvdyBlOwor
CisgICAgICAgICAgICAvLyBXZSd2ZSBydW4gb3V0IG9mIHNwYWNlIGluIGxvY2FsU3RvcmFnZS4g
TGV0J3MganVzdCB0aHJvdyBhd2F5IGV2ZXJ5dGhpbmcgYW5kIHRyeQorICAgICAgICAgICAgLy8g
YWdhaW4uCisgICAgICAgICAgICB0aGlzLl9lbXB0eUNhY2hlKCk7CisgICAgICAgICAgICB0aGlz
LnNldChrZXksIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBwcnVuZTogZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBub3cgPSBEYXRlLm5vdygpOworICAgICAgICBmb3IgKHZhciBr
ZXkgaW4gbG9jYWxTdG9yYWdlKSB7CisgICAgICAgICAgICB2YXIgZGF0ZSA9IHRoaXMuX3BhcnNl
RGF0ZUFuZEpTT05Gcm9tU3RyaW5nKGxvY2FsU3RvcmFnZVtrZXldKS5kYXRlOworICAgICAgICAg
ICAgaWYgKG5vdyAtIGRhdGUgPD0gdGhpcy5fZGF0YUFnZUxpbWl0TVMpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBkZWxldGUgbG9jYWxTdG9yYWdlW2tleV07CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLnNldCh0aGlzLl9sYXN0UHJ1bmVEYXRlS2V5LCBub3cpOwor
ICAgIH0sCisKKyAgICBfYWRkRGF0ZVRvSlNPTlN0cmluZzogZnVuY3Rpb24oanNvblN0cmluZykg
eworICAgICAgICByZXR1cm4gRGF0ZS5ub3coKSArIHRoaXMuX2RhdGVBbmRKU09OU2VwYXJhdG9y
ICsganNvblN0cmluZzsKKyAgICB9LAorCisgICAgX2RhdGFBZ2VMaW1pdE1TOiAxMDAwICogNjAg
KiA2MCAqIDI0ICogMS4xLCAvLyBKdXN0IG92ZXIgb25lIGRheQorCisgICAgX2RhdGVBbmRKU09O
U2VwYXJhdG9yOiAnOiAnLAorCisgICAgX2VtcHR5Q2FjaGU6IGZ1bmN0aW9uKCkgeworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gbG9jYWxTdG9yYWdlKQorICAgICAgICAgICAgZGVsZXRlIGxvY2Fs
U3RvcmFnZVtrZXldOworICAgIH0sCisKKyAgICBfcGFyc2VEYXRlQW5kSlNPTkZyb21TdHJpbmc6
IGZ1bmN0aW9uKHN0cmluZykgeworICAgICAgICB2YXIgc2VwYXJhdG9ySW5kZXggPSBzdHJpbmcu
aW5kZXhPZih0aGlzLl9kYXRlQW5kSlNPTlNlcGFyYXRvcik7CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShwYXJzZUludChzdHJpbmcuc3Vic3RyaW5nKDAsIHNl
cGFyYXRvckluZGV4KSwgMTApKSwKKyAgICAgICAgICAgIGpzb246IHN0cmluZy5zdWJzdHJpbmco
c2VwYXJhdG9ySW5kZXggKyB0aGlzLl9kYXRlQW5kSlNPTlNlcGFyYXRvci5sZW5ndGgpLAorICAg
ICAgICB9OworICAgIH0sCit9OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJl
bGF0ZWRCdWdGb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1Rl
c3RSZWxhdGVkQnVnRm9ybS5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9UZXN0UmVsYXRlZEJ1Z0Zvcm0uanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9UZXN0UmVsYXRlZEJ1Z0Zvcm0uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK2Z1bmN0aW9uIFRlc3RSZWxhdGVkQnVnRm9ybSh0ZXN0ZXIpIHsKKyAgICBO
ZXdCdWdGb3JtLmNhbGwodGhpcyk7CisKKyAgICB0aGlzLl90ZXN0ZXIgPSB0ZXN0ZXI7CisKKyAg
ICB0aGlzLmNvbXBvbmVudCA9IFdlYktpdEJ1Z3ppbGxhLkNvbXBvbmVudC5Ub29sc1Rlc3RzOwor
ICAgIHRoaXMua2V5d29yZHMgPSBbCisgICAgICAgIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTGF5
b3V0VGVzdEZhaWx1cmUsCisgICAgICAgIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTWFraW5nQm90
c1JlZCwKKyAgICBdLmpvaW4oJywgJyk7CisgICAgdGhpcy5vcGVyYXRpbmdTeXN0ZW0gPSB0aGlz
Ll9jb21wdXRlT3BlcmF0aW5nU3lzdGVtKCk7CisgICAgdGhpcy5wbGF0Zm9ybSA9IHRoaXMuX2Nv
bXB1dGVQbGF0Zm9ybSgpOworICAgIHRoaXMucHJvZHVjdCA9IFdlYktpdEJ1Z3ppbGxhLlByb2R1
Y3QuV2ViS2l0OworICAgIHRoaXMudmVyc2lvbiA9IFdlYktpdEJ1Z3ppbGxhLlZlcnNpb24uTmln
aHRseTsKK30KKworVGVzdFJlbGF0ZWRCdWdGb3JtLnByb3RvdHlwZSA9IHsKKyAgICBkb21FbGVt
ZW50OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZvcm0gPSBOZXdCdWdGb3JtLnByb3RvdHlw
ZS5kb21FbGVtZW50LmNhbGwodGhpcyk7CisgICAgICAgIGZvcm0uY2xhc3NOYW1lID0gJ25ldy1i
dWctZm9ybSc7CisgICAgICAgIGZvcm0udGFyZ2V0ID0gJ19ibGFuayc7CisgICAgICAgIHJldHVy
biBmb3JtOworICAgIH0sCisKKyAgICBfY29tcHV0ZU9wZXJhdGluZ1N5c3RlbTogZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmICgvV2luZG93cyA3Ly50ZXN0KHRoaXMuX3Rlc3Rlci5uYW1lKSkKKyAg
ICAgICAgICAgIHJldHVybiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93czc7
CisgICAgICAgIGlmICgvV2luZG93cyBYUC8udGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCisgICAg
ICAgICAgICByZXR1cm4gV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUDsK
KyAgICAgICAgaWYgKC9Tbm93TGVvcGFyZC8udGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCisgICAg
ICAgICAgICByZXR1cm4gV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLlNub3dMZW9wYXJk
OworICAgICAgICBpZiAoL0xlb3BhcmQvLnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQorICAgICAg
ICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxhLk9wZXJhdGluZ1N5c3RlbS5MZW9wYXJkOworICAg
ICAgICByZXR1cm4gJyc7CisgICAgfSwKKworICAgIF9jb21wdXRlUGxhdGZvcm06IGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAoL1dpbmRvd3MvLnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQorICAg
ICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLlBDOworICAgICAgICBpZiAo
L0xlb3BhcmQvLnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIFdl
YktpdEJ1Z3ppbGxhLlBsYXRmb3JtLk1hY2ludG9zaDsKKyAgICAgICAgcmV0dXJuICcnOworICAg
IH0sCit9OworCitUZXN0UmVsYXRlZEJ1Z0Zvcm0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IE5ld0J1
Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0
ZWRCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZy
b20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL1Rlc3RSZWxhdGVkQnVnRm9ybV91bml0dGVzdHMuanM6OTMyNTQp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3Rz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisoZnVuY3Rp
b24oKSB7CisKK21vZHVsZSgnVGVzdFJlbGF0ZWRCdWdGb3JtJyk7CisKK2Z1bmN0aW9uIGNyZWF0
ZVRlc3RGb3JtKHRlc3Rlck5hbWUpIHsKKyAgICB2YXIgbW9ja0J1aWxkYm90ID0ge307CisgICAg
bW9ja0J1aWxkYm90LnBhcnNlQnVpbGROYW1lID0gZnVuY3Rpb24oYnVpbGROYW1lKSB7CisgICAg
ICAgIHZhciBtYXRjaCA9IC8oXGQrKS8uZXhlYyhidWlsZE5hbWUpOworICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgcmV2aXNpb246IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksCisgICAgICAg
ICAgICBidWlsZE51bWJlcjogcGFyc2VJbnQobWF0Y2hbMl0sIDEwKSwKKyAgICAgICAgfTsKKyAg
ICB9OworCisgICAgdmFyIG1vY2tCdWlsZGVyID0ge307CisgICAgbW9ja0J1aWxkZXIubmFtZSA9
IHRlc3Rlck5hbWU7CisgICAgbW9ja0J1aWxkZXIuYnVpbGRib3QgPSBtb2NrQnVpbGRib3Q7Cisg
ICAgbW9ja0J1aWxkZXIucmVzdWx0c1BhZ2VVUkwgPSBmdW5jdGlvbihidWlsZE5hbWUpIHsKKyAg
ICAgICAgcmV0dXJuICdbUkVTVUxUUyBQQUdFIFVSTCAnICsgdGhpcy5uYW1lICsgJywgJyArIGJ1
aWxkTmFtZSArICddJzsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3IFRlc3RSZWxhdGVkQnVnRm9y
bShtb2NrQnVpbGRlcik7Cit9CisKK3Rlc3QoJ2NvbXBvbmVudCBhbmQga2V5d29yZHMgYXJlIHNl
dCcsIDIsIGZ1bmN0aW9uKCkgeworICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0oJ1dpbmRv
d3MgNyBSZWxlYXNlIChUZXN0cyknKTsKKworICAgIGVxdWFsKGZvcm0uY29tcG9uZW50LCBXZWJL
aXRCdWd6aWxsYS5Db21wb25lbnQuVG9vbHNUZXN0cyk7CisgICAgZGVlcEVxdWFsKGZvcm0ua2V5
d29yZHMuc3BsaXQoJywgJyksIFtXZWJLaXRCdWd6aWxsYS5LZXl3b3JkLkxheW91dFRlc3RGYWls
dXJlLCBXZWJLaXRCdWd6aWxsYS5LZXl3b3JkLk1ha2luZ0JvdHNSZWRdKTsKK30pOworCitjb25z
dCB0ZXN0ZXJzID0geworICAgICdHVEsgTGludXggMzItYml0IFJlbGVhc2UnOiB7CisgICAgICAg
IG9wZXJhdGluZ1N5c3RlbTogJycsCisgICAgICAgIHBsYXRmb3JtOiAnJywKKyAgICB9LAorICAg
ICdMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKSc6IHsKKyAgICAgICAgb3BlcmF0aW5nU3lz
dGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0uTGVvcGFyZCwKKyAgICAgICAgcGxh
dGZvcm06IFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLk1hY2ludG9zaCwKKyAgICB9LAorICAgICdT
bm93TGVvcGFyZCBJbnRlbCBSZWxlYXNlIChUZXN0cyknOiB7CisgICAgICAgIG9wZXJhdGluZ1N5
c3RlbTogV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLlNub3dMZW9wYXJkLAorICAgICAg
ICBwbGF0Zm9ybTogV2ViS2l0QnVnemlsbGEuUGxhdGZvcm0uTWFjaW50b3NoLAorICAgIH0sCisg
ICAgJ1dpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknOiB7CisgICAgICAgIG9wZXJhdGluZ1N5c3Rl
bTogV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3M3LAorICAgICAgICBwbGF0
Zm9ybTogV2ViS2l0QnVnemlsbGEuUGxhdGZvcm0uUEMsCisgICAgfSwKKyAgICAnV2luZG93cyBY
UCBEZWJ1ZyAoVGVzdHMpJzogeworICAgICAgICBvcGVyYXRpbmdTeXN0ZW06IFdlYktpdEJ1Z3pp
bGxhLk9wZXJhdGluZ1N5c3RlbS5XaW5kb3dzWFAsCisgICAgICAgIHBsYXRmb3JtOiBXZWJLaXRC
dWd6aWxsYS5QbGF0Zm9ybS5QQywKKyAgICB9LAorfTsKKwordGVzdCgnb3BlcmF0aW5nIHN5c3Rl
bSBpcyBkZWR1Y2VkJywgNSwgZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgbmFtZSBpbiB0ZXN0
ZXJzKSB7CisgICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0obmFtZSk7CisgICAgICAg
IGVxdWFsKGZvcm0ub3BlcmF0aW5nU3lzdGVtLCB0ZXN0ZXJzW25hbWVdLm9wZXJhdGluZ1N5c3Rl
bSk7CisgICAgfQorfSk7CisKK3Rlc3QoJ3BsYXRmb3JtIGlzIGRlZHVjZWQnLCA1LCBmdW5jdGlv
bigpIHsKKyAgICBmb3IgKHZhciBuYW1lIGluIHRlc3RlcnMpIHsKKyAgICAgICAgdmFyIGZvcm0g
PSBjcmVhdGVUZXN0Rm9ybShuYW1lKTsKKyAgICAgICAgZXF1YWwoZm9ybS5wbGF0Zm9ybSwgdGVz
dGVyc1tuYW1lXS5wbGF0Zm9ybSk7CisgICAgfQorfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9UcmFjLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL1RyYWMuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVHJh
Yy5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1RyYWMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2YXIgdHJhYyA9IHRyYWMgfHwg
e307CisKKyhmdW5jdGlvbigpIHsKKworZnVuY3Rpb24gZmluZFVzaW5nUmVnRXhwKHN0cmluZywg
cmVnZXhwKQoreworICAgIHZhciBtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cmluZyk7CisgICAgaWYg
KG1hdGNoKQorICAgICAgICByZXR1cm4gbWF0Y2hbMV07CisgICAgcmV0dXJuIG51bGw7Cit9CisK
K2Z1bmN0aW9uIGZpbmRSZXZpZXdlcihtZXNzYWdlKQoreworICAgIHZhciByZWdleHAgPSAvUmV2
aWV3ZWQgYnkgKFteLl0rKS87CisgICAgcmV0dXJuIGZpbmRVc2luZ1JlZ0V4cChtZXNzYWdlLCBy
ZWdleHApOworfQorCitmdW5jdGlvbiBmaW5kQXV0aG9yKG1lc3NhZ2UpCit7CisgICAgdmFyIHJl
Z2V4cCA9IC9QYXRjaCBieSAoW148XSspIDwvOworICAgIHJldHVybiBmaW5kVXNpbmdSZWdFeHAo
bWVzc2FnZSwgcmVnZXhwKTsKK30KKworZnVuY3Rpb24gZmluZEJ1Z0lEKG1lc3NhZ2UpCit7Cisg
ICAgdmFyIHJlZ2V4cCA9IC9cL3Nob3dfYnVnLmNnaVw/aWQ9KFxkKykvOworICAgIHJldHVybiBw
YXJzZUludChmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwgcmVnZXhwKSwgMTApOworfQorCitmdW5j
dGlvbiBmaW5kUmV2aXNpb24odGl0bGUpCit7CisgICAgdmFyIHJlZ2V4cCA9IC9eUmV2aXNpb24g
KFxkKyk6LzsKKyAgICByZXR1cm4gcGFyc2VJbnQoZmluZFVzaW5nUmVnRXhwKHRpdGxlLCByZWdl
eHApLCAxMCk7Cit9CisKK2Z1bmN0aW9uIGZpbmRTdW1tYXJ5KG1lc3NhZ2UpCit7CisgICAgdmFy
IGxpbmVzID0gbWVzc2FnZS5zcGxpdCgnXG4nKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxp
bmVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBsaW5lID0gbGluZXNbaV0KKyAgICAgICAg
aWYgKGZpbmRCdWdJRChsaW5lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
ZmluZFJldmlld2VyKGxpbmUpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIE9s
ZC1zdHlsZSBjb21taXQgbWVzc2FnZS4KKyAgICAgICAgaWYgKC9eXGRcZFxkXGQtXGRcZC1cZFxk
Ly5leGVjKGxpbmUpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChsaW5lLmxl
bmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4gbGluZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGZpbmRSZXZlcnQobWVzc2FnZSkKK3sKKyAgICB2YXIgcmVnZXhwID0gL3JvbGxpbmcgb3V0IHIo
XGQrKVwuLzsKKyAgICB2YXIgcmV2aXNpb24gPSBmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwgcmVn
ZXhwKTsKKyAgICBpZiAoIXJldmlzaW9uKQorICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
IHJldHVybiBwYXJzZUludChyZXZpc2lvbiwgMTApOworfQorCisvLyBGSVhNRTogQ29uc2lkZXIg
ZXhwb3NpbmcgdGhpcyBtZXRob2QgZm9yIHVuaXQgdGVzdGluZy4KK2Z1bmN0aW9uIHBhcnNlQ29t
bWl0RGF0YShyZXNwb25zZVhNTCkKK3sKKyAgICB2YXIgY29tbWl0cyA9IEFycmF5LnByb3RvdHlw
ZS5tYXAuY2FsbChyZXNwb25zZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaXRlbScpLCBmdW5j
dGlvbihpdGVtKSB7CisgICAgICAgIHZhciB0aXRsZSA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3RpdGxlJylbMF0udGV4dENvbnRlbnQ7CisgICAgICAgIHZhciBhdXRob3IgPSBpdGVtLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdhdXRob3InKVswXS50ZXh0Q29udGVudDsKKyAgICAgICAgdmFy
IHRpbWUgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwdWJEYXRlJylbMF0udGV4dENvbnRl
bnQ7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgYSB2ZXJ5IGhpZ2gtZmlkZWxpdHkg
cmVwcm9kdWN0aW9uIG9mIHRoZSBjb21taXQgbWVzc2FnZSwKKyAgICAgICAgLy8gYnV0IGl0J3Mg
Z29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBjb250YWluZXIuaW5uZXJIVE1M
ID0gaXRlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGVzY3JpcHRpb24nKVswXS50ZXh0Q29udGVu
dDsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBjb250YWluZXIuaW5uZXJUZXh0OworCisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAncmV2aXNpb24nOiBmaW5kUmV2aXNpb24odGl0bGUpLAor
ICAgICAgICAgICAgJ3RpdGxlJzogdGl0bGUsCisgICAgICAgICAgICAndGltZSc6IHRpbWUsCisg
ICAgICAgICAgICAnc3VtbWFyeSc6IGZpbmRTdW1tYXJ5KG1lc3NhZ2UpLAorICAgICAgICAgICAg
J2F1dGhvcic6IGZpbmRBdXRob3IobWVzc2FnZSkgfHwgYXV0aG9yLAorICAgICAgICAgICAgJ3Jl
dmlld2VyJzogZmluZFJldmlld2VyKG1lc3NhZ2UpLAorICAgICAgICAgICAgJ2J1Z0lEJzogZmlu
ZEJ1Z0lEKG1lc3NhZ2UpLAorICAgICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAorICAgICAg
ICAgICAgJ3JldmVydGVkUmV2aXNpb24nOiBmaW5kUmV2ZXJ0KG1lc3NhZ2UpLAorICAgICAgICB9
OworICAgIH0pOworCisgICAgcmV0dXJuIGNvbW1pdHM7Cit9CisKK3ZhciBnX2NhY2hlID0gbmV3
IGJhc2UuQXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgeworICAgIHZh
ciBleHBsb2RlZEtleSA9IGtleS5zcGxpdCgnXG4nKTsKKworICAgIHZhciBwYXRoID0gZXhwbG9k
ZWRLZXlbMF07CisgICAgdmFyIHN0YXJ0UmV2aXNpb24gPSBleHBsb2RlZEtleVsxXTsKKyAgICB2
YXIgZW5kUmV2aXNpb24gPSBleHBsb2RlZEtleVsyXTsKKworICAgIHZhciB1cmwgPSB0cmFjLmxv
Z1VSTChwYXRoLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgdHJ1ZSwgdHJ1ZSk7CisKKyAg
ICBuZXQuZ2V0KHVybCwgZnVuY3Rpb24oY29tbWl0RGF0YSkgeworICAgICAgICBjYWxsYmFjayhw
YXJzZUNvbW1pdERhdGEoY29tbWl0RGF0YSkpOworICAgIH0pOworfSk7CisKK3RyYWMuY2hhbmdl
c2V0VVJMID0gZnVuY3Rpb24ocmV2aXNpb24pCit7CisgICAgcmV0dXJuIGNvbmZpZy5rVHJhY1VS
TCArICcvY2hhbmdlc2V0LycgKyByZXZpc2lvbjsKK307CisKK3RyYWMubG9nVVJMID0gZnVuY3Rp
b24ocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sIHNob3dGdWxsQ29tbWl0TG9ncywg
Zm9ybWF0QXNSU1MpCit7CisgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IHsKKyAgICAgICAgcmV2
OiBlbmRSZXZpc2lvbiwKKyAgICAgICAgc3RvcF9yZXY6IHN0YXJ0UmV2aXNpb24sCisgICAgICAg
IC8vIFRyYWMgcmVxdWlyZXMgbGltaXQgdG8gYmUgMSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBy
ZXZpc2lvbnMgd2UgYWN0dWFsbHkgd2FudCB0byBzaG93LgorICAgICAgICAvLyBTZWUgPGh0dHA6
Ly90cmFjLmVkZ2V3YWxsLm9yZy90aWNrZXQvMTAzMTc+LgorICAgICAgICBsaW1pdDogZW5kUmV2
aXNpb24gLSBzdGFydFJldmlzaW9uICsgMiwKKyAgICB9OworCisgICAgaWYgKHNob3dGdWxsQ29t
bWl0TG9ncykKKyAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLnZlcmJvc2UgPSAnb24nOworICAgIGlm
IChmb3JtYXRBc1JTUykKKyAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLmZvcm1hdCA9ICdyc3MnOwor
CisgICAgcmV0dXJuIGNvbmZpZy5rVHJhY1VSTCArICcvbG9nLycgKyBwYXRoICsgJz8nICsgJC5w
YXJhbShxdWVyeVBhcmFtZXRlcnMpOworfTsKKwordHJhYy5yZWNlbnRDb21taXREYXRhID0gZnVu
Y3Rpb24ocGF0aCwgbGltaXQsIGNhbGxiYWNrKQoreworICAgIHZhciB1cmwgPSBjb25maWcua1Ry
YWNVUkwgKyAnL2xvZy8nICsgcGF0aCArICc/JyArICQucGFyYW0oeworICAgICAgICAndmVyYm9z
ZSc6ICdvbicsCisgICAgICAgICdmb3JtYXQnOiAncnNzJywKKyAgICAgICAgJ2xpbWl0JzogbGlt
aXQsCisgICAgfSk7CisKKyAgICBuZXQuZ2V0KHVybCwgZnVuY3Rpb24oY29tbWl0RGF0YSkgewor
ICAgICAgICBjYWxsYmFjayhwYXJzZUNvbW1pdERhdGEoY29tbWl0RGF0YSkpOworICAgIH0pOwor
fTsKKwordHJhYy5jb21taXREYXRhRm9yUmV2aXNpb25SYW5nZSA9IGZ1bmN0aW9uKHBhdGgsIHN0
YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBjYWxsYmFjaykKK3sKKyAgICB2YXIga2V5ID0gW3Bh
dGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uXS5qb2luKCdcbicpOworICAgIGdfY2FjaGUu
Z2V0KGtleSwgY2FsbGJhY2spOworfTsKKworfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL1V0aWxpdGllcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9VdGlsaXRpZXMuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRp
bGl0aWVzLmpzOjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVXRpbGl0aWVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24g
Y3JlYXRlRGVmaW5pdGlvbkxpc3QoaXRlbXMpIHsKKyAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RsJyk7CisgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbihwYWlyKSB7Cisg
ICAgICAgIHZhciBkdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2R0Jyk7CisgICAgICAgIGR0
LmFwcGVuZENoaWxkKHBhaXJbMF0pOworICAgICAgICB2YXIgZGQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkZCcpOworICAgICAgICBkZC5hcHBlbmRDaGlsZChwYWlyWzFdKTsKKyAgICAgICAg
bGlzdC5hcHBlbmRDaGlsZChkdCk7CisgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoZGQpOworICAg
IH0pOworICAgIHJldHVybiBsaXN0OworfQorCitmdW5jdGlvbiBmZXRjaFJlc291cmNlKHVybCwg
bWV0aG9kLCBxdWVyeVBhcmFtZXRlcnMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7CisgICAg
dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSAhPT0gNCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gQWxsb3cgYSBzdGF0dXMgb2YgMCBmb3IgZWFz
aWVyIHRlc3Rpbmcgd2l0aCBsb2NhbCBmaWxlcy4KKyAgICAgICAgaWYgKCF0aGlzLnN0YXR1cyB8
fCB0aGlzLnN0YXR1cyA9PT0gMjAwKQorICAgICAgICAgICAgY2FsbGJhY2sodGhpcyk7CisgICAg
ICAgIGVsc2UgaWYgKGVycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBlcnJvckNhbGxiYWNrKHRo
aXMpOworICAgIH07CisKKyAgICBpZiAobWV0aG9kID09PSAnR0VUJyAmJiBxdWVyeVBhcmFtZXRl
cnMpCisgICAgICAgIHVybCA9IGFkZFF1ZXJ5UGFyYW1ldGVyc1RvVVJMKHVybCwgcXVlcnlQYXJh
bWV0ZXJzKTsKKworICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsKTsKKworICAgIGlmIChtZXRob2Qg
PT09ICdHRVQnKSB7CisgICAgICAgIHhoci5zZW5kKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2YXIgZGF0YSA9IHVybEVuY29kZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRl
cnMpOworICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRp
b24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CisgICAgeGhyLnNlbmQoZGF0YSk7Cit9CisKK2Z1
bmN0aW9uIGdldFJlc291cmNlKHVybCwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKKyAgICBm
ZXRjaFJlc291cmNlKHVybCwgJ0dFVCcsIG51bGwsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
K30KKworZnVuY3Rpb24gdXJsRW5jb2RlUXVlcnlQYXJhbWV0ZXJzKHF1ZXJ5UGFyYW1ldGVycykg
eworICAgIHZhciBlbmNvZGVkUGFyYW1ldGVycyA9IE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1ldGVy
cykubWFwKGZ1bmN0aW9uKGtleSkgeworICAgICAgICByZXR1cm4ga2V5ICsgJz0nICsgZW5jb2Rl
VVJJQ29tcG9uZW50KHF1ZXJ5UGFyYW1ldGVyc1trZXldKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
ZW5jb2RlZFBhcmFtZXRlcnMuam9pbignJicpOworfQorCitmdW5jdGlvbiBhZGRRdWVyeVBhcmFt
ZXRlcnNUb1VSTCh1cmwsIHF1ZXJ5UGFyYW1ldGVycykgeworICAgIGlmICh1cmwuaW5kZXhPZign
PycpIDwgMCkKKyAgICAgICAgdXJsICs9ICc/JzsKKyAgICBlbHNlCisgICAgICAgIHVybCArPSAn
Jic7CisKKyAgICByZXR1cm4gdXJsICsgdXJsRW5jb2RlUXVlcnlQYXJhbWV0ZXJzKHF1ZXJ5UGFy
YW1ldGVycyk7Cit9CisKK2Z1bmN0aW9uIGxvbmdlc3RDb21tb25QYXRoUHJlZml4KHBhdGhzKSB7
CisgICAgY29uc3Qgc2VwYXJhdG9yID0gJy8nOworCisgICAgdmFyIHNwbGl0UGF0aHMgPSBwYXRo
cy5tYXAoZnVuY3Rpb24ocGF0aCkgeyByZXR1cm4gcGF0aC5zcGxpdChzZXBhcmF0b3IpIH0pOwor
ICAgIHZhciBmaXJzdFNwbGl0UGF0aCA9IHNwbGl0UGF0aHMuc2hpZnQoKTsKKworICAgIHZhciBy
ZXN1bHQgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpcnN0U3BsaXRQYXRoLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmICghc3BsaXRQYXRocy5ldmVyeShmdW5jdGlvbihzcGxpdFBh
dGgpIHsgcmV0dXJuIHNwbGl0UGF0aFtpXSA9PT0gZmlyc3RTcGxpdFBhdGhbaV0gfSkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0LnB1c2goZmlyc3RTcGxpdFBhdGhbaV0pOwor
ICAgIH0KKworICAgIGlmICghcmVzdWx0Lmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgcmV0dXJuIHJlc3VsdC5qb2luKHNlcGFyYXRvcik7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZVBh
dGhFeHRlbnNpb24oc3RyaW5nKSB7CisgICAgdmFyIGRvdEluZGV4ID0gc3RyaW5nLmxhc3RJbmRl
eE9mKCcuJyk7CisgICAgaWYgKGRvdEluZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsK
KyAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZygwLCBkb3RJbmRleCk7Cit9CisKK2Z1bmN0aW9u
IHNvcnRlZChhcnJheSwgc29ydEZ1bmN0aW9uKSB7CisgICAgdmFyIG5ld0FycmF5ID0gYXJyYXku
c2xpY2UoKTsKKyAgICBuZXdBcnJheS5zb3J0KHNvcnRGdW5jdGlvbik7CisgICAgcmV0dXJuIG5l
d0FycmF5OworfQorCitBcnJheS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbih2YWx1ZSkg
eworICAgIHJldHVybiB0aGlzLmluZGV4T2YodmFsdWUpID49IDA7Cit9CisKK0FycmF5LnByb3Rv
dHlwZS5maW5kRmlyc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHByZWRpY2F0ZSh0aGlzW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzW2ldOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsK
K30KKworQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7Cisg
ICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAg
aWYgKHByZWRpY2F0ZSh0aGlzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzW2ldOworICAg
IH0KKyAgICByZXR1cm4gbnVsbDsKK30KKworQXJyYXkucHJvdG90eXBlLmxhc3QgPSBmdW5jdGlv
bigpIHsKKyAgICBpZiAoIXRoaXMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwor
ICAgIHJldHVybiB0aGlzW3RoaXMubGVuZ3RoIC0gMV07Cit9CisKK0VsZW1lbnQucHJvdG90eXBl
Lmhhc1N0eWxlQ2xhc3MgPSBmdW5jdGlvbihrbGFzcykgeworICAgIHZhciByZWdleCA9IG5ldyBS
ZWdFeHAoJ1xcYicgKyBrbGFzcyArICdcXGInKTsKKyAgICByZXR1cm4gcmVnZXgudGVzdCh0aGlz
LmNsYXNzTmFtZSk7Cit9CisKK0VsZW1lbnQucHJvdG90eXBlLmFkZFN0eWxlQ2xhc3MgPSBmdW5j
dGlvbihrbGFzcykgeworICAgIGlmICh0aGlzLmhhc1N0eWxlQ2xhc3Moa2xhc3MpKQorICAgICAg
ICByZXR1cm47CisgICAgdGhpcy5jbGFzc05hbWUgKz0gJyAnICsga2xhc3M7Cit9CisKK0VsZW1l
bnQucHJvdG90eXBlLnJlbW92ZVN0eWxlQ2xhc3MgPSBmdW5jdGlvbihrbGFzcykgeworICAgIHZh
ciByZWdleCA9IG5ldyBSZWdFeHAoJ1xcYicgKyBrbGFzcyArICdcXGInLCAnZycpOworICAgIHRo
aXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUucmVwbGFjZShyZWdleCwgJycpOworfQorCitF
bGVtZW50LnByb3RvdHlwZS50b2dnbGVTdHlsZUNsYXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKKyAg
ICBpZiAodGhpcy5oYXNTdHlsZUNsYXNzKGtsYXNzKSkKKyAgICAgICAgdGhpcy5yZW1vdmVTdHls
ZUNsYXNzKGtsYXNzKTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMuYWRkU3R5bGVDbGFzcyhrbGFz
cyk7Cit9CisKK05vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkcmVuID0gZnVuY3Rpb24oY2hpbGRy
ZW4pIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAg
ICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkcmVuW2ldKTsKK30KKworTm9kZS5wcm90b3R5cGUu
cmVtb3ZlQWxsQ2hpbGRyZW4gPSBmdW5jdGlvbigpIHsKKyAgICB3aGlsZSAodGhpcy5maXJzdENo
aWxkKQorICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKHRoaXMuZmlyc3RDaGlsZCk7Cit9CisKK1N0
cmluZy5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbihzdWJzdHJpbmcpIHsKKyAgICByZXR1
cm4gdGhpcy5pbmRleE9mKHN1YnN0cmluZykgPj0gMDsKK30KSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL1V0aWxpdGllc191bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvVXRpbGl0aWVzX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCShm
cm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9VdGlsaXRpZXNfdW5pdHRlc3RzLmpzOjkzMjU0KQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvVXRpbGl0aWVzX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyhmdW5jdGlvbigpIHsKKworbW9kdWxl
KCdVdGlsaXRpZXMnKTsKKwordGVzdCgnaGFzU3R5bGVDbGFzcycsIDExLCBmdW5jdGlvbigpIHsK
KyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAg
b2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vJykpOworICAgIG9rKCFlbGVtZW50Lmhhc1N0
eWxlQ2xhc3MoJ2JhcicpKTsKKworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7CisgICAg
b2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdmb28nKSkKKyAgICBvayghZWxlbWVudC5oYXNTdHls
ZUNsYXNzKCdiYXInKSk7CisKKyAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb28gZm9vJzsKKyAg
ICBvayhlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2ZvbycpKQorICAgIG9rKCFlbGVtZW50Lmhhc1N0
eWxlQ2xhc3MoJ2JhcicpKTsKKworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBiYXInOwor
ICAgIG9rKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vJykpCisgICAgb2soZWxlbWVudC5oYXNT
dHlsZUNsYXNzKCdiYXInKSk7CisgICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnYmF6Jykp
OworCisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vZCc7CisgICAgb2soIWVsZW1lbnQuaGFz
U3R5bGVDbGFzcygnZm9vJykpOworICAgIG9rKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vZCcp
KTsKK30pOworCit0ZXN0KCdhZGRTdHlsZUNsYXNzJywgNCwgZnVuY3Rpb24oKSB7CisgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIGVsZW1lbnQu
YWRkU3R5bGVDbGFzcygnZm9vJyk7CisgICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgZm9v
Jyk7CisKKyAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoJ2ZvbycpOworICAgIGVxdWFsKGVsZW1l
bnQuY2xhc3NOYW1lLCAnIGZvbycpOworCisgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCdiYXIn
KTsKKyAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyBmb28gYmFyJyk7CisKKyAgICBlbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoJ2ZvbycpOworICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAn
IGZvbyBiYXInKTsKK30pOworCit0ZXN0KCdyZW1vdmVTdHlsZUNsYXNzJywgOCwgZnVuY3Rpb24o
KSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKwor
ICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnZm9vJyk7CisgICAgZXF1YWwoZWxlbWVudC5j
bGFzc05hbWUsICcnKTsKKworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7CisgICAgZWxl
bWVudC5yZW1vdmVTdHlsZUNsYXNzKCdmb28nKTsKKyAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFt
ZSwgJycpOworCisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnIGZvbyc7CisgICAgZWxlbWVudC5y
ZW1vdmVTdHlsZUNsYXNzKCdmb28nKTsKKyAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyAn
KTsKKworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBmb28nOworICAgIGVsZW1lbnQucmVt
b3ZlU3R5bGVDbGFzcygnZm9vJyk7CisgICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgJyk7
CisKKyAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb28gYmFyJzsKKyAgICBlbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoJ2ZvbycpOworICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGJhcicp
OworCisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vIGJhciBmb28gYmFyJzsKKyAgICBlbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2JhcicpOworICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1l
LCAnZm9vICBmb28gJyk7CisKKyAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKKyAgICBl
bGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2ZvbycpOworICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NO
YW1lLCAnZm9vZCcpOworCisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vJzsKKyAgICBlbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2Zvb2QnKTsKKyAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFt
ZSwgJ2ZvbycpOworfSk7CisKK3Rlc3QoJ3RvZ2dsZVN0eWxlQ2xhc3MnLCA1LCBmdW5jdGlvbigp
IHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisg
ICAgZWxlbWVudC50b2dnbGVTdHlsZUNsYXNzKCdmb28nKTsKKyAgICBlcXVhbChlbGVtZW50LmNs
YXNzTmFtZSwgJyBmb28nKTsKKworICAgIGVsZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7
CisgICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgJyk7CisKKyAgICBlbGVtZW50LmNsYXNz
TmFtZSA9ICdiYXInOworICAgIGVsZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7CisgICAg
ZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICdiYXIgZm9vJyk7CisKKyAgICBlbGVtZW50LmNsYXNz
TmFtZSA9ICdmb29kJzsKKyAgICBlbGVtZW50LnRvZ2dsZVN0eWxlQ2xhc3MoJ2ZvbycpOworICAg
IGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vZCBmb28nKTsKKworICAgIGVsZW1lbnQuY2xh
c3NOYW1lID0gJ2Zvbyc7CisgICAgZWxlbWVudC50b2dnbGVTdHlsZUNsYXNzKCdmb29kJyk7Cisg
ICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICdmb28gZm9vZCcpOworfSk7CisKK30pKCk7Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwkocmV2aXNpb24g
OTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9WaWV3Q29udHJvbGxlci5qczo5MzI1NCkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1ZpZXdDb250cm9sbGVyLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gVmlld0NvbnRyb2xsZXIo
YnVpbGRib3QpIHsKKyAgICB0aGlzLl9idWlsZGJvdCA9IGJ1aWxkYm90OworICAgIHRoaXMuX25h
dmlnYXRpb25JRCA9IDA7CisKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeyBzZWxmLmxvYWRlZCgpIH0sIGZhbHNlKTsKKyAgICBh
ZGRFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgZnVuY3Rpb24oKSB7IHNlbGYucGFyc2VIYXNo
KGxvY2F0aW9uLmhhc2gpIH0sIGZhbHNlKTsKK30KKworVmlld0NvbnRyb2xsZXIucHJvdG90eXBl
ID0geworICAgIGxvYWRlZDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX2hlYWRlciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gxJyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQodGhpcy5faGVhZGVyKTsKKyAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQodGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZCh0aGlzLl9kb21Gb3JBdXhpbGlhcnlVSUVsZW1lbnRzKCkpOworCisgICAg
ICAgIHRoaXMucGFyc2VIYXNoKGxvY2F0aW9uLmhhc2gpOworICAgIH0sCisKKyAgICBwYXJzZUhh
c2g6IGZ1bmN0aW9uKGhhc2gpIHsKKyAgICAgICAgKyt0aGlzLl9uYXZpZ2F0aW9uSUQ7CisKKyAg
ICAgICAgdmFyIG1hdGNoID0gLyNcLyguKikvLmV4ZWMoaGFzaCk7CisgICAgICAgIGlmIChtYXRj
aCkKKyAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlCdWlsZGVyKHRoaXMuX2J1aWxkYm90LmJ1aWxk
ZXJOYW1lZChkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0pKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuX2Rpc3BsYXlUZXN0ZXJzKCk7CisgICAgfSwKKworICAgIF9kaXNwbGF5
QnVpbGRlcjogZnVuY3Rpb24oYnVpbGRlcikgeworICAgICAgICB0aGlzLl9zZXRUaXRsZShidWls
ZGVyLm5hbWUpOworICAgICAgICB0aGlzLl9tYWluQ29udGVudEVsZW1lbnQucmVtb3ZlQWxsQ2hp
bGRyZW4oKTsKKworICAgICAgICB2YXIgbmF2aWdhdGlvbklEID0gdGhpcy5fbmF2aWdhdGlvbklE
OworCisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgKG5ldyBMYXlvdXRUZXN0SGlz
dG9yeUFuYWx5emVyKGJ1aWxkZXIpKS5zdGFydChmdW5jdGlvbihkYXRhLCBzdGlsbEZldGNoaW5n
RGF0YSkgeworICAgICAgICAgICAgaWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlv
bklEKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgaGFzIG5hdmlnYXRlZCBzb21ld2hl
cmUgZWxzZS4gU3RvcCBsb2FkaW5nIGRhdGEgYWJvdXQgdGhpcyB0ZXN0ZXIuCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbGlz
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyk7CisgICAgICAgICAgICBsaXN0LmlkID0g
J2ZhaWx1cmUtaGlzdG9yeSc7CisKKyAgICAgICAgICAgIHZhciBidWlsZE5hbWVzID0gT2JqZWN0
LmtleXMoZGF0YS5oaXN0b3J5KQorICAgICAgICAgICAgYnVpbGROYW1lcy5mb3JFYWNoKGZ1bmN0
aW9uKGJ1aWxkTmFtZSwgYnVpbGRJbmRleCwgYnVpbGROYW1lQXJyYXkpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZmFpbGluZ1Rlc3ROYW1lcyA9IE9iamVjdC5rZXlzKGRhdGEuaGlzdG9yeVtidWls
ZE5hbWVdLnRlc3RzKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZhaWxpbmdUZXN0TmFtZXMubGVu
Z3RoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICB2YXIg
aXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICAgICAgICAgICAgICAgbGlz
dC5hcHBlbmRDaGlsZChpdGVtKTsKKworICAgICAgICAgICAgICAgIHZhciB0ZXN0TGlzdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyk7CisgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRD
aGlsZCh0ZXN0TGlzdCk7CisKKyAgICAgICAgICAgICAgICB0ZXN0TGlzdC5jbGFzc05hbWUgPSAn
dGVzdC1saXN0JzsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBkYXRhLmhp
c3RvcnlbYnVpbGROYW1lXS50ZXN0cykgeworICAgICAgICAgICAgICAgICAgICB2YXIgdGVzdEl0
ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgICAgICAgICAgICAgICAgICB0
ZXN0SXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JGYWlsZWRUZXN0KGJ1aWxkZXIsIGJ1aWxk
TmFtZSwgdGVzdE5hbWUsIGRhdGEuaGlzdG9yeVtidWlsZE5hbWVdLnRlc3RzW3Rlc3ROYW1lXSkp
OworICAgICAgICAgICAgICAgICAgICB0ZXN0TGlzdC5hcHBlbmRDaGlsZCh0ZXN0SXRlbSk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaGlzdG9yeVtidWls
ZE5hbWVdLnRvb01hbnlGYWlsdXJlcykgeworICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICAgICAgICAgICAgICAgICAgcC5jbGFzc05h
bWUgPSAnaW5mbyc7CisgICAgICAgICAgICAgICAgICAgIHAuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ3J1bi13ZWJraXQtdGVzdHMgZXhpdGVkIGVhcmx5IGR1ZSB0byB0b28g
bWFueSBmYWlsdXJlcy9jcmFzaGVzL3RpbWVvdXRzJykpOworICAgICAgICAgICAgICAgICAgICBp
dGVtLmFwcGVuZENoaWxkKHApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHZhciBwYXNzaW5nQnVpbGROYW1lOworICAgICAgICAgICAgICAgIGlmIChidWlsZEluZGV4ICsg
MSA8IGJ1aWxkTmFtZUFycmF5Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgcGFzc2luZ0J1
aWxkTmFtZSA9IGJ1aWxkTmFtZUFycmF5W2J1aWxkSW5kZXggKyAxXTsKKworICAgICAgICAgICAg
ICAgIGl0ZW0uYXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yUmVncmVzc2lvblJhbmdlKGJ1aWxkZXIs
IGJ1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3ROYW1lcykpOworCisgICAg
ICAgICAgICAgICAgaWYgKHBhc3NpbmdCdWlsZE5hbWUgfHwgIXN0aWxsRmV0Y2hpbmdEYXRhKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBidWdGb3JtID0gbmV3IEZhaWxpbmdUZXN0c0J1Z0Zv
cm0oYnVpbGRlciwgYnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVz
KTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JOZXdB
bmRFeGlzdGluZ0J1Z3MoYnVpbGRlciwgZmFpbGluZ1Rlc3ROYW1lcywgYnVnRm9ybSkpCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNlbGYuX21haW5D
b250ZW50RWxlbWVudC5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgICAgICAgICAgc2VsZi5fbWFp
bkNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGxpc3QpOworICAgICAgICAgICAgc2VsZi5fbWFp
bkNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHNlbGYuX2RvbUZvclBvc3NpYmx5Rmxha3lUZXN0
cyhidWlsZGVyLCBkYXRhLnBvc3NpYmx5Rmxha3ksIGJ1aWxkTmFtZXMpKTsKKworICAgICAgICAg
ICAgaWYgKCFzdGlsbEZldGNoaW5nRGF0YSkKKyAgICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2Fj
aGUucHJ1bmUoKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0pOworICAg
IH0sCisKKyAgICBfZGlzcGxheVRlc3RlcnM6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9z
ZXRUaXRsZSgnVGVzdGVycycpOworICAgICAgICB0aGlzLl9tYWluQ29udGVudEVsZW1lbnQucmVt
b3ZlQWxsQ2hpbGRyZW4oKTsKKworICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3VsJyk7CisgICAgICAgIHRoaXMuX21haW5Db250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZChsaXN0KTsKKworICAgICAgICB2YXIgbGF0ZXN0QnVpbGRJbmZvcyA9IFtdOworICAgICAgICB2
YXIgbmF2aWdhdGlvbklEID0gdGhpcy5fbmF2aWdhdGlvbklEOworCisgICAgICAgIGZ1bmN0aW9u
IHVwZGF0ZUxpc3QoKSB7CisgICAgICAgICAgICBsYXRlc3RCdWlsZEluZm9zLnNvcnQoZnVuY3Rp
b24oYSwgYikgeyByZXR1cm4gYS50ZXN0ZXIubmFtZS5sb2NhbGVDb21wYXJlKGIudGVzdGVyLm5h
bWUpIH0pOworICAgICAgICAgICAgbGlzdC5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgICAgICAg
ICAgbGF0ZXN0QnVpbGRJbmZvcy5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkSW5mbykgeworICAgICAg
ICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworICAgICAg
ICAgICAgICAgIGxpbmsuaHJlZiA9ICcjLycgKyBidWlsZEluZm8udGVzdGVyLm5hbWU7CisgICAg
ICAgICAgICAgICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShidWls
ZEluZm8udGVzdGVyLm5hbWUpKTsKKworICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxk
KGxpbmspOworICAgICAgICAgICAgICAgIGlmIChidWlsZEluZm8udG9vTWFueUZhaWx1cmVzKQor
ICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCcgKHRvbyBtYW55IGZhaWx1cmVzL2NyYXNoZXMvdGltZW91dHMpJykpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgnICgnICsgYnVpbGRJbmZvLmZhaWx1cmVDb3VudCArICcgZmFpbGlu
ZyB0ZXN0JyArIChidWlsZEluZm8uZmFpbHVyZUNvdW50ID4gMSA/ICdzJyA6ICcnKSArICcpJykp
OworICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5f
YnVpbGRib3QuZ2V0VGVzdGVycyhmdW5jdGlvbih0ZXN0ZXJzKSB7CisgICAgICAgICAgICBpZiAo
c2VsZi5fbmF2aWdhdGlvbklEICE9PSBuYXZpZ2F0aW9uSUQpIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGUgdXNlciBoYXMgbmF2aWdhdGVkIHNvbWV3aGVyZSBlbHNlLgorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRlc3RlcnMuZm9yRWFjaChmdW5j
dGlvbih0ZXN0ZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0ZXIuZ2V0TW9zdFJlY2VudENvbXBs
ZXRlZEJ1aWxkTnVtYmVyKGZ1bmN0aW9uKGJ1aWxkTnVtYmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkTnVtYmVy
IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdGVyLmdldE51bWJlck9mRmFpbGluZ1Rlc3RzKGJ1aWxkTnVtYmVyLCBmdW5jdGlvbihm
YWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlvbklEKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsdXJl
Q291bnQgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgICAgICBsYXRlc3RCdWlsZEluZm9zLnB1c2goeyB0ZXN0ZXI6IHRlc3Rlciwg
ZmFpbHVyZUNvdW50OiBmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlczogdG9vTWFueUZhaWx1
cmVzIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTGlzdCgpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9LAorCisgICAgX2RvbUZvclJlZ3Jlc3Npb25SYW5nZTogZnVuY3Rpb24o
YnVpbGRlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3RO
YW1lcykgeworICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOworCisgICAgICAgIHZhciBkbEl0ZW1zID0gWworICAgICAgICAgICAgW2RvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdGYWlsZWQnKSwgdGhpcy5fZG9tRm9yQnVpbGROYW1lKGJ1aWxkZXIs
IGZhaWxpbmdCdWlsZE5hbWUpXSwKKyAgICAgICAgXTsKKyAgICAgICAgaWYgKHBhc3NpbmdCdWls
ZE5hbWUpCisgICAgICAgICAgICBkbEl0ZW1zLnB1c2goW2RvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCdQYXNzZWQnKSwgdGhpcy5fZG9tRm9yQnVpbGROYW1lKGJ1aWxkZXIsIHBhc3NpbmdCdWlsZE5h
bWUpXSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChjcmVhdGVEZWZpbml0aW9uTGlzdChk
bEl0ZW1zKSk7CisKKyAgICAgICAgaWYgKCFwYXNzaW5nQnVpbGROYW1lKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKworICAgICAgICB2YXIgZmlyc3RTdXNwZWN0UmV2aXNpb24gPSB0aGlz
Ll9idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShwYXNzaW5nQnVpbGROYW1lKS5yZXZpc2lvbiArIDE7
CisgICAgICAgIHZhciBsYXN0U3VzcGVjdFJldmlzaW9uID0gdGhpcy5fYnVpbGRib3QucGFyc2VC
dWlsZE5hbWUoZmFpbGluZ0J1aWxkTmFtZSkucmV2aXNpb247CisKKyAgICAgICAgaWYgKGZpcnN0
U3VzcGVjdFJldmlzaW9uID09PSBsYXN0U3VzcGVjdFJldmlzaW9uKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKworICAgICAgICB2YXIgc3VzcGVjdHNDb250YWluZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHN1c3BlY3Rz
Q29udGFpbmVyKTsKKworICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2EnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGxpbmspOworCisgICAgICAgIGxpbmsu
aHJlZiA9IHRyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3Vz
cGVjdFJldmlzaW9uLCB0cnVlKTsKKyAgICAgICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnVmlldyByZWdyZXNzaW9uIHJhbmdlIGluIFRyYWMnKSk7CisKKyAgICAg
ICAgc3VzcGVjdHNDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J1NlYXJjaGluZyBmb3Igc3VzcGVjdCByZXZpc2lvbnNcdTIwMjYnKSk7CisKKyAgICAgICAgLy8g
RklYTUU6IE1heWJlIHNvbWUgb2YgdGhpcyBjb2RlIHNob3VsZCBnbyBpbiBMYXlvdXRUZXN0SGlz
dG9yeUFuYWx5emVyLCBvciBzb21lIG90aGVyIGNsYXNzPworICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgIHRyYWMuY29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UoJ3RydW5rJywgZmly
c3RTdXNwZWN0UmV2aXNpb24sIGxhc3RTdXNwZWN0UmV2aXNpb24sIGZ1bmN0aW9uKGNvbW1pdHMp
IHsKKyAgICAgICAgICAgIHZhciBmYWlsaW5nVGVzdE5hbWVzV2l0aG91dEV4dGVuc2lvbnMgPSBm
YWlsaW5nVGVzdE5hbWVzLm1hcChyZW1vdmVQYXRoRXh0ZW5zaW9uKTsKKyAgICAgICAgICAgIHZh
ciBzdXNwZWN0Q29tbWl0cyA9IGNvbW1pdHMuZmlsdGVyKGZ1bmN0aW9uKGNvbW1pdCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWlsaW5nVGVzdE5hbWVzV2l0aG91dEV4dGVuc2lvbnMuc29t
ZShmdW5jdGlvbih0ZXN0TmFtZSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0
Lm1lc3NhZ2UuY29udGFpbnModGVzdE5hbWUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIHN1c3BlY3RzQ29udGFpbmVyLnJlbW92ZUFsbENoaWxk
cmVuKCk7CisKKyAgICAgICAgICAgIGlmICghc3VzcGVjdENvbW1pdHMubGVuZ3RoKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIHRpdGxlID0gJ1N1c3BlY3QgcmV2
aXNpb24nICsgKHN1c3BlY3RDb21taXRzLmxlbmd0aCA+IDEgPyAncycgOiAnJykgKyAnOic7Cisg
ICAgICAgICAgICBzdXNwZWN0c0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0aXRsZSkpOworCisgICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3VsJyk7CisgICAgICAgICAgICBzdXNwZWN0c0NvbnRhaW5lci5hcHBlbmRDaGls
ZChsaXN0KTsKKyAgICAgICAgICAgIGxpc3QuY2xhc3NOYW1lID0gJ3N1c3BlY3QtcmV2aXNpb25z
LWxpc3QnOworCisgICAgICAgICAgICBmdW5jdGlvbiBjb21wYXJlQ29tbWl0cyhhLCBiKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGIucmV2aXNpb24gLSBhLnJldmlzaW9uOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkcmVuKHNvcnRlZChzdXNwZWN0Q29t
bWl0cywgY29tcGFyZUNvbW1pdHMpLm1hcChmdW5jdGlvbihjb21taXQpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICAgICAgICAg
ICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisgICAgICAgICAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChsaW5rKTsKKworICAgICAgICAgICAgICAgIGxpbmsuaHJl
ZiA9IHRyYWMuY2hhbmdlc2V0VVJMKGNvbW1pdC5yZXZpc2lvbik7CisgICAgICAgICAgICAgICAg
bGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb21taXQudGl0bGUpKQor
CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgICAgICB9KSk7CisgICAgICAg
IH0pOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIF9kb21Gb3JBdXhp
bGlhcnlVSUVsZW1lbnRzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGFzaWRlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKKyAgICAgICAgYXNpZGUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1NvbWV0aGluZyBub3Qgd29ya2luZz8gSGF2ZSBhbiBpZGVh
IHRvIGltcHJvdmUgdGhpcyBwYWdlPyAnKSk7CisgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYScpOworICAgICAgICBhc2lkZS5hcHBlbmRDaGlsZChsaW5rKTsKKwor
ICAgICAgICBsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdGaWxlIGEg
YnVnIScpKTsKKyAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IHsKKyAgICAgICAgICAgIHBy
b2R1Y3Q6ICdXZWJLaXQnLAorICAgICAgICAgICAgY29tcG9uZW50OiAnVG9vbHMgLyBUZXN0cycs
CisgICAgICAgICAgICB2ZXJzaW9uOiAnNTI4KyAoTmlnaHRseSBidWlsZCknLAorICAgICAgICAg
ICAgYnVnX2ZpbGVfbG9jOiBsb2NhdGlvbi5ocmVmLAorICAgICAgICAgICAgY2M6ICdhcm9iZW5A
YXBwbGUuY29tJywKKyAgICAgICAgICAgIHNob3J0X2Rlc2M6ICdUZXN0RmFpbHVyZXMgcGFnZSBu
ZWVkcyBtb3JlIHVuaWNvcm5zIScsCisgICAgICAgIH07CisgICAgICAgIGxpbmsuaHJlZiA9IGFk
ZFF1ZXJ5UGFyYW1ldGVyc1RvVVJMKGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL2VudGVyX2J1Zy5j
Z2knLCBxdWVyeVBhcmFtZXRlcnMpOworICAgICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnOwor
CisgICAgICAgIHJldHVybiBhc2lkZTsKKyAgICB9LAorCisgICAgX2RvbUZvckJ1aWxkTmFtZTog
ZnVuY3Rpb24oYnVpbGRlciwgYnVpbGROYW1lKSB7CisgICAgICAgIHZhciBwYXJzZWQgPSB0aGlz
Ll9idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShidWlsZE5hbWUpOworCisgICAgICAgIHZhciBzb3Vy
Y2VMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworICAgICAgICBzb3VyY2VMaW5r
LmhyZWYgPSAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvJyArIHBhcnNlZC5yZXZp
c2lvbjsKKyAgICAgICAgc291cmNlTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgncicgKyBwYXJzZWQucmV2aXNpb24pKTsKKworICAgICAgICB2YXIgYnVpbGRMaW5rID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworICAgICAgICBidWlsZExpbmsuaHJlZiA9IGJ1
aWxkZXIuYnVpbGRVUkwocGFyc2VkLmJ1aWxkTnVtYmVyKTsKKyAgICAgICAgYnVpbGRMaW5rLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhcnNlZC5idWlsZE51bWJlcikpOwor
CisgICAgICAgIHZhciByZXN1bHRzTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsK
KyAgICAgICAgcmVzdWx0c0xpbmsuaHJlZiA9IGJ1aWxkZXIucmVzdWx0c1BhZ2VVUkwoYnVpbGRO
YW1lKTsKKyAgICAgICAgcmVzdWx0c0xpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ3Jlc3VsdHMuaHRtbCcpKTsKKworICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoc291
cmNlTGluayk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnICgnKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChidWlsZExpbmspOworICAg
ICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJykgKCcpKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHJlc3VsdHNMaW5rKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcpJykpOworCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIF9kb21Gb3JGYWlsZWRUZXN0OiBmdW5jdGlvbihi
dWlsZGVyLCBidWlsZE5hbWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0KSB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0TmFtZSArICc6ICcpKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHRoaXMuX2RvbUZvckZhaWx1cmVEaWFnbm9zaXMo
YnVpbGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBfZG9tRm9yRmFpbHVyZURpYWdub3NpczogZnVuY3Rp
b24oYnVpbGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkgeworICAgICAgICB2
YXIgZGlhZ25vc3RpY0luZm8gPSBidWlsZGVyLmZhaWx1cmVEaWFnbm9zaXNUZXh0QW5kVVJMKGJ1
aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpOworICAgICAgICBpZiAoIWRpYWdub3N0aWNJ
bmZvKQorICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3RSZXN1
bHQuZmFpbHVyZVR5cGUpOworCisgICAgICAgIHZhciB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2wgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIHRleHRBbmRDcmFzaGlu
Z1N5bWJvbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkaWFnbm9zdGljSW5m
by50ZXh0KSk7CisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmNyYXNoaW5nU3ltYm9sKSB7CisgICAg
ICAgICAgICB2YXIgY29kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NvZGUnKTsKKyAgICAg
ICAgICAgIGNvZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdFJlc3Vs
dC5jcmFzaGluZ1N5bWJvbCkpOworICAgICAgICAgICAgdGV4dEFuZENyYXNoaW5nU3ltYm9sLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgKCcpKTsKKyAgICAgICAgICAgIHRl
eHRBbmRDcmFzaGluZ1N5bWJvbC5hcHBlbmRDaGlsZChjb2RlKTsKKyAgICAgICAgICAgIHRleHRB
bmRDcmFzaGluZ1N5bWJvbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKScp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghKCd1cmwnIGluIGRpYWdub3N0aWNJbmZvKSkK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0QW5kQ3Jhc2hpbmdTeW1ib2w7CisKKyAgICAgICAgdmFy
IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisgICAgICAgIGxpbmsuaHJlZiA9
IGRpYWdub3N0aWNJbmZvLnVybDsKKyAgICAgICAgbGluay5hcHBlbmRDaGlsZCh0ZXh0QW5kQ3Jh
c2hpbmdTeW1ib2wpOworICAgICAgICByZXR1cm4gbGluazsKKyAgICB9LAorCisgICAgX2RvbUZv
ck5ld0FuZEV4aXN0aW5nQnVnczogZnVuY3Rpb24odGVzdGVyLCBmYWlsaW5nVGVzdHMsIGJ1Z0Zv
cm0pIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
cCcpOworICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworICAgICAgICBj
b250YWluZXIuY2xhc3NOYW1lID0gJ2V4aXN0aW5nLWFuZC1uZXctYnVncyc7CisKKyAgICAgICAg
dmFyIGJ1Z3NDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAg
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJ1Z3NDb250YWluZXIpOworCisgICAgICAgIGJ1Z3ND
b250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1NlYXJjaGluZyBm
b3IgYnVncyByZWxhdGVkIHRvICcgKyAoZmFpbGluZ1Rlc3RzLmxlbmd0aCA+IDEgPyAndGhlc2Ug
dGVzdHMnIDogJ3RoaXMgdGVzdCcpICsgJ1x1MjAyNicpKTsKKworICAgICAgICBidWd6aWxsYS5x
dWlja1NlYXJjaCgnQUxMICcgKyBmYWlsaW5nVGVzdHMuam9pbignfCcpLCBmdW5jdGlvbihidWdz
KSB7CisgICAgICAgICAgICBpZiAoIWJ1Z3MubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgYnVn
c0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGJ1Z3NDb250YWluZXIpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKGJ1
Z3NDb250YWluZXIuZmlyc3RDaGlsZCkKKyAgICAgICAgICAgICAgICBidWdzQ29udGFpbmVyLnJl
bW92ZUNoaWxkKGJ1Z3NDb250YWluZXIuZmlyc3RDaGlsZCk7CisKKyAgICAgICAgICAgIGJ1Z3ND
b250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0V4aXN0aW5nIGJ1
Z3MgcmVsYXRlZCB0byAnICsgKGZhaWxpbmdUZXN0cy5sZW5ndGggPiAxID8gJ3RoZXNlIHRlc3Rz
JyA6ICd0aGlzIHRlc3QnKSArICc6JykpOworCisgICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7CisgICAgICAgICAgICBidWdzQ29udGFpbmVyLmFwcGVu
ZENoaWxkKGxpc3QpOworCisgICAgICAgICAgICBsaXN0LmNsYXNzTmFtZSA9ICdleGlzdGluZy1i
dWdzLWxpc3QnOworCisgICAgICAgICAgICBmdW5jdGlvbiBidWdUb0xpc3RJdGVtKGJ1Zykgewor
ICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwor
ICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IGJ1Zy51cmw7CisgICAgICAgICAgICAgICAgbGlu
ay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShidWcudGl0bGUpKTsKKworICAg
ICAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAg
ICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGxpbmspOworCisgICAgICAgICAgICAgICAg
cmV0dXJuIGl0ZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBvcGVuQnVncyA9
IGJ1Z3MuZmlsdGVyKGZ1bmN0aW9uKGJ1ZykgeyByZXR1cm4gYnVnemlsbGEuaXNPcGVuU3RhdHVz
KGJ1Zy5zdGF0dXMpIH0pOworICAgICAgICAgICAgdmFyIGNsb3NlZEJ1Z3MgPSBidWdzLmZpbHRl
cihmdW5jdGlvbihidWcpIHsgcmV0dXJuICFidWd6aWxsYS5pc09wZW5TdGF0dXMoYnVnLnN0YXR1
cykgfSk7CisKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGRyZW4ob3BlbkJ1Z3MubWFwKGJ1
Z1RvTGlzdEl0ZW0pKTsKKworICAgICAgICAgICAgaWYgKCFjbG9zZWRCdWdzLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnbGknKTsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7
CisKKyAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J0Nsb3NlZCBidWdzOicpKTsKKworICAgICAgICAgICAgdmFyIGNsb3NlZExpc3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd1bCcpOworICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChjbG9z
ZWRMaXN0KTsKKworICAgICAgICAgICAgY2xvc2VkTGlzdC5hcHBlbmRDaGlsZHJlbihjbG9zZWRC
dWdzLm1hcChidWdUb0xpc3RJdGVtKSk7CisgICAgICAgIH0pOworCisgICAgICAgIHZhciBmb3Jt
ID0gYnVnRm9ybS5kb21FbGVtZW50KCk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChmb3Jt
KTsKKworICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKyAg
ICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGxpbmspOworCisgICAgICAgIGxpbmsuYWRkRXZl
bnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldmVudCkgeyBmb3JtLnN1Ym1pdCgpOyBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOyB9KTsKKyAgICAgICAgbGluay5ocmVmID0gJyMnOworICAgICAg
ICBsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdGaWxlIGJ1ZyBmb3Ig
JyArIChmYWlsaW5nVGVzdHMubGVuZ3RoID4gMSA/ICd0aGVzZSBmYWlsdXJlcycgOiAndGhpcyBm
YWlsdXJlJykpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBfZG9t
Rm9yUG9zc2libHlGbGFreVRlc3RzOiBmdW5jdGlvbihidWlsZGVyLCBwb3NzaWJseUZsYWt5VGVz
dERhdGEsIGFsbEJ1aWxkcykgeworICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICB2YXIgZmxha3lUZXN0cyA9IE9iamVjdC5rZXlz
KHBvc3NpYmx5Rmxha3lUZXN0RGF0YSk7CisgICAgICAgIGlmICghZmxha3lUZXN0cy5sZW5ndGgp
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIHZhciBmbGFreUhlYWRlciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gyJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRDaGls
ZChmbGFreUhlYWRlcik7CisgICAgICAgIGZsYWt5SGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdQb3NzaWJseSBGbGFreSBUZXN0cycpKTsKKworICAgICAgICB2YXIg
Zmxha3lMaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2wnKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZENoaWxkKGZsYWt5TGlzdCk7CisKKyAgICAgICAgZmxha3lMaXN0LmlkID0gJ3Bvc3Np
Ymx5LWZsYWt5LXRlc3RzJzsKKworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGZs
YWt5TGlzdC5hcHBlbmRDaGlsZHJlbihzb3J0ZWQoZmxha3lUZXN0cykubWFwKGZ1bmN0aW9uKHRl
c3ROYW1lKSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2xpJyk7CisKKyAgICAgICAgICAgIHZhciBkaXNjbG9zdXJlVHJpYW5nbGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRpc2Ns
b3N1cmVUcmlhbmdsZSk7CisKKyAgICAgICAgICAgIGRpc2Nsb3N1cmVUcmlhbmdsZS5jbGFzc05h
bWUgPSAnZGlzY2xvc3VyZS10cmlhbmdsZSc7CisgICAgICAgICAgICBjb25zdCBibGFja1JpZ2h0
UG9pbnRpbmdTbWFsbFRyaWFuZ2xlID0gJ1x1MjViOCc7CisgICAgICAgICAgICBkaXNjbG9zdXJl
VHJpYW5nbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYmxhY2tSaWdodFBv
aW50aW5nU21hbGxUcmlhbmdsZSkpOworCisgICAgICAgICAgICB2YXIgZmFpbHVyZXMgPSBwb3Nz
aWJseUZsYWt5VGVzdERhdGFbdGVzdE5hbWVdOworCisgICAgICAgICAgICBpdGVtLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3ROYW1lICsgJyAoZmFpbGVkICcgKyBmYWls
dXJlcy5sZW5ndGggKyAnIG91dCBvZiAnICsgYWxsQnVpbGRzLmxlbmd0aCArICcgdGltZXMpJykp
OworCisgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKKyAgICAg
ICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAnZXhwYW5kYWJsZSc7CisKKyAgICAgICAgICAg
IGRpc2Nsb3N1cmVUcmlhbmdsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGl0ZW0udG9nZ2xlU3R5bGVDbGFzcygnZXhwYW5kZWQnKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWl0ZW0uaGFzU3R5bGVDbGFzcygnZXhwYW5kZWQnKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKCFjb250YWluZXIu
Zmlyc3RDaGlsZCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZmFpbHVyZUxpc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdvbCcpOworICAgICAgICAgICAgICAgICAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQoZmFpbHVyZUxpc3QpOworCisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVM
aXN0LmNsYXNzTmFtZSA9ICdmbGFraW5lc3MtZXhhbXBsZXMtbGlzdCc7CisKKyAgICAgICAgICAg
ICAgICAgICAgZmFpbHVyZUxpc3QuYXBwZW5kQ2hpbGRyZW4oZmFpbHVyZXMubWFwKGZ1bmN0aW9u
KGhpc3RvcnlJdGVtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFw
cGVuZENoaWxkKHNlbGYuX2RvbUZvckJ1aWxkTmFtZShidWlsZGVyLCBoaXN0b3J5SXRlbS5idWls
ZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnOiAnKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKHNlbGYuX2RvbUZvckZhaWx1cmVEaWFnbm9zaXMoYnVpbGRlciwgaGlzdG9yeUl0ZW0u
YnVpbGQsIHRlc3ROYW1lLCBoaXN0b3J5SXRlbS5yZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpdGVtOworICAgICAgICAgICAgICAgICAgICB9KSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGZhaWxpbmdCdWlsZE5hbWVzID0gZmFpbHVyZXMubWFwKGZ1bmN0aW9u
KGhpc3RvcnlJdGVtKSB7IHJldHVybiBoaXN0b3J5SXRlbS5idWlsZCB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGJ1Z0Zvcm0gPSBuZXcgRmxha3lUZXN0QnVnRm9ybShidWlsZGVyLCBmYWls
aW5nQnVpbGROYW1lcywgdGVzdE5hbWUsIGFsbEJ1aWxkcy5sYXN0KCksIGFsbEJ1aWxkc1swXSwg
YWxsQnVpbGRzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChzZWxmLl9kb21Gb3JOZXdBbmRFeGlzdGluZ0J1Z3MoYnVpbGRlciwgW3Rlc3ROYW1lXSwg
YnVnRm9ybSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgfSkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfSwKKworICAgIF9zZXRUaXRsZTogZnVuY3Rpb24odGl0bGUpIHsKKyAgICAgICAgZG9j
dW1lbnQudGl0bGUgPSB0aXRsZTsKKyAgICAgICAgdGhpcy5faGVhZGVyLnRleHRDb250ZW50ID0g
dGl0bGU7CisgICAgfSwKK307CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9XZWJLaXRC
dWd6aWxsYS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9XZWJLaXRC
dWd6aWxsYS5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9XZWJLaXRC
dWd6aWxsYS5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1Z3pp
bGxhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitjb25z
dCBXZWJLaXRCdWd6aWxsYSA9IHsKKyAgICBDb21wb25lbnQ6IHsKKyAgICAgICAgVG9vbHNUZXN0
czogJ1Rvb2xzIC8gVGVzdHMnLAorICAgIH0sCisKKyAgICBLZXl3b3JkOiB7CisgICAgICAgIExh
eW91dFRlc3RGYWlsdXJlOiAnTGF5b3V0VGVzdEZhaWx1cmUnLAorICAgICAgICBNYWtpbmdCb3Rz
UmVkOiAnTWFraW5nQm90c1JlZCcsCisgICAgICAgIFJlZ3Jlc3Npb246ICdSZWdyZXNzaW9uJywK
KyAgICB9LAorCisgICAgT3BlcmF0aW5nU3lzdGVtOiB7CisgICAgICAgIExlb3BhcmQ6ICdNYWMg
T1MgWCAxMC41JywKKyAgICAgICAgU25vd0xlb3BhcmQ6ICdNYWMgT1MgWCAxMC42JywKKyAgICAg
ICAgV2luZG93czc6ICdXaW5kb3dzIDcnLAorICAgICAgICBXaW5kb3dzWFA6ICdXaW5kb3dzIFhQ
JywKKyAgICB9LAorCisgICAgUGxhdGZvcm06IHsKKyAgICAgICAgTWFjaW50b3NoOiAnTWFjaW50
b3NoJywKKyAgICAgICAgUEM6ICdQQycsCisgICAgfSwKKworICAgIFByb2R1Y3Q6IHsKKyAgICAg
ICAgV2ViS2l0OiAnV2ViS2l0JywKKyAgICB9LAorCisgICAgVmVyc2lvbjogeworICAgICAgICBO
aWdodGx5OiAnNTI4KyAoTmlnaHRseSBidWlsZCknLAorICAgIH0sCit9OwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJv
bSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvV2ViS2l0QnVpbGRib3QuanM6OTMyNTQpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gV2ViS2l0QnVpbGRib3QoKSB7CisgICAgQnVp
bGRib3QuY2FsbCh0aGlzLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJyk7Cit9CisKK1dlYktp
dEJ1aWxkYm90LnByb3RvdHlwZSA9IHsKKyAgICBwYXJzZUJ1aWxkTmFtZTogZnVuY3Rpb24oYnVp
bGROYW1lKSB7CisgICAgICAgIHZhciBtYXRjaCA9IC9ecihcZCspIFwoKFxkKylcKSQvLmV4ZWMo
YnVpbGROYW1lKTsKKyAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcmV2aXNpb246IHBhcnNlSW50KG1hdGNo
WzFdLCAxMCksCisgICAgICAgICAgICBidWlsZE51bWJlcjogcGFyc2VJbnQobWF0Y2hbMl0sIDEw
KSwKKyAgICAgICAgfTsKKyAgICB9LAorfTsKKworV2ViS2l0QnVpbGRib3QucHJvdG90eXBlLl9f
cHJvdG9fXyA9IEJ1aWxkYm90LnByb3RvdHlwZTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL2Jhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZS5q
cwkocmV2aXNpb24gOTMyNTYpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlLmpzOjkzMjU2KQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2YXIgYmFzZSA9IGJhc2UgfHwge307CisKKyhmdW5j
dGlvbigpeworCitiYXNlLmFzSW50ZWdlciA9IGZ1bmN0aW9uKHN0cmluZ09ySW50ZWdlcikKK3sK
KyAgICBpZiAodHlwZW9mIHN0cmluZ09ySW50ZWdlciA9PSAnc3RyaW5nJykKKyAgICAgICAgcmV0
dXJuIHBhcnNlSW50KHN0cmluZ09ySW50ZWdlcik7CisgICAgcmV0dXJuIHN0cmluZ09ySW50ZWdl
cjsKK307CisKK2Jhc2UuZW5kc1dpdGggPSBmdW5jdGlvbihzdHJpbmcsIHN1ZmZpeCkKK3sKKyAg
ICBpZiAoc3VmZml4Lmxlbmd0aCA+IHN0cmluZy5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB2YXIgZXhwZWN0ZWRJbmRleCA9IHN0cmluZy5sZW5ndGggLSBzdWZmaXgubGVuZ3Ro
OworICAgIHJldHVybiBzdHJpbmcubGFzdEluZGV4T2Yoc3VmZml4KSA9PSBleHBlY3RlZEluZGV4
OworfTsKKworYmFzZS5yZXBlYXRTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcsIGNvdW50KQorewor
ICAgIHJldHVybiBuZXcgQXJyYXkoY291bnQgKyAxKS5qb2luKHN0cmluZyk7Cit9OworCitiYXNl
LmpvaW5QYXRoID0gZnVuY3Rpb24ocGFyZW50LCBjaGlsZCkKK3sKKyAgICBpZiAocGFyZW50Lmxl
bmd0aCA9PSAwKQorICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgcmV0dXJuIHBhcmVudCArICcv
JyArIGNoaWxkOworfTsKKworYmFzZS50cmltRXh0ZW5zaW9uID0gZnVuY3Rpb24odXJsKQorewor
ICAgIHZhciBpbmRleCA9IHVybC5sYXN0SW5kZXhPZignLicpOworICAgIGlmIChpbmRleCA9PSAt
MSkKKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICByZXR1cm4gdXJsLnN1YnN0cigwLCBpbmRleCk7
Cit9CisKK2Jhc2UudW5pcXVpZnlBcnJheSA9IGZ1bmN0aW9uKGFycmF5KQoreworICAgIHZhciBz
ZWVuID0ge307CisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICQuZWFjaChhcnJheSwgZnVuY3Rp
b24oaW5kZXgsIHZhbHVlKSB7CisgICAgICAgIGlmIChzZWVuW3ZhbHVlXSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgc2Vlblt2YWx1ZV0gPSB0cnVlOworICAgICAgICByZXN1bHQucHVz
aCh2YWx1ZSk7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK2Jhc2UuZmlsdGVy
VHJlZSA9IGZ1bmN0aW9uKHRyZWUsIGlzTGVhZiwgcHJlZGljYXRlKQoreworICAgIHZhciBmaWx0
ZXJlZFRyZWUgPSB7fTsKKworICAgIGZ1bmN0aW9uIHdhbGtTdWJ0cmVlKHN1YnRyZWUsIGRpcmVj
dG9yeSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGNoaWxkTmFtZSBpbiBzdWJ0cmVlKSB7Cisg
ICAgICAgICAgICB2YXIgY2hpbGQgPSBzdWJ0cmVlW2NoaWxkTmFtZV07CisgICAgICAgICAgICB2
YXIgY2hpbGRQYXRoID0gYmFzZS5qb2luUGF0aChkaXJlY3RvcnksIGNoaWxkTmFtZSk7CisgICAg
ICAgICAgICBpZiAoaXNMZWFmKGNoaWxkKSkgeworICAgICAgICAgICAgICAgIGlmIChwcmVkaWNh
dGUoY2hpbGQpKQorICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFRyZWVbY2hpbGRQYXRoXSA9
IGNoaWxkOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgd2Fsa1N1YnRyZWUoY2hpbGQsIGNoaWxkUGF0aCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB3YWxrU3VidHJlZSh0cmVlLCAnJyk7CisgICAgcmV0dXJuIGZpbHRlcmVkVHJlZTsKK307
CisKK2Jhc2UuUmVxdWVzdFRyYWNrZXIgPSBmdW5jdGlvbihyZXF1ZXN0c0luRmxpZ2h0LCBjYWxs
YmFjaywgYXJncykKK3sKKyAgICB0aGlzLl9yZXF1ZXN0c0luRmxpZ2h0ID0gcmVxdWVzdHNJbkZs
aWdodDsKKyAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgIHRoaXMuX2FyZ3MgPSBh
cmdzIHx8IFtdOworICAgIHRoaXMuX3RyeUNhbGxiYWNrKCk7Cit9OworCitiYXNlLlJlcXVlc3RU
cmFja2VyLnByb3RvdHlwZSA9IHsKKyAgICBfdHJ5Q2FsbGJhY2s6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fcmVxdWVzdHNJbkZsaWdodCAmJiB0aGlzLl9jYWxsYmFjaykK
KyAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrLmFwcGx5KG51bGwsIHRoaXMuX2FyZ3MpOworICAg
IH0sCisgICAgcmVxdWVzdENvbXBsZXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAtLXRo
aXMuX3JlcXVlc3RzSW5GbGlnaHQ7CisgICAgICAgIHRoaXMuX3RyeUNhbGxiYWNrKCk7CisgICAg
fQorfQorCitiYXNlLmNhbGxJblBhcmFsbGVsID0gZnVuY3Rpb24oZnVuY3Rpb25MaXN0LCBjYWxs
YmFjaykKK3sKKyAgICB2YXIgcmVxdWVzdFRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tl
cihmdW5jdGlvbkxpc3QubGVuZ3RoLCBjYWxsYmFjayk7CisKKyAgICAkLmVhY2goZnVuY3Rpb25M
aXN0LCBmdW5jdGlvbihpbmRleCwgZnVuYykgeworICAgICAgICBmdW5jKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgcmVxdWVzdFRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7CisgICAgICAgIH0p
OworICAgIH0pOworfTsKKworYmFzZS5jYWxsSW5TZXF1ZW5jZSA9IGZ1bmN0aW9uKGZ1bmMsIGFy
Z3VtZW50TGlzdCwgY2FsbGJhY2spCit7CisgICAgdmFyIG5leHRJbmRleCA9IDA7CisKKyAgICBm
dW5jdGlvbiBjYWxsTmV4dCgpCisgICAgeworICAgICAgICBpZiAobmV4dEluZGV4ID49IGFyZ3Vt
ZW50TGlzdC5sZW5ndGgpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmdW5jKGFyZ3VtZW50TGlzdFtuZXh0SW5kZXgr
K10sIGNhbGxOZXh0KTsKKyAgICB9CisKKyAgICBjYWxsTmV4dCgpOworfTsKKworYmFzZS5DYWxs
YmFja0l0ZXJhdG9yID0gZnVuY3Rpb24oY2FsbGJhY2ssIGxpc3RPZkFyZ3VtZW50QXJyYXlzKQor
eworICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgdGhpcy5fbmV4dEluZGV4ID0g
MDsKKyAgICB0aGlzLl9saXN0T2ZBcmd1bWVudEFycmF5cyA9IGxpc3RPZkFyZ3VtZW50QXJyYXlz
OworfTsKKworYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5oYXNOZXh0ID0gZnVuY3Rp
b24oKQoreworICAgIHJldHVybiB0aGlzLl9uZXh0SW5kZXggPCB0aGlzLl9saXN0T2ZBcmd1bWVu
dEFycmF5cy5sZW5ndGg7Cit9OworCitiYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmhh
c1ByZXZpb3VzID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlzLl9uZXh0SW5kZXggLSAy
ID49IDA7Cit9OworCitiYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmNhbGxOZXh0ID0g
ZnVuY3Rpb24oKQoreworICAgIGlmICghdGhpcy5oYXNOZXh0KCkpCisgICAgICAgIHJldHVybjsK
KyAgICB2YXIgYXJncyA9IHRoaXMuX2xpc3RPZkFyZ3VtZW50QXJyYXlzW3RoaXMuX25leHRJbmRl
eF07CisgICAgdGhpcy5fbmV4dEluZGV4Kys7CisgICAgdGhpcy5fY2FsbGJhY2suYXBwbHkobnVs
bCwgYXJncyk7Cit9OworCitiYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmNhbGxQcmV2
aW91cyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXMoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHZhciBhcmdzID0gdGhpcy5fbGlzdE9mQXJndW1lbnRBcnJheXNbdGhp
cy5fbmV4dEluZGV4IC0gMl07CisgICAgdGhpcy5fbmV4dEluZGV4LS07CisgICAgdGhpcy5fY2Fs
bGJhY2suYXBwbHkobnVsbCwgYXJncyk7Cit9OworCitiYXNlLkFzeW5jaHJvbm91c0NhY2hlID0g
ZnVuY3Rpb24oZmV0Y2gpCit7CisgICAgdGhpcy5fZmV0Y2ggPSBmZXRjaDsKKyAgICB0aGlzLl9k
YXRhQ2FjaGUgPSB7fTsKKyAgICB0aGlzLl9jYWxsYmFja0NhY2hlID0ge307Cit9OworCitiYXNl
LkFzeW5jaHJvbm91c0NhY2hlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihrZXksIGNhbGxiYWNr
KQoreworICAgIHZhciBzZWxmID0gdGhpczsKKworICAgIGlmIChzZWxmLl9kYXRhQ2FjaGVba2V5
XSkgeworICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYWx3YXlzIGNhbGxpbmcgY2FsbGJhY2sg
YXN5bmNocm9ub3VzbHkuCisgICAgICAgIGNhbGxiYWNrKHNlbGYuX2RhdGFDYWNoZVtrZXldKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChrZXkgaW4gc2VsZi5fY2FsbGJhY2tD
YWNoZSkgeworICAgICAgICBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV0ucHVzaChjYWxsYmFjayk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV0g
PSBbY2FsbGJhY2tdOworCisgICAgc2VsZi5fZmV0Y2guY2FsbChudWxsLCBrZXksIGZ1bmN0aW9u
KGRhdGEpIHsKKyAgICAgICAgc2VsZi5fZGF0YUNhY2hlW2tleV0gPSBkYXRhOworCisgICAgICAg
IHZhciBjYWxsYmFja0xpc3QgPSBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV07CisgICAgICAgIGRl
bGV0ZSBzZWxmLl9jYWxsYmFja0NhY2hlW2tleV07CisKKyAgICAgICAgY2FsbGJhY2tMaXN0LmZv
ckVhY2goZnVuY3Rpb24oY2FjaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhY2hlZENhbGxi
YWNrKGRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsKK307CisKKy8qCisgICAgTWFpbnRhaW5z
IGEgZGljdGlvbmFyeSBvZiBpdGVtcywgdHJhY2tpbmcgdGhlaXIgdXBkYXRlcyBhbmQgcmVtb3Zp
bmcgaXRlbXMgdGhhdCBoYXZlbid0IGJlZW4gdXBkYXRlZC4KKyAgICBBbiAidXBkYXRlIiBpcyBh
IGNhbGwgdG8gdGhlICJ1cGRhdGUiIG1ldGhvZC4KKyAgICBUbyByZW1vdmUgc3RhbGUgaXRlbXMs
IGNhbGwgdGhlICJyZW1vdmUiIG1ldGhvZC4gSXQgd2lsbCByZW1vdmUgYWxsCisgICAgaXRlbXMg
dGhhdCBoYXZlIG5vdCBiZWVuIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIG9mICJy
ZW1vdmUiLgorKi8KK2Jhc2UuVXBkYXRlVHJhY2tlciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlz
Ll9pdGVtcyA9IHt9OworICAgIHRoaXMuX3VwZGF0ZWQgPSB7fTsKK30KKworYmFzZS5VcGRhdGVU
cmFja2VyLnByb3RvdHlwZSA9IHsKKyAgICAvKgorICAgICAgICBVcGRhdGUgYW4ge2tleX0ve2l0
ZW19IHBhaXIuIFlvdSBjYW4gbWFrZSB0aGUgZGljdGlvbmFyeSBhY3QgYXMgYSBzZXQgYW5kCisg
ICAgICAgIHNraXAgdGhlIHtpdGVtfSwgaW4gd2hpY2ggY2FzZSB0aGUge2tleX0gaXMgYWxzbyB0
aGUge2l0ZW19LgorICAgICovCisgICAgdXBkYXRlOiBmdW5jdGlvbihrZXksIG9iamVjdCkKKyAg
ICB7CisgICAgICAgIG9iamVjdCA9IG9iamVjdCB8fCBrZXk7CisgICAgICAgIHRoaXMuX2l0ZW1z
W2tleV0gPSBvYmplY3Q7CisgICAgICAgIHRoaXMuX3VwZGF0ZWRba2V5XSA9IDE7CisgICAgfSwK
KyAgICBleGlzdHM6IGZ1bmN0aW9uKGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMu
Z2V0KGtleSk7CisgICAgfSwKKyAgICBnZXQ6IGZ1bmN0aW9uKGtleSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9pdGVtc1trZXldOworICAgIH0sCisgICAgLyoKKyAgICAgICAgQ2FsbGJh
Y2sgcGFyYW1ldGVycyBhcmU6CisgICAgICAgIC0gaXRlbQorICAgICAgICAtIGtleQorICAgICAg
ICAtIHVwZGF0ZWQsIHdoaWNoIGlzIHRydWUgaWYgdGhlIGl0ZW0gd2FzIHVwZGF0ZWQgYWZ0ZXIg
bGFzdCBwdXJnZSgpIGNhbGwuCisgICAgKi8KKyAgICBmb3JFYWNoOiBmdW5jdGlvbihjYWxsYmFj
aywgdGhpc09iamVjdCkKKyAgICB7CisgICAgICAgIGlmICghY2FsbGJhY2spCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgT2JqZWN0LmtleXModGhpcy5faXRlbXMpLmZvckVhY2goZnVu
Y3Rpb24oa2V5KSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW2tleV07Cisg
ICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNPYmplY3QgfHwgaXRlbSwgaXRlbSwga2V5LCAh
IXRoaXMuX3VwZGF0ZWRba2V5XSk7CisgICAgICAgIH0sIHRoaXMpOworICAgIH0sCisgICAgcHVy
Z2U6IGZ1bmN0aW9uKHJlbW92ZUNhbGxiYWNrLCB0aGlzT2JqZWN0KSB7CisgICAgICAgIHJlbW92
ZUNhbGxiYWNrID0gcmVtb3ZlQ2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fTsKKyAgICAgICAgdGhp
cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGtleSwgdXBkYXRlZCkgeworICAgICAgICAgICAgaWYg
KHVwZGF0ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmVtb3ZlQ2Fs
bGJhY2suY2FsbCh0aGlzT2JqZWN0IHx8IGl0ZW0sIGl0ZW0pOworICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX2l0ZW1zW2tleV07CisgICAgICAgIH0sIHRoaXMpOworICAgICAgICB0aGlzLl91cGRh
dGVkID0ge307CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBodHRwOi8vc3JjLmNocm9taXVtLm9y
Zy92aWV3dmMvY2hyb21lL3RydW5rL3NyYy9jaHJvbWUvYnJvd3Nlci9yZXNvdXJjZXMvc2hhcmVk
L2pzL2NyL3VpLmpzCitiYXNlLmV4dGVuZHMgPSBmdW5jdGlvbihiYXNlLCBwcm90b3R5cGUpCit7
CisgICAgdmFyIGV4dGVuZGVkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0g
dHlwZW9mIGJhc2UgPT0gJ3N0cmluZycgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGJhc2UpIDog
YmFzZS5jYWxsKHRoaXMpOworICAgICAgICBleHRlbmRlZC5wcm90b3R5cGUuX19wcm90b19fID0g
ZWxlbWVudC5fX3Byb3RvX187CisgICAgICAgIGVsZW1lbnQuX19wcm90b19fID0gZXh0ZW5kZWQu
cHJvdG90eXBlOworICAgICAgICBlbGVtZW50LmluaXQgJiYgZWxlbWVudC5pbml0LmFwcGx5KGVs
ZW1lbnQsIGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KKworICAg
IGV4dGVuZGVkLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgICByZXR1cm4gZXh0ZW5kZWQ7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZVJlbGF0aXZlVGltZURlc2NyaXB0b3IoZGl2aXNvckluTWlsbGlz
ZWNvbmRzLCB1bml0KQoreworICAgIHJldHVybiBmdW5jdGlvbihkZWx0YSkgeworICAgICAgICB2
YXIgZGVsdGFJblVuaXRzID0gZGVsdGEgLyBkaXZpc29ySW5NaWxsaXNlY29uZHM7CisgICAgICAg
IHJldHVybiAoZGVsdGFJblVuaXRzKS50b0ZpeGVkKDApICsgJyAnICsgdW5pdCArIChkZWx0YUlu
VW5pdHMgPj0gMiA/ICdzJyA6ICcnKSArICcgYWdvJzsKKyAgICB9Cit9CisKK3ZhciBrTWludXRl
SW5NaWxsaXNlY29uZHMgPSA2MCAqIDEwMDA7Cit2YXIga1JlbGF0aXZlVGltZVNsb3RzID0gWwor
ICAgIHsKKyAgICAgICAgbWF4TWlsbGlzZWNvbmRzOiBrTWludXRlSW5NaWxsaXNlY29uZHMsCisg
ICAgICAgIGRlc2NyaWJlOiBmdW5jdGlvbihkZWx0YSkgeyByZXR1cm4gJ0p1c3Qgbm93JzsgfQor
ICAgIH0sCisgICAgeworICAgICAgICBtYXhNaWxsaXNlY29uZHM6IDYwICoga01pbnV0ZUluTWls
bGlzZWNvbmRzLAorICAgICAgICBkZXNjcmliZTogY3JlYXRlUmVsYXRpdmVUaW1lRGVzY3JpcHRv
cihrTWludXRlSW5NaWxsaXNlY29uZHMsICdtaW51dGUnKQorICAgIH0sCisgICAgeworICAgICAg
ICBtYXhNaWxsaXNlY29uZHM6IDI0ICogNjAgKiBrTWludXRlSW5NaWxsaXNlY29uZHMsCisgICAg
ICAgIGRlc2NyaWJlOiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKDYwICoga01pbnV0ZUlu
TWlsbGlzZWNvbmRzLCAnaG91cicpCisgICAgfSwKKyAgICB7CisgICAgICAgIG1heE1pbGxpc2Vj
b25kczogTnVtYmVyLk1BWF9WQUxVRSwKKyAgICAgICAgZGVzY3JpYmU6IGNyZWF0ZVJlbGF0aXZl
VGltZURlc2NyaXB0b3IoMjQgKiA2MCAqIGtNaW51dGVJbk1pbGxpc2Vjb25kcywgJ2RheScpCisg
ICAgfQorXTsKKworLyoKKyAgICBSZXByZXNlbnQgdGltZSBhcyBkZXNjcmlwdGl2ZSB0ZXh0LCBy
ZWxhdGl2ZSB0byBub3cgYW5kIGdyYWR1YWxseSBkZWNyZWFzaW5nIGluIHByZWNpc2lvbjoKKyAg
ICAgICAgZGVsdGEgPCAxIG1pbnV0ZXMgPT4gSnVzdCBOb3cKKyAgICAgICAgZGVsdGEgPCA2MCBt
aW51dGVzID0+IFggbWludXRlW3NdIGFnbworICAgICAgICBkZWx0YSA8IDI0IGhvdXJzID0+IFgg
aG91cltzXSBhZ28KKyAgICAgICAgZGVsdGEgPCBpbmYgPT4gWCBkYXlbc10gYWdvCisqLworYmFz
ZS5yZWxhdGl2aXplVGltZSA9IGZ1bmN0aW9uKHRpbWUpCit7CisgICAgdmFyIHJlc3VsdDsKKyAg
ICB2YXIgZGVsdGEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRpbWU7CisgICAga1JlbGF0aXZl
VGltZVNsb3RzLnNvbWUoZnVuY3Rpb24oc2xvdCkgeworICAgICAgICBpZiAoZGVsdGEgPj0gc2xv
dC5tYXhNaWxsaXNlY29uZHMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
cmVzdWx0ID0gc2xvdC5kZXNjcmliZShkZWx0YSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9iYXNlX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9iYXNlX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTYpCShmcm9tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9iYXNlX3VuaXR0ZXN0cy5qczo5MzI1NikKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL2Jhc2VfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyhmdW5jdGlvbiAoKSB7CisKK21vZHVsZSgiYmFzZSIpOworCit0ZXN0
KCJqb2luUGF0aCIsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciB2YWx1ZSA9IGJhc2Uuam9pblBh
dGgoInBhdGgvdG8iLCAidGVzdC5odG1sIik7CisgICAgZXF1YWxzKHZhbHVlLCAicGF0aC90by90
ZXN0Lmh0bWwiKTsKK30pOworCit0ZXN0KCJlbmRzV2l0aCIsIDksIGZ1bmN0aW9uKCkgeworICAg
IG9rKGJhc2UuZW5kc1dpdGgoInh5eiIsICIiKSk7CisgICAgb2soYmFzZS5lbmRzV2l0aCgieHl6
IiwgInoiKSk7CisgICAgb2soYmFzZS5lbmRzV2l0aCgieHl6IiwgInl6IikpOworICAgIG9rKGJh
c2UuZW5kc1dpdGgoInh5eiIsICJ4eXoiKSk7CisgICAgb2soIWJhc2UuZW5kc1dpdGgoInh5eiIs
ICJ3eHl6IikpOworICAgIG9rKCFiYXNlLmVuZHNXaXRoKCJ4eXoiLCAiZ3d4eXoiKSk7CisgICAg
b2soYmFzZS5lbmRzV2l0aCgiIiwgIiIpKTsKKyAgICBvayghYmFzZS5lbmRzV2l0aCgiIiwgInoi
KSk7CisgICAgb2soIWJhc2UuZW5kc1dpdGgoInh5eHkiLCAieXgiKSk7Cit9KTsKKwordGVzdCgi
dHJpbUV4dGVuc2lvbiIsIDYsIGZ1bmN0aW9uKCkgeworICAgIGVxdWFscyhiYXNlLnRyaW1FeHRl
bnNpb24oInh5eiIpLCAieHl6Iik7CisgICAgZXF1YWxzKGJhc2UudHJpbUV4dGVuc2lvbigieHku
eiIpLCAieHkiKTsKKyAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCJ4Lnl6IiksICJ4Iik7
CisgICAgZXF1YWxzKGJhc2UudHJpbUV4dGVuc2lvbigieC55LnoiKSwgIngueSIpOworICAgIGVx
dWFscyhiYXNlLnRyaW1FeHRlbnNpb24oIi54eXoiKSwgIiIpOworICAgIGVxdWFscyhiYXNlLnRy
aW1FeHRlbnNpb24oIiIpLCAiIik7Cit9KTsKKwordGVzdCgiam9pblBhdGggd2l0aCBlbXB0eSBw
YXJlbnQiLCAxLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgdmFsdWUgPSBiYXNlLmpvaW5QYXRoKCIi
LCAidGVzdC5odG1sIik7CisgICAgZXF1YWxzKHZhbHVlLCAidGVzdC5odG1sIik7Cit9KTsKKwor
dGVzdCgidW5pcXVpZnlBcnJheSIsIDUsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChiYXNl
LnVuaXF1aWZ5QXJyYXkoW10pLCBbXSk7CisgICAgZGVlcEVxdWFsKGJhc2UudW5pcXVpZnlBcnJh
eShbImEiXSksIFsiYSJdKTsKKyAgICBkZWVwRXF1YWwoYmFzZS51bmlxdWlmeUFycmF5KFsiYSIs
ICJiIl0pLCBbImEiLCAiYiJdKTsKKyAgICBkZWVwRXF1YWwoYmFzZS51bmlxdWlmeUFycmF5KFsi
YSIsICJiIiwgImIiXSksIFsiYSIsICJiIl0pOworICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5
QXJyYXkoWyJhIiwgImIiLCAiYiIsICJhIl0pLCBbImEiLCAiYiJdKTsKK30pOworCit0ZXN0KCJj
YWxsSW5QYXJhbGxlbCIsIDQsIGZ1bmN0aW9uKCkgeworICAgIHZhciBleHBlY3RlZENhbGwgPSBb
dHJ1ZSwgdHJ1ZSwgdHJ1ZV07CisgICAgdmFyIGV4cGVjdENvbXBsZXRpb25DYWxsYmFjayA9IHRy
dWU7CisKKyAgICBiYXNlLmNhbGxJblBhcmFsbGVsKFsKKyAgICAgICAgZnVuY3Rpb24oY2FsbGJh
Y2spIHsKKyAgICAgICAgICAgIG9rKGV4cGVjdGVkQ2FsbFswXSk7CisgICAgICAgICAgICBleHBl
Y3RlZENhbGxbMF0gPSBmYWxzZTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0s
CisgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgICAgICAgICAgICBvayhleHBlY3RlZENh
bGxbMV0pOworICAgICAgICAgICAgZXhwZWN0ZWRDYWxsWzFdID0gZmFsc2U7CisgICAgICAgICAg
ICBjYWxsYmFjaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykgewor
ICAgICAgICAgICAgb2soZXhwZWN0ZWRDYWxsWzJdKTsKKyAgICAgICAgICAgIGV4cGVjdGVkQ2Fs
bFsyXSA9IGZhbHNlOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSwKKyAgICBd
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgb2soZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrKTsKKyAg
ICAgICAgZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrID0gZmFsc2U7CisgICAgfSkKK30pOworCit0
ZXN0KCJjYWxsSW5TZXF1ZW5jZSIsIDcsIGZ1bmN0aW9uKCkgeworICAgIHZhciBleHBlY3RlZEFy
ZyA9IDQyOworICAgIHZhciBleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2sgPSB0cnVlOworCisgICAg
YmFzZS5jYWxsSW5TZXF1ZW5jZShmdW5jdGlvbihhcmcsIGNhbGxiYWNrKSB7CisgICAgICAgIG9r
KGFyZyA8IDQ1KTsKKyAgICAgICAgZXF1YWxzKGFyZywgZXhwZWN0ZWRBcmcrKyk7CisgICAgICAg
IGNhbGxiYWNrKCk7CisgICAgfSwgWzQyLCA0MywgNDRdLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
b2soZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICAgICAgZXhwZWN0Q29tcGxldGlvbkNh
bGxiYWNrID0gZmFsc2U7CisgICAgfSkKK30pOworCit0ZXN0KCJSZXF1ZXN0VHJhY2tlciIsIDUs
IGZ1bmN0aW9uKCkgeworICAgIHZhciByZWFkeSA9IGZhbHNlOworICAgIHZhciB0cmFja2VyID0g
bmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoMSwgZnVuY3Rpb24oKSB7CisgICAgICAgIG9rKHJlYWR5
KTsKKyAgICB9KTsKKyAgICByZWFkeSA9IHRydWU7CisgICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxl
dGUoKTsKKyAgICByZWFkeSA9IGZhbHNlOworCisgICAgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVl
c3RUcmFja2VyKDIsIGZ1bmN0aW9uKHBhcmFtZXRlcikgeworICAgICAgICBvayhyZWFkeSk7Cisg
ICAgICAgIGVxdWFscyhwYXJhbWV0ZXIsICdhcmd1bWVudCcpOworICAgIH0sIFsnYXJndW1lbnQn
XSk7CisgICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKKyAgICByZWFkeSA9IHRydWU7Cisg
ICAgdHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKKyAgICByZWFkeSA9IGZhbHNlOworCisgICAg
dHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKDAsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBvayh0cnVlKTsKKyAgICB9KTsKKyAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOworCisg
ICAgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKDApOworICAgIHRyYWNrZXIucmVx
dWVzdENvbXBsZXRlKCk7CisgICAgLy8gU2hvdWxkIG5vdCBiYXJmLgorICAgIG9rKHRydWUpOwor
fSk7CisKK3Rlc3QoIkNhbGxiYWNrSXRlcmF0b3IiLCAyMiwgZnVuY3Rpb24oKSB7CisgICAgdmFy
IGV4cGVjdGVkID0gMDsKKyAgICB2YXIgaXRlcmF0b3IgPSBuZXcgYmFzZS5DYWxsYmFja0l0ZXJh
dG9yKGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgZXF1YWxzKGEsICdBcmdBJyArIGV4cGVjdGVk
KTsKKyAgICAgICAgZXF1YWxzKGIsICdBcmdCJyArIGV4cGVjdGVkKTsKKyAgICAgICAgKytleHBl
Y3RlZDsKKyAgICB9LCBbCisgICAgICAgIFsnQXJnQTAnLCAnQXJnQjAnXSwKKyAgICAgICAgWydB
cmdBMScsICdBcmdCMSddLAorICAgICAgICBbJ0FyZ0EyJywgJ0FyZ0IyJ10sCisgICAgXSk7Cisg
ICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQorICAgIG9rKCFpdGVyYXRvci5oYXNQcmV2aW91cygp
KQorICAgIGl0ZXJhdG9yLmNhbGxOZXh0KCk7CisgICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQor
ICAgIG9rKCFpdGVyYXRvci5oYXNQcmV2aW91cygpKQorICAgIGl0ZXJhdG9yLmNhbGxOZXh0KCk7
CisgICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQorICAgIG9rKGl0ZXJhdG9yLmhhc1ByZXZpb3Vz
KCkpCisgICAgaXRlcmF0b3IuY2FsbE5leHQoKTsKKyAgICBvayghaXRlcmF0b3IuaGFzTmV4dCgp
KQorICAgIG9rKGl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCisgICAgZXhwZWN0ZWQgPSAxOworICAg
IGl0ZXJhdG9yLmNhbGxQcmV2aW91cygpOworICAgIG9rKGl0ZXJhdG9yLmhhc05leHQoKSkKKyAg
ICBvayhpdGVyYXRvci5oYXNQcmV2aW91cygpKQorICAgIGV4cGVjdGVkID0gMDsKKyAgICBpdGVy
YXRvci5jYWxsUHJldmlvdXMoKTsKKyAgICBvayhpdGVyYXRvci5oYXNOZXh0KCkpCisgICAgb2so
IWl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCit9KTsKKwordGVzdCgiZmlsdGVyVHJlZSIsIDIsIGZ1
bmN0aW9uKCkgeworICAgIHZhciB0cmVlID0geworICAgICAgICAncGF0aCc6IHsKKyAgICAgICAg
ICAgICd0byc6IHsKKyAgICAgICAgICAgICAgICAndGVzdC5odG1sJzogeworICAgICAgICAgICAg
ICAgICAgICAnYWN0dWFsJzogJ1BBU1MnLAorICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQn
OiAnRkFJTCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
J2Fub3RoZXIuaHRtbCc6IHsKKyAgICAgICAgICAgICAgICAnYWN0dWFsJzogJ1RFWFQnLAorICAg
ICAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNMZWFmKG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gISFub2RlLmFjdHVhbDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhY3R1YWxJc1RleHQobm9k
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBub2RlLmFjdHVhbCA9PSAnVEVYVCc7CisgICAgfQor
CisgICAgdmFyIGFsbCA9IGJhc2UuZmlsdGVyVHJlZSh0cmVlLCBpc0xlYWYsIGZ1bmN0aW9uKCkg
eyByZXR1cm4gdHJ1ZSB9KTsKKyAgICBkZWVwRXF1YWwoYWxsLCB7CisgICAgICAgICdwYXRoL3Rv
L3Rlc3QuaHRtbCc6IHsKKyAgICAgICAgICAgICdhY3R1YWwnOiAnUEFTUycsCisgICAgICAgICAg
ICAnZXhwZWN0ZWQnOiAnRkFJTCcKKyAgICAgICAgfSwKKyAgICAgICAgJ3BhdGgvYW5vdGhlci5o
dG1sJzogeworICAgICAgICAgICAgJ2FjdHVhbCc6ICdURVhUJywKKyAgICAgICAgICAgICdleHBl
Y3RlZCc6ICdQQVNTJworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgdGV4dCA9IGJhc2Uu
ZmlsdGVyVHJlZSh0cmVlLCBpc0xlYWYsIGFjdHVhbElzVGV4dCk7CisgICAgZGVlcEVxdWFsKHRl
eHQsIHsKKyAgICAgICAgJ3BhdGgvYW5vdGhlci5odG1sJzogeworICAgICAgICAgICAgJ2FjdHVh
bCc6ICdURVhUJywKKyAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJworICAgICAgICB9Cisg
ICAgfSk7Cit9KTsKKwordGVzdCgiVXBkYXRlVHJhY2tlciIsIDIwLCBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgZGljdDsKKworICAgIGZ1bmN0aW9uIGR1bXBLZXlzKCkKKyAgICB7CisgICAgICAgIHZh
ciB1cGRhdGVzID0gW10KKyAgICAgICAgZGljdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGtleSwg
dXBkYXRlZCkgeworICAgICAgICAgICAgdXBkYXRlcy5wdXNoKGtleSk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm4gdXBkYXRlczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkdW1wVXBkYXRl
ZEtleXMoKQorICAgIHsKKyAgICAgICAgdmFyIHVwZGF0ZXMgPSBbXQorICAgICAgICBkaWN0LmZv
ckVhY2goZnVuY3Rpb24oaXRlbSwga2V5LCB1cGRhdGVkKSB7CisgICAgICAgICAgICB1cGRhdGVk
ICYmIHVwZGF0ZXMucHVzaChrZXkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHVwZGF0
ZXM7CisgICAgfQorCisKKyAgICBkaWN0ID0gbmV3IGJhc2UuVXBkYXRlVHJhY2tlcigpOworICAg
IGRpY3QudXBkYXRlKCI1Iiwge30pOworICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwg
WyI1Il0pOworICAgIGRpY3QudXBkYXRlKCI2Iiwge30pOworICAgIGRpY3QudXBkYXRlKCI3Iiwg
e30pOworICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyI1IiwgIjYiLCAiNyJdKTsK
KyAgICBkZWVwRXF1YWwoZGljdC5nZXQoIjYiKSwge30pOworICAgIG9rKGRpY3QuZXhpc3RzKCI3
IikpOworICAgIGRpY3QucHVyZ2UoKTsKKyAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCks
IFtdKTsKKyAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI1IiwgIjYiLCAiNyJdKTsKKyAgICBk
aWN0LnVwZGF0ZSgiNSIsIHt9KTsKKyAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsi
NSJdKTsKKyAgICBkaWN0LnVwZGF0ZSgiNCIsIHt9KTsKKyAgICBkZWVwRXF1YWwoZHVtcFVwZGF0
ZWRLZXlzKCksIFsiNCIsICI1Il0pOworICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbIjQiLCAi
NSIsICI2IiwgIjciXSk7CisgICAgZGljdC5wdXJnZSgpOworICAgIGRlZXBFcXVhbChkdW1wS2V5
cygpLCBbIjQiLCAiNSJdKTsKKyAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFtdKTsK
KyAgICBkaWN0LnB1cmdlKCk7CisgICAgZGVlcEVxdWFsKGR1bXBLZXlzKCksIFtdKTsKKworICAg
IHZhciByZW1vdmVDb3VudCA9IDA7CisgICAgZGljdC51cGRhdGUoIm9uZSIpOworICAgIGRlZXBF
cXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyJvbmUiXSk7CisgICAgZGljdC51cGRhdGUoInR3byIp
OworICAgIGRlZXBFcXVhbChkdW1wVXBkYXRlZEtleXMoKSwgWyJvbmUiLCAidHdvIl0pOworICAg
IGRpY3QudXBkYXRlKCJ0aHJlZSIpOworICAgIGRpY3QucHVyZ2UoKTsKKyAgICBkZWVwRXF1YWwo
ZHVtcEtleXMoKSwgWyJvbmUiLCAidHdvIiwgInRocmVlIl0pOworICAgIGRpY3QudXBkYXRlKCJ0
d28iKTsKKyAgICBkaWN0LnB1cmdlKGZ1bmN0aW9uKCkgeworICAgICAgICByZW1vdmVDb3VudCsr
OworICAgIH0pOworICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbInR3byJdKTsKKyAgICBlcXVh
bChyZW1vdmVDb3VudCwgMik7CisgICAgZGljdC51cGRhdGUoImZvdXIiKTsKKyAgICB2YXIgcmVt
b3ZlQ291bnRlciA9IHsgY291bnQ6IDAgfTsKKyAgICBkaWN0LnB1cmdlKGZ1bmN0aW9uKCkgewor
ICAgICAgICB0aGlzLmNvdW50Kys7CisgICAgfSwgcmVtb3ZlQ291bnRlcik7CisgICAgZXF1YWwo
cmVtb3ZlQ291bnRlci5jb3VudCwgMSk7CisgICAgZGljdC5wdXJnZShmdW5jdGlvbigpIHsKKyAg
ICAgICAgZXF1YWwoU3RyaW5nKHRoaXMpLCAiZm91ciIpOworICAgIH0pOworCisgICAgZGljdCA9
IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKKyAgICBkaWN0LnVwZGF0ZSgib25lIik7CisgICAg
dmFyIHRoaXNPYmplY3QgPSB7fQorICAgIGRpY3QuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7Cisg
ICAgICAgIGVxdWFsKHRoaXMsIHRoaXNPYmplY3QpOworICAgIH0sIHRoaXNPYmplY3QpOworCit9
KTsKKwordGVzdCgiZXh0ZW5kcyIsIDE3LCBmdW5jdGlvbigpIHsKKworICAgIHZhciBMaWtlRGl2
ID0gYmFzZS5leHRlbmRzKCJkaXYiLCB7CisgICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICJhd2Vzb21lIjsKKyAgICAgICAgfSwKKyAgICAg
ICAgbWV0aG9kOiBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgdmFyIExpa2VMaWtlRGl2ID0gYmFzZS5leHRlbmRzKExpa2VE
aXYsIHsKKyAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aGlzLmNsYXNz
TmFtZSA9ICJsaWtlIjsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIExpa2VQID0gYmFz
ZS5leHRlbmRzKCJwIiwgeworICAgICAgICBpbml0OiBmdW5jdGlvbihjb250ZW50KSB7CisgICAg
ICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gY29udGVudAorICAgICAgICB9CisgICAgfSk7CisK
KyAgICB2YXIgTGlrZVByb2dyZXNzID0gYmFzZS5leHRlbmRzKCJwcm9ncmVzcyIsIHsKKyAgICAg
ICAgaW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aGlzLm1heCA9IDEwMDsKKyAgICAg
ICAgICAgIHRoaXMudmFsdWUgPSAxMDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIExp
a2VMaWtlUHJvZ3Jlc3MgPSBiYXNlLmV4dGVuZHMoTGlrZVByb2dyZXNzLCB7CisgICAgICAgIGNv
bXBsZXRlZDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gMTAwOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ldyBMaWtl
RGl2KCkpOworICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiRElW
Iik7CisgICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmlubmVySFRNTCwgImF3ZXNv
bWUiKTsKKyAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCksIDQyKTsK
KyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHkubGFzdENoaWxkKTsK
KworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3IExpa2VMaWtlRGl2KCkpOworICAg
IGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiRElWIik7CisgICAgZXF1
YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLmlubmVySFRNTCwgImF3ZXNvbWUiKTsKKyAgICBl
cXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCksIDQyKTsKKyAgICBlcXVhbHMo
ZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuY2xhc3NOYW1lLCAibGlrZSIpOworICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOworCisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChuZXcgTGlrZVAoInN1cGVyIikpOworICAgIGVxdWFscyhkb2N1
bWVudC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiUCIpOworICAgIGVxdWFscyhkb2N1bWVudC5i
b2R5Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJzdXBlciIpOworICAgIHJhaXNlcyhmdW5jdGlvbigp
IHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQubWV0aG9kKCk7CisgICAgfSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZCk7CisK
KyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ldyBMaWtlUHJvZ3Jlc3MoKSk7CisgICAg
ZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLnRhZ05hbWUsICJQUk9HUkVTUyIpOworICAg
IGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5wb3NpdGlvbiwgMC4xKTsKKyAgICBlcXVh
bHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuaW5uZXJIVE1MLCAiIik7CisgICAgcmFpc2VzKGZ1
bmN0aW9uKCkgeworICAgICAgICBkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5tZXRob2QoKTsKKyAg
ICB9KTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHkubGFzdENo
aWxkKTsKKworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3IExpa2VMaWtlUHJvZ3Jl
c3MoKSk7CisgICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLnRhZ05hbWUsICJQUk9H
UkVTUyIpOworICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5wb3NpdGlvbiwgMC4x
KTsKKyAgICBkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5jb21wbGV0ZWQoKTsKKyAgICBlcXVhbHMo
ZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQucG9zaXRpb24sIDEpOworICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOworfSk7CisKK3Rlc3QoInJlbGF0
aXZpemVUaW1lIiwgMTEsIGZ1bmN0aW9uKCkgeworICAgIHZhciB0aW1lID0gbmV3IERhdGUoKTsK
KyAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIkp1c3Qgbm93Iik7CisgICAg
dGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMSk7CisgICAgZXF1YWxzKGJhc2Uu
cmVsYXRpdml6ZVRpbWUodGltZSksICIxIG1pbnV0ZSBhZ28iKTsKKyAgICB0aW1lLnNldE1pbnV0
ZXModGltZS5nZXRNaW51dGVzKCkgLSAxKTsKKyAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGlt
ZSh0aW1lKSwgIjIgbWludXRlcyBhZ28iKTsKKyAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRN
aW51dGVzKCkgLSAxKTsKKyAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjMg
bWludXRlcyBhZ28iKTsKKyAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSA1
Nik7CisgICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICI1OSBtaW51dGVzIGFn
byIpOworICAgIHRpbWUuc2V0TWludXRlcyh0aW1lLmdldE1pbnV0ZXMoKSAtIDEpOworICAgIGVx
dWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMSBob3VyIGFnbyIpOworICAgIHRpbWUu
c2V0SG91cnModGltZS5nZXRIb3VycygpIC0gMSk7CisgICAgZXF1YWxzKGJhc2UucmVsYXRpdml6
ZVRpbWUodGltZSksICIyIGhvdXJzIGFnbyIpOworICAgIHRpbWUuc2V0SG91cnModGltZS5nZXRI
b3VycygpIC0gMjEpOworICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMjMg
aG91cnMgYWdvIik7CisgICAgdGltZS5zZXRIb3Vycyh0aW1lLmdldEhvdXJzKCkgLSAxKTsKKyAg
ICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjEgZGF5IGFnbyIpOworICAgIHRp
bWUuc2V0RGF0ZSh0aW1lLmdldERhdGUoKSAtIDEpOworICAgIGVxdWFscyhiYXNlLnJlbGF0aXZp
emVUaW1lKHRpbWUpLCAiMiBkYXlzIGFnbyIpOworICAgIHRpbWUuc2V0RGF0ZSh0aW1lLmdldERh
dGUoKSAtIDk5OCk7CisgICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIxMDAw
IGRheXMgYWdvIik7Cit9KQorCit9KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
YnVnemlsbGFfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL2J1Z3ppbGxhX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9idWd6aWxsYV91bml0dGVzdHMuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9idWd6aWxsYV91bml0dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uICgpIHsKKworbW9kdWxlKCJidWd6aWxsYSIp
OworCit2YXIga0V4YW1wbGVSZXNwb25zZVhNTCA9CisgICAgJzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IlVURi04Ij8+JyArCisgICAgJzxmZWVkIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDA1L0F0b20iPicgKworICAgICcgIDx0aXRsZT5CdWd6aWxsYSBCdWdzPC90aXRsZT4nICsK
KyAgICAnICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0idGV4dC9odG1sIicgKworICAgICcg
ICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0
dXM9UkVPUEVORUQmYW1wO2J1Z19zdGF0dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFTU0lHTkVEJmFt
cDtidWdfc3RhdHVzPVVOQ09ORklSTUVEJmFtcDtmaWVsZC0xLTAtMD1idWdfc3RhdHVzJmFtcDtm
aWVsZDAtMC0wPXByb2R1Y3QmYW1wO2ZpZWxkMC0wLTE9Y29tcG9uZW50JmFtcDtmaWVsZDAtMC0y
PXNob3J0X2Rlc2MmYW1wO2ZpZWxkMC0wLTM9c3RhdHVzX3doaXRlYm9hcmQmYW1wO2ZpZWxkMC0w
LTQ9bG9uZ2Rlc2MmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7cmVtYWN0aW9uPSZhbXA7
dHlwZS0xLTAtMD1hbnlleGFjdCZhbXA7dHlwZTAtMC0wPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0x
PXN1YnN0cmluZyZhbXA7dHlwZTAtMC0yPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0zPXN1YnN0cmlu
ZyZhbXA7dHlwZTAtMC00PXN1YnN0cmluZyZhbXA7dmFsdWUtMS0wLTA9UkVPUEVORUQlMkNORVcl
MkNBU1NJR05FRCUyQ1VOQ09ORklSTUVEJmFtcDt2YWx1ZTAtMC0wPWdhcmRlbi1vLW1hdGljJmFt
cDt2YWx1ZTAtMC0xPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0yPWdhcmRlbi1vLW1hdGlj
JmFtcDt2YWx1ZTAtMC0zPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC00PWdhcmRlbi1vLW1h
dGljIi8+JyArCisgICAgJyAgPGxpbmsgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9t
K3htbCInICsKKyAgICAnICAgICAgICBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9idWds
aXN0LmNnaT9idWdfc3RhdHVzPVJFT1BFTkVEJmFtcDtidWdfc3RhdHVzPU5FVyZhbXA7YnVnX3N0
YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1VTkNPTkZJUk1FRCZhbXA7Y3R5cGU9YXRvbSZh
bXA7ZmllbGQtMS0wLTA9YnVnX3N0YXR1cyZhbXA7ZmllbGQwLTAtMD1wcm9kdWN0JmFtcDtmaWVs
ZDAtMC0xPWNvbXBvbmVudCZhbXA7ZmllbGQwLTAtMj1zaG9ydF9kZXNjJmFtcDtmaWVsZDAtMC0z
PXN0YXR1c193aGl0ZWJvYXJkJmFtcDtmaWVsZDAtMC00PWxvbmdkZXNjJmFtcDtxdWVyeV9mb3Jt
YXQ9YWR2YW5jZWQmYW1wO3JlbWFjdGlvbj0mYW1wO3R5cGUtMS0wLTA9YW55ZXhhY3QmYW1wO3R5
cGUwLTAtMD1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMT1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMj1z
dWJzdHJpbmcmYW1wO3R5cGUwLTAtMz1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtND1zdWJzdHJpbmcm
YW1wO3ZhbHVlLTEtMC0wPVJFT1BFTkVEJTJDTkVXJTJDQVNTSUdORUQlMkNVTkNPTkZJUk1FRCZh
bXA7dmFsdWUwLTAtMD1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMT1nYXJkZW4tby1tYXRp
YyZhbXA7dmFsdWUwLTAtMj1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMz1nYXJkZW4tby1t
YXRpYyZhbXA7dmFsdWUwLTAtND1nYXJkZW4tby1tYXRpYyIvPicgKworICAgICcgIDx1cGRhdGVk
PjIwMTEtMDgtMDRUMDA6MjI6NDlaPC91cGRhdGVkPicgKworICAgICcgIDxpZD5odHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9idWdsaXN0LmNnaT9idWdfc3RhdHVzPVJFT1BFTkVEJmFtcDtidWdfc3Rh
dHVzPU5FVyZhbXA7YnVnX3N0YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1VTkNPTkZJUk1F
RCZhbXA7Y3R5cGU9YXRvbSZhbXA7ZmllbGQtMS0wLTA9YnVnX3N0YXR1cyZhbXA7ZmllbGQwLTAt
MD1wcm9kdWN0JmFtcDtmaWVsZDAtMC0xPWNvbXBvbmVudCZhbXA7ZmllbGQwLTAtMj1zaG9ydF9k
ZXNjJmFtcDtmaWVsZDAtMC0zPXN0YXR1c193aGl0ZWJvYXJkJmFtcDtmaWVsZDAtMC00PWxvbmdk
ZXNjJmFtcDtxdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYW1wO3JlbWFjdGlvbj0mYW1wO3R5cGUtMS0w
LTA9YW55ZXhhY3QmYW1wO3R5cGUwLTAtMD1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMT1zdWJzdHJp
bmcmYW1wO3R5cGUwLTAtMj1zdWJzdHJpbmcmYW1wO3R5cGUwLTAtMz1zdWJzdHJpbmcmYW1wO3R5
cGUwLTAtND1zdWJzdHJpbmcmYW1wO3ZhbHVlLTEtMC0wPVJFT1BFTkVEJTJDTkVXJTJDQVNTSUdO
RUQlMkNVTkNPTkZJUk1FRCZhbXA7dmFsdWUwLTAtMD1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUw
LTAtMT1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtMj1nYXJkZW4tby1tYXRpYyZhbXA7dmFs
dWUwLTAtMz1nYXJkZW4tby1tYXRpYyZhbXA7dmFsdWUwLTAtND1nYXJkZW4tby1tYXRpYzwvaWQ+
JyArCisgICAgJycgKworICAgICcgIDxlbnRyeT4nICsKKyAgICAnICAgIDx0aXRsZT5bQnVnIDY1
NjU0XSBBZGQgbWlzc2luZyBsaWNlbnNlIGJsb2NrcyB0byBnYXJkZW4tby1tYXRpYzwvdGl0bGU+
JyArCisgICAgJyAgICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0idGV4dC9odG1sIicgKwor
ICAgICcgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NjU0Ii8+JyArCisgICAgJyAgICA8aWQ+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1NjU0PC9pZD4nICsKKyAgICAnICAgIDxhdXRob3I+JyArCisgICAgJyAg
ICAgIDxuYW1lPkFkYW0gQmFydGg8L25hbWU+JyArCisgICAgJyAgICA8L2F1dGhvcj4nICsKKyAg
ICAnICAgIDx1cGRhdGVkPjIwMTEtMDgtMDRUMDA6MjI6MjZaPC91cGRhdGVkPiAnICsKKyAgICAn
ICAgIDxzdW1tYXJ5IHR5cGU9Imh0bWwiPicgKworICAgICcgICAgICAnICsKKyAgICAnICAgICAg
Jmx0O3RhYmxlJmd0OycgKworICAgICcgICAgICAmbHQ7dHImZ3Q7JyArCisgICAgJyAgICAgICAg
Jmx0O3RoJmd0O0ZpZWxkJmx0Oy90aCZndDsmbHQ7dGgmZ3Q7VmFsdWUmbHQ7L3RoJmd0OycgKwor
ICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Byb2R1Y3Qm
cXVvdDsmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0O1Byb2R1Y3QmbHQ7L3RkJmd0Oycg
KworICAgICcgICAgICAgICZsdDt0ZCZndDtXZWJLaXQmbHQ7L3RkJmd0OycgKworICAgICcgICAg
ICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NvbXBvbmVudCZxdW90OyZn
dDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Q29tcG9uZW50Jmx0Oy90ZCZndDsnICsKKyAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7TmV3IEJ1Z3MmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAm
bHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2Fzc2lnbmVlJnF1b3Q7Jmd0Oycg
KworICAgICcgICAgICAgICZsdDt0ZCZndDtBc3NpZ25lZSZsdDsvdGQmZ3Q7JyArCisgICAgJyAg
ICAgICAgJmx0O3RkJmd0O0FkYW0gQmFydGgmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAmbHQ7
L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3JlcG9ydGVyJnF1b3Q7Jmd0OycgKwor
ICAgICcgICAgICAgICZsdDt0ZCZndDtSZXBvcnRlciZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAg
ICAgJmx0O3RkJmd0O0FkYW0gQmFydGgmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAmbHQ7L3Ry
Jmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2J1Z19zdGF0dXMmcXVvdDsmZ3Q7JyArCisg
ICAgJyAgICAgICAgJmx0O3RkJmd0O1N0YXR1cyZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICAg
Jmx0O3RkJmd0O05FVyZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3Ry
IGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVzb2x1dGlvbiZxdW90OyZndDsnICsKKyAgICAnICAgICAg
ICAmbHQ7dGQmZ3Q7UmVzb2x1dGlvbiAmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAgICZsdDt0
ZCZndDsmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0m
cXVvdDtiel9mZWVkX3ByaW9yaXR5JnF1b3Q7Jmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZn
dDtQcmlvcml0eSZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0O1AyJmx0Oy90
ZCZndDsnICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVl
ZF9zZXZlcml0eSZxdW90OyZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7U2V2ZXJpdHkg
Jmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Tm9ybWFsJmx0Oy90ZCZndDsn
ICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jcmVh
dGlvbl9kYXRlJnF1b3Q7Jmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtPcGVuZWQmbHQ7
L3RkJmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDsxNjoyMTo1MiZsdDsvdGQmZ3Q7JyAr
CisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY2hhbmdl
ZF9kYXRlJnF1b3Q7Jmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtDaGFuZ2VkJmx0Oy90
ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTY6MjI6MjYmbHQ7L3RkJmd0OycgKwor
ICAgICcgICAgICAmbHQ7L3RyJmd0OycgKworICAgICcgICAgICAmbHQ7L3RhYmxlJmd0OycgKwor
ICAgICcgICAgPC9zdW1tYXJ5PicgKworICAgICcgIDwvZW50cnk+JyArCisgICAgJyAgPGVudHJ5
PicgKworICAgICcgICAgPHRpdGxlPltCdWcgNjU2NTNdIGdhcmRlbi1vLW1hdGljIG5lZWRzIGEg
d2F5IHRvIG1vY2sgb3V0IHRoZSBuZXR3b3JrPC90aXRsZT4nICsKKyAgICAnICAgIDxsaW5rIHJl
bD0iYWx0ZXJuYXRlIiB0eXBlPSJ0ZXh0L2h0bWwiJyArCisgICAgJyAgICAgICAgICBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTMiLz4nICsKKyAgICAn
ICAgIDxpZD5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTM8L2lk
PicgKworICAgICcgICAgPGF1dGhvcj4nICsKKyAgICAnICAgICAgPG5hbWU+QWRhbSBCYXJ0aDwv
bmFtZT4nICsKKyAgICAnICAgIDwvYXV0aG9yPicgKworICAgICcgICAgPHVwZGF0ZWQ+MjAxMS0w
OC0wNFQwMDoyMjo0OVo8L3VwZGF0ZWQ+ICcgKworICAgICcgICAgPHN1bW1hcnkgdHlwZT0iaHRt
bCI+JyArCisgICAgJyAgICAgICcgKworICAgICcgICAgICAmbHQ7dGFibGUmZ3Q7JyArCisgICAg
JyAgICAgICZsdDt0ciZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGgmZ3Q7RmllbGQmbHQ7L3Ro
Jmd0OyZsdDt0aCZndDtWYWx1ZSZsdDsvdGgmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7
Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcHJvZHVjdCZxdW90OyZndDsnICsKKyAgICAnICAg
ICAgICAmbHQ7dGQmZ3Q7UHJvZHVjdCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3Rk
Jmd0O1dlYktpdCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNs
YXNzPSZxdW90O2J6X2ZlZWRfY29tcG9uZW50JnF1b3Q7Jmd0OycgKworICAgICcgICAgICAgICZs
dDt0ZCZndDtDb21wb25lbnQmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtO
ZXcgQnVncyZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNz
PSZxdW90O2J6X2ZlZWRfYXNzaWduZWUmcXVvdDsmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3Rk
Jmd0O0Fzc2lnbmVlJmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBC
YXJ0aCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZx
dW90O2J6X2ZlZWRfcmVwb3J0ZXImcXVvdDsmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0
O1JlcG9ydGVyJmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0
aCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90
O2J6X2ZlZWRfYnVnX3N0YXR1cyZxdW90OyZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
U3RhdHVzJmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TkVXJmx0Oy90ZCZn
dDsnICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9y
ZXNvbHV0aW9uJnF1b3Q7Jmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtSZXNvbHV0aW9u
ICZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0OyZsdDsvdGQmZ3Q7JyArCisg
ICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcHJpb3JpdHkm
cXVvdDsmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0O1ByaW9yaXR5Jmx0Oy90ZCZndDsn
ICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UDImbHQ7L3RkJmd0OycgKworICAgICcgICAgICAm
bHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3NldmVyaXR5JnF1b3Q7Jmd0Oycg
KworICAgICcgICAgICAgICZsdDt0ZCZndDtTZXZlcml0eSAmbHQ7L3RkJmd0OycgKworICAgICcg
ICAgICAgICZsdDt0ZCZndDtOb3JtYWwmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAmbHQ7L3Ry
Jmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NyZWF0aW9uX2RhdGUmcXVvdDsmZ3Q7JyAr
CisgICAgJyAgICAgICAgJmx0O3RkJmd0O09wZW5lZCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAg
ICAgJmx0O3RkJmd0OzE2OjE2OjQ0Jmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgJmx0Oy90ciZn
dDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jaGFuZ2VkX2RhdGUmcXVvdDsmZ3Q7JyArCisg
ICAgJyAgICAgICAgJmx0O3RkJmd0O0NoYW5nZWQmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAg
ICZsdDt0ZCZndDsxNjoyMjo0OSZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7
JyArCisgICAgJyAgICAgICZsdDsvdGFibGUmZ3Q7JyArCisgICAgJyAgICA8L3N1bW1hcnk+JyAr
CisgICAgJyAgPC9lbnRyeT4nICsKKyAgICAnICA8ZW50cnk+JyArCisgICAgJyAgICA8dGl0bGU+
W0J1ZyA2NTY1MF0gVXNlIGZhaWx1cmVJbmZvIG1vcmUgcGVydmFzaXZlbHkgaW4gZ2FyZGVuLW8t
bWF0aWM8L3RpdGxlPicgKworICAgICcgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9InRl
eHQvaHRtbCInICsKKyAgICAnICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTY1MCIvPicgKworICAgICcgICAgPGlkPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1MDwvaWQ+JyArCisgICAgJyAgICA8YXV0aG9y
PicgKworICAgICcgICAgICA8bmFtZT5BZGFtIEJhcnRoPC9uYW1lPicgKworICAgICcgICAgPC9h
dXRob3I+JyArCisgICAgJyAgICA8dXBkYXRlZD4yMDExLTA4LTAzVDIzOjQwOjM0WjwvdXBkYXRl
ZD4gJyArCisgICAgJyAgICA8c3VtbWFyeSB0eXBlPSJodG1sIj4nICsKKyAgICAnICAgICAgJyAr
CisgICAgJyAgICAgICZsdDt0YWJsZSZndDsnICsKKyAgICAnICAgICAgJmx0O3RyJmd0OycgKwor
ICAgICcgICAgICAgICZsdDt0aCZndDtGaWVsZCZsdDsvdGgmZ3Q7Jmx0O3RoJmd0O1ZhbHVlJmx0
Oy90aCZndDsnICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7Ynpf
ZmVlZF9wcm9kdWN0JnF1b3Q7Jmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtQcm9kdWN0
Jmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7V2ViS2l0Jmx0Oy90ZCZndDsn
ICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jb21w
b25lbnQmcXVvdDsmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0O0NvbXBvbmVudCZsdDsv
dGQmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0O05ldyBCdWdzJmx0Oy90ZCZndDsnICsK
KyAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9hc3NpZ25l
ZSZxdW90OyZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QXNzaWduZWUmbHQ7L3RkJmd0
OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKKyAg
ICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXBvcnRlciZx
dW90OyZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVwb3J0ZXImbHQ7L3RkJmd0Oycg
KworICAgICcgICAgICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKKyAgICAn
ICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9idWdfc3RhdHVzJnF1
b3Q7Jmd0OycgKworICAgICcgICAgICAgICZsdDt0ZCZndDtTdGF0dXMmbHQ7L3RkJmd0OycgKwor
ICAgICcgICAgICAgICZsdDt0ZCZndDtORVcmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAmbHQ7
L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Jlc29sdXRpb24mcXVvdDsmZ3Q7JyAr
CisgICAgJyAgICAgICAgJmx0O3RkJmd0O1Jlc29sdXRpb24gJmx0Oy90ZCZndDsnICsKKyAgICAn
ICAgICAgICAmbHQ7dGQmZ3Q7Jmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsm
bHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9wcmlvcml0eSZxdW90OyZndDsnICsKKyAgICAnICAg
ICAgICAmbHQ7dGQmZ3Q7UHJpb3JpdHkmbHQ7L3RkJmd0OycgKworICAgICcgICAgICAgICZsdDt0
ZCZndDtQMiZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNz
PSZxdW90O2J6X2ZlZWRfc2V2ZXJpdHkmcXVvdDsmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3Rk
Jmd0O1NldmVyaXR5ICZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0O05vcm1h
bCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90
O2J6X2ZlZWRfY3JlYXRpb25fZGF0ZSZxdW90OyZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQm
Z3Q7T3BlbmVkJmx0Oy90ZCZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTU6MzU6NTUm
bHQ7L3RkJmd0OycgKworICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDti
el9mZWVkX2NoYW5nZWRfZGF0ZSZxdW90OyZndDsnICsKKyAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
Q2hhbmdlZCZsdDsvdGQmZ3Q7JyArCisgICAgJyAgICAgICAgJmx0O3RkJmd0OzE1OjQwOjM0Jmx0
Oy90ZCZndDsnICsKKyAgICAnICAgICAgJmx0Oy90ciZndDsnICsKKyAgICAnICAgICAgJmx0Oy90
YWJsZSZndDsnICsKKyAgICAnICAgIDwvc3VtbWFyeT4nICsKKyAgICAnICA8L2VudHJ5PicgKwor
ICAgICc8L2ZlZWQ+JworCit0ZXN0KCJxdWlja1NlYXJjaCIsIDMsIGZ1bmN0aW9uKCkgeworICAg
IHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOworCisgICAgdmFyIHJlcXVl
c3RlZFVSTHMgPSBbXTsKKyAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOworICAgICAgICBzaW11
bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBwYXJz
ZXIgPSBuZXcgRE9NUGFyc2VyKCk7CisgICAgICAgICAgICB2YXIgcmVzcG9uc2VET00gPSBwYXJz
ZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlUmVzcG9uc2VYTUwsICJhcHBsaWNhdGlvbi94bWwi
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBidWd6aWxs
YS5xdWlja1NlYXJjaCgnZ2FyZGVuLW8tbWF0aWMnLCBmdW5jdGlvbihidWdzKSB7CisgICAgICAg
ICAgICBkZWVwRXF1YWwoYnVncywgW3sKKyAgICAgICAgICAgICAgICAidGl0bGUiOiAiW0J1ZyA2
NTY1NF0gQWRkIG1pc3NpbmcgbGljZW5zZSBibG9ja3MgdG8gZ2FyZGVuLW8tbWF0aWMiLAorICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NjU0IiwKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogIk5FVyIKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICAidGl0bGUiOiAiW0J1ZyA2NTY1M10gZ2FyZGVuLW8tbWF0
aWMgbmVlZHMgYSB3YXkgdG8gbW9jayBvdXQgdGhlIG5ldHdvcmsiLAorICAgICAgICAgICAgICAg
ICJ1cmwiOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUzIiwK
KyAgICAgICAgICAgICAgICAic3RhdHVzIjogIk5FVyIKKyAgICAgICAgICAgIH0sIHsKKyAgICAg
ICAgICAgICAgICAidGl0bGUiOiAiW0J1ZyA2NTY1MF0gVXNlIGZhaWx1cmVJbmZvIG1vcmUgcGVy
dmFzaXZlbHkgaW4gZ2FyZGVuLW8tbWF0aWMiLAorICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUwIiwKKyAgICAgICAgICAg
ICAgICAic3RhdHVzIjogIk5FVyIKKyAgICAgICAgICAgIH1dKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKKyAgICBkZWVwRXF1YWwocmVxdWVzdGVkVVJMcywgWworICAgICAgICAiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvYnVnbGlzdC5jZ2k/Y3R5cGU9cnNzJm9yZGVyPWJ1Z3MuYnVnX2lkK2Rl
c2MmcXVpY2tzZWFyY2g9Z2FyZGVuLW8tbWF0aWMiLAorICAgIF0pOworfSk7CisKK3Rlc3QoImlz
T3BlblN0YXR1cyIsIDYsIGZ1bmN0aW9uKCkgeworICAgIG9rKGJ1Z3ppbGxhLmlzT3BlblN0YXR1
cygnVU5DT05GSVJNRUQnKSk7CisgICAgb2soYnVnemlsbGEuaXNPcGVuU3RhdHVzKCdORVcnKSk7
CisgICAgb2soYnVnemlsbGEuaXNPcGVuU3RhdHVzKCdBU1NJR05FRCcpKTsKKyAgICBvayhidWd6
aWxsYS5pc09wZW5TdGF0dXMoJ1JFT1BFTkVEJykpOworICAgIG9rKCFidWd6aWxsYS5pc09wZW5T
dGF0dXMoJ0ZJWEVEJykpOworICAgIG9rKCFidWd6aWxsYS5pc09wZW5TdGF0dXMoJ1ZFUklGSUVE
JykpOworfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVy
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVycy5qcwko
cmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9idWlsZGVycy5qczo5MzI1NCkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK3ZhciBidWlsZGVycyA9IGJ1aWxkZXJzIHx8
IHt9OworCisoZnVuY3Rpb24oKSB7CisKK3ZhciBrQ2hyb21pdW1CdWlsZEJvdFVSTCA9ICdodHRw
Oi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0JzsKKwordmFyIGtVcGRhdGVT
dGVwTmFtZSA9ICd1cGRhdGUnOwordmFyIGtVcGRhdGVTY3JpcHRzU3RlcE5hbWUgPSAndXBkYXRl
X3NjcmlwdHMnOwordmFyIGtDb21waWxlU3RlcE5hbWUgPSAnY29tcGlsZSc7CisKK2Z1bmN0aW9u
IHVybEZvckJ1aWxkSW5mbyhidWlsZGVyTmFtZSwgYnVpbGROdW1iZXIpCit7CisgICAgcmV0dXJu
IGtDaHJvbWl1bUJ1aWxkQm90VVJMICsgJy9qc29uL2J1aWxkZXJzLycgKyBlbmNvZGVVUklDb21w
b25lbnQoYnVpbGRlck5hbWUpICsgJy9idWlsZHMvJyArIGVuY29kZVVSSUNvbXBvbmVudChidWls
ZE51bWJlcik7Cit9CisKK2Z1bmN0aW9uIGlzU3RlcFJlcXVyZWRGb3JUZXN0Q292ZXJhZ2Uoc3Rl
cCkKK3sKKyAgICBzd2l0Y2goc3RlcC5uYW1lKSB7CisgICAgY2FzZSBrVXBkYXRlU3RlcE5hbWU6
CisgICAgY2FzZSBrVXBkYXRlU2NyaXB0c1N0ZXBOYW1lOgorICAgIGNhc2Uga0NvbXBpbGVTdGVw
TmFtZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30KKworZnVuY3Rpb24gZGlkRmFpbChzdGVwKQoreworICAgIC8vIEZJ
WE1FOiBJcyB0aGlzIHRoZSBjb3JyZWN0IHdheSB0byB0ZXN0IGZvciBmYWlsdXJlPworICAgIHJl
dHVybiBzdGVwLnJlc3VsdHNbMF0gPiAwOworfQorCitmdW5jdGlvbiBkaWRGYWlsU3RlcFJlcXVy
ZWRGb3JUZXN0Q292ZXJhZ2UoYnVpbGRJbmZvKQoreworICAgIHJldHVybiBidWlsZEluZm8uc3Rl
cHMuZmlsdGVyKGlzU3RlcFJlcXVyZWRGb3JUZXN0Q292ZXJhZ2UpLmZpbHRlcihkaWRGYWlsKS5s
ZW5ndGggPiAwOworfQorCitmdW5jdGlvbiBtb3N0UmVjZW50Q29tcGxldGVkQnVpbGROdW1iZXIo
aW5kaXZpZHVhbEJ1aWxkZXJTdGF0dXMpCit7CisgICAgaWYgKCFpbmRpdmlkdWFsQnVpbGRlclN0
YXR1cykKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICBmb3IgKHZhciBpID0gaW5kaXZpZHVh
bEJ1aWxkZXJTdGF0dXMuY2FjaGVkQnVpbGRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Cisg
ICAgICAgIHZhciBidWlsZE51bWJlciA9IGluZGl2aWR1YWxCdWlsZGVyU3RhdHVzLmNhY2hlZEJ1
aWxkc1tpXTsKKyAgICAgICAgaWYgKGluZGl2aWR1YWxCdWlsZGVyU3RhdHVzLmN1cnJlbnRCdWls
ZHMuaW5kZXhPZihidWlsZE51bWJlcikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gYnVpbGRO
dW1iZXI7CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7Cit9CisKK3ZhciBnX2J1aWxkSW5mb0Nh
Y2hlID0gbmV3IGJhc2UuQXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykg
eworICAgIHZhciBleHBsb2RlZEtleSA9IGtleS5zcGxpdCgnXG4nKTsKKyAgICBuZXQuZ2V0KHVy
bEZvckJ1aWxkSW5mbyhleHBsb2RlZEtleVswXSwgZXhwbG9kZWRLZXlbMV0pLCBjYWxsYmFjayk7
Cit9KTsKKworZnVuY3Rpb24gZmV0Y2hNb3N0UmVjZW50QnVpbGRJbmZvQnlCdWlsZGVyKGNhbGxi
YWNrKQoreworICAgIHZhciBidWlsZEluZm9CeUJ1aWxkZXIgPSB7fTsKKyAgICB2YXIgcmVxdWVz
dFRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcihjb25maWcua0J1aWxkZXJzLmxlbmd0
aCwgY2FsbGJhY2ssIFtidWlsZEluZm9CeUJ1aWxkZXJdKTsKKyAgICBuZXQuZ2V0KGtDaHJvbWl1
bUJ1aWxkQm90VVJMICsgJy9qc29uL2J1aWxkZXJzJywgZnVuY3Rpb24oYnVpbGRlclN0YXR1cykg
eworICAgICAgICAkLmVhY2goY29uZmlnLmtCdWlsZGVycywgZnVuY3Rpb24oaW5kZXgsIGJ1aWxk
ZXJOYW1lKSB7CisgICAgICAgICAgICB2YXIgYnVpbGROdW1iZXIgPSBtb3N0UmVjZW50Q29tcGxl
dGVkQnVpbGROdW1iZXIoYnVpbGRlclN0YXR1c1tidWlsZGVyTmFtZV0pOworICAgICAgICAgICAg
aWYgKCFidWlsZE51bWJlcikgeworICAgICAgICAgICAgICAgIGJ1aWxkSW5mb0J5QnVpbGRlclti
dWlsZGVyTmFtZV0gPSBudWxsOworICAgICAgICAgICAgICAgIHJlcXVlc3RUcmFja2VyLnJlcXVl
c3RDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZ19idWlsZEluZm9DYWNoZS5nZXQoYnVpbGRlck5hbWUgKyAnXG4nICsgYnVp
bGROdW1iZXIsIGZ1bmN0aW9uKGJ1aWxkSW5mbykgeworICAgICAgICAgICAgICAgIGJ1aWxkSW5m
b0J5QnVpbGRlcltidWlsZGVyTmFtZV0gPSBidWlsZEluZm87CisgICAgICAgICAgICAgICAgcmVx
dWVzdFRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK2J1aWxkZXJzLmJ1aWxkZXJzRmFpbGluZ1N0ZXBSZXF1cmVkRm9y
VGVzdENvdmVyYWdlID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgZmV0Y2hNb3N0UmVjZW50
QnVpbGRJbmZvQnlCdWlsZGVyKGZ1bmN0aW9uKGJ1aWxkSW5mb0J5QnVpbGRlcikgeworICAgICAg
ICB2YXIgYnVpbGRlck5hbWVMaXN0ID0gW107CisgICAgICAgICQuZWFjaChidWlsZEluZm9CeUJ1
aWxkZXIsIGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCBidWlsZEluZm8pIHsKKyAgICAgICAgICAgIGlm
ICghYnVpbGRJbmZvKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChk
aWRGYWlsU3RlcFJlcXVyZWRGb3JUZXN0Q292ZXJhZ2UoYnVpbGRJbmZvKSkKKyAgICAgICAgICAg
ICAgICBidWlsZGVyTmFtZUxpc3QucHVzaChidWlsZGVyTmFtZSk7CisgICAgICAgIH0pOworICAg
ICAgICBjYWxsYmFjayhidWlsZGVyTmFtZUxpc3QpOworICAgIH0pOworfTsKKworfSkoKTsKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMuanMJKHJl
dmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvYnVpbGRlcnNfdW5pdHRlc3RzLmpz
OjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVpbGRlcnNfdW5pdHRlc3RzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyhmdW5jdGlv
biAoKSB7CisKK21vZHVsZSgiYnVpbGRlcnMiKTsKKwordmFyIGtFeGFtcGxlQnVpbGRlclN0YXR1
c0pTT04gPSAgeworICAgICJXZWJraXQgTGludXgiOiB7CisgICAgICAgICJiYXNlZGlyIjogIldl
YmtpdF9MaW51eCIsCisgICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0NTksIDExNDYwLCAxMTQ2
MSwgMTE0NjJdLAorICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBsaW51eCBsYXRlc3QiLAor
ICAgICAgICAiY3VycmVudEJ1aWxkcyI6IFsxMTQ2Ml0sCisgICAgICAgICJwZW5kaW5nQnVpbGRz
IjogMCwKKyAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwKKyAgICAgICAgInN0YXRlIjog
ImJ1aWxkaW5nIgorICAgIH0sCisgICAgIldlYmtpdCBNYWMxMC42IChDRykiOiB7CisgICAgICAg
ICJiYXNlZGlyIjogIldlYmtpdF9MaW51eCIsCisgICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0
NTksIDExNDYwLCAxMTQ2MSwgMTE0NjJdLAorICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBs
aW51eCBsYXRlc3QiLAorICAgICAgICAiY3VycmVudEJ1aWxkcyI6IFsxMTQ2MSwgMTE0NjJdLAor
ICAgICAgICAicGVuZGluZ0J1aWxkcyI6IDAsCisgICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0x
Il0sCisgICAgICAgICJzdGF0ZSI6ICJidWlsZGluZyIKKyAgICB9LAorfTsKKwordmFyIGtFeGFt
cGxlQnVpbGRJbmZvSlNPTiA9IHsKKyAgICAiYmxhbWUiOiBbImFiYXJ0aEB3ZWJraXQub3JnIl0s
CisgICAgImJ1aWxkZXJOYW1lIjogIldlYmtpdCBMaW51eCIsCisgICAgImNoYW5nZXMiOiBbIkZp
bGVzOlxuIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzXG4gVG9vbHMvQ2hhbmdlTG9nXG5BdDogVGh1
IDA0IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xuQ29t
bWVudHM6IEZpeCB0eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAg
KEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2Rl
LilcblxuKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczpQcm9wZXJ0aWVzOiBcblxuXG4iLCAiRmlsZXM6XG4g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmdcbiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1o
b3Jpem9udGFsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVk
LnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hh
ZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNh
bC1leHBlY3RlZC5wbmdcbkF0OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5nZWQgQnk6
IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogVXBkYXRlIGJhc2VsaW5lcyBhZnRlciA8aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDA+LlxuXG4qIHBsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nOlxu
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jp
em9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWlu
dC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVy
dGljYWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6UHJvcGVydGllczogXG5cblxu
Il0sCisgICAgImN1cnJlbnRTdGVwIjogbnVsbCwKKyAgICAiZXRhIjogbnVsbCwKKyAgICAibG9n
cyI6IFsKKyAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3Vw
ZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXSwKKyAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlvIl0sCisgICAgICAgIFsic3RkaW8i
LCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dl
YmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9jb21waWxlL2xvZ3Mvc3RkaW8iXSwKKyAg
ICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Vi
a2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3Rlc3Rfc2hlbGxf
dGVzdHMvbG9ncy9zdGRpbyJdLAorICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMv
MTE0NjEvc3RlcHMvd2Via2l0X3VuaXRfdGVzdHMvbG9ncy9zdGRpbyJdLAorICAgICAgICBbInN0
ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVy
cy9XZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X3Rlc3RzL2xvZ3Mvc3Rk
aW8iXSwKKyAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2Fy
Y2hpdmVfd2Via2l0X3Rlc3RzX3Jlc3VsdHMvbG9ncy9zdGRpbyJdLAorICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X2dwdV90ZXN0cy9sb2dzL3N0
ZGlvIl0sCisgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2No
cm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9h
cmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KKyAgICBdLAorICAg
ICJudW1iZXIiOiAxMTQ2MSwKKyAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgWyJibGFtZWxp
c3QiLCBbImFiYXJ0aEB3ZWJraXQub3JnIl0sICJCdWlsZCJdLAorICAgICAgICBbImJyYW5jaCIs
ICJ0cnVuayIsICJCdWlsZCJdLAorICAgICAgICBbImJ1aWxkZXJuYW1lIiwgIldlYmtpdCBMaW51
eCIsICJCdWlsZCJdLAorICAgICAgICBbImJ1aWxkbnVtYmVyIiwgMTE0NjEsICJCdWlsZCJdLAor
ICAgICAgICBbImdvdF9yZXZpc2lvbiIsICI5NTM5NSIsICJTb3VyY2UiXSwKKyAgICAgICAgWyJn
b3Rfd2Via2l0X3JldmlzaW9uIiwgIjkyMzU4IiwgIlNvdXJjZSJdLAorICAgICAgICBbImd0ZXN0
X2ZpbHRlciIsIG51bGwsICJGYWN0b3J5Il0sCisgICAgICAgIFsibWFzdGVybmFtZSIsICJjaHJv
bWl1bS53ZWJraXQiLCAibWFzdGVyLmNmZyJdLAorICAgICAgICBbInJldmlzaW9uIiwgIjkyMzU4
IiwgIkJ1aWxkIl0sCisgICAgICAgIFsic2NoZWR1bGVyIiwgInM2X3dlYmtpdF9yZWwiLCAiU2No
ZWR1bGVyIl0sCisgICAgICAgIFsic2xhdmVuYW1lIiwgInZtMTI0LW0xIiwgIkJ1aWxkU2xhdmUi
XQorICAgIF0sCisgICAgInJlYXNvbiI6ICIiLAorICAgICJyZXF1ZXN0cyI6IFt7CisgICAgICAg
ICJidWlsZGVyTmFtZSI6ICJXZWJraXQgTGludXgiLAorICAgICAgICAiYnVpbGRzIjogWzExNDYx
XSwKKyAgICAgICAgInNvdXJjZSI6IHsKKyAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAor
ICAgICAgICAgICAgImNoYW5nZXMiOiBbeworICAgICAgICAgICAgICAgICJicmFuY2giOiAidHJ1
bmsiLAorICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCisgICAgICAgICAgICAgICAg
ImNvbW1lbnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVy
YWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRo
ZSBjb2RlLilcblxuKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoiLAorICAgICAgICAgICAgICAgICJmaWxl
cyI6IFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCisgICAg
ICAgICAgICAgICAgIm51bWJlciI6IDQzNzA3LAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVz
IjogW10sCisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKKyAgICAgICAgICAgICAg
ICAicmV2aXNpb24iOiAiOTIzNTciLAorICAgICAgICAgICAgICAgICJyZXZsaW5rIjogImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU3IiwKKyAgICAgICAgICAgICAgICAid2hl
biI6IDEzMTI0NDQyMzguODU1MDgxLAorICAgICAgICAgICAgICAgICJ3aG8iOiAiYWJhcnRoQHdl
YmtpdC5vcmciCisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0
cnVuayIsCisgICAgICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKKyAgICAgICAgICAgICAg
ICAiY29tbWVudHMiOiAiVXBkYXRlIGJhc2VsaW5lcyBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIzNDA+LlxuXG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2Jv
eC1zaGFkb3cvaW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJv
bWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVk
LnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlw
bGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1t
YWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQu
cG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBs
ZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6IiwKKyAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIkxh
eW91dFRlc3RzL0NoYW5nZUxvZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1o
b3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3Rl
ZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0
aWNhbC1leHBlY3RlZC5wbmciXSwKKyAgICAgICAgICAgICAgICAibnVtYmVyIjogNDM3MDgsCisg
ICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKKyAgICAgICAgICAgICAgICAicmVwb3Np
dG9yeSI6ICIiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIsCisgICAgICAg
ICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIz
NTgiLAorICAgICAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTU1MzgsCisgICAgICAg
ICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIKKyAgICAgICAgICAgIH1dLAorICAg
ICAgICAgICAgImhhc1BhdGNoIjogZmFsc2UsCisgICAgICAgICAgICAicmV2aXNpb24iOiAiOTIz
NTgiCisgICAgICAgIH0sCisgICAgICAgICJzdWJtaXR0ZWRBdCI6IDEzMTI0NDQyOTguOTg5ODE4
CisgICAgfV0sCisgICAgInJlc3VsdHMiOiAyLAorICAgICJzbGF2ZSI6ICJ2bTEyNC1tMSIsCisg
ICAgInNvdXJjZVN0YW1wIjogeworICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKKyAgICAgICAg
ImNoYW5nZXMiOiBbeworICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCisgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiBudWxsLAorICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4g
IFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xu
YWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
bWFpbi5qczoiLAorICAgICAgICAgICAgImZpbGVzIjogWyJUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5q
cyIsICJUb29scy9DaGFuZ2VMb2ciXSwKKyAgICAgICAgICAgICJudW1iZXIiOiA0MzcwNywKKyAg
ICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCisgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIi
LAorICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU3IiwKKyAgICAgICAgICAgICJyZXZsaW5r
IjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU3IiwKKyAgICAgICAgICAg
ICJ3aGVuIjogMTMxMjQ0NDIzOC44NTUwODEsCisgICAgICAgICAgICAid2hvIjogImFiYXJ0aEB3
ZWJraXQub3JnIgorICAgICAgICB9LCB7CisgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwK
KyAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWVudHMiOiAi
VXBkYXRlIGJhc2VsaW5lcyBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
OTIzNDA+LlxuXG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQt
Ym94LXNoYWRvd3MtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9y
ZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZv
cm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6
b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBl
Y3RlZC5wbmc6IiwKKyAgICAgICAgICAgICJmaWxlcyI6IFsiTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5z
ZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQu
cG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hh
ZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtdmVydGljYWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZyJd
LAorICAgICAgICAgICAgIm51bWJlciI6IDQzNzA4LAorICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbXSwKKyAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCisgICAgICAgICAgICAicmV2aXNp
b24iOiAiOTIzNTgiLAorICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIzNTgiLAorICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1
NTUzOCwKKyAgICAgICAgICAgICJ3aG8iOiAiYWJhcnRoQHdlYmtpdC5vcmciCisgICAgICAgIH1d
LAorICAgICAgICAiaGFzUGF0Y2giOiBmYWxzZSwKKyAgICAgICAgInJldmlzaW9uIjogIjkyMzU4
IgorICAgIH0sCisgICAgInN0ZXBzIjogW3sKKyAgICAgICAgImV0YSI6IG51bGwsCisgICAgICAg
ICJleHBlY3RhdGlvbnMiOiBbCisgICAgICAgICAgICBbIm91dHB1dCIsIDIyOTcsIDIzMDAuNjU3
MTAxNDA4Mzc4NF0KKyAgICAgICAgXSwKKyAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAorICAg
ICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKKyAgICAgICAgImxvZ3MiOiBbCisgICAgICAgICAgICBb
InN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWls
ZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRlX3NjcmlwdHMvbG9n
cy9zdGRpbyJdCisgICAgICAgIF0sCisgICAgICAgICJuYW1lIjogInVwZGF0ZV9zY3JpcHRzIiwK
KyAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAorICAgICAgICAic3RhdGlzdGljcyI6IHt9LAor
ICAgICAgICAic3RlcF9udW1iZXIiOiAwLAorICAgICAgICAidGV4dCI6IFsidXBkYXRlX3Njcmlw
dHMiXSwKKyAgICAgICAgInRpbWVzIjogWzEzMTI0NDQyOTkuMTAyODM0LCAxMzEyNDQ0MzA5LjI3
MDMyNF0sCisgICAgICAgICJ1cmxzIjoge30KKyAgICB9LCB7CisgICAgICAgICJldGEiOiBudWxs
LAorICAgICAgICAiZXhwZWN0YXRpb25zIjogWworICAgICAgICAgICAgWyJvdXRwdXQiLCAyMDQ1
MywgMTc1ODAuNTAwMjM4OTY0NV0KKyAgICAgICAgXSwKKyAgICAgICAgImlzRmluaXNoZWQiOiB0
cnVlLAorICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKKyAgICAgICAgImxvZ3MiOiBbCisgICAg
ICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53
ZWJraXRidWlsZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRlL2xv
Z3Mvc3RkaW8iXQorICAgICAgICBdLAorICAgICAgICAibmFtZSI6ICJ1cGRhdGUiLAorICAgICAg
ICAicmVzdWx0cyI6IFswLCBbXV0sCisgICAgICAgICJzdGF0aXN0aWNzIjoge30sCisgICAgICAg
ICJzdGVwX251bWJlciI6IDEsCisgICAgICAgICJ0ZXh0IjogWyJ1cGRhdGUiLCAicjk1Mzk1Iiwg
IndlYmtpdCByOTIzNTgiXSwKKyAgICAgICAgInRpbWVzIjogWzEzMTI0NDQzMDkuMjcwNzYzLCAx
MzEyNDQ0Mzk4LjQ2ODEzOV0sCisgICAgICAgICJ1cmxzIjoge30KKyAgICB9LCB7CisgICAgICAg
ICJldGEiOiBudWxsLAorICAgICAgICAiZXhwZWN0YXRpb25zIjogWworICAgICAgICAgICAgWyJv
dXRwdXQiLCAxNzMxNiwgMjY1Mi40ODUwNDk5NTg5NDU2XQorICAgICAgICBdLAorICAgICAgICAi
aXNGaW5pc2hlZCI6IHRydWUsCisgICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAorICAgICAgICAi
bG9ncyI6IFsKKyAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYmtpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9z
dGVwcy9jb21waWxlL2xvZ3Mvc3RkaW8iXQorICAgICAgICBdLAorICAgICAgICAibmFtZSI6ICJj
b21waWxlIiwKKyAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAorICAgICAgICAic3RhdGlzdGlj
cyI6IHt9LAorICAgICAgICAic3RlcF9udW1iZXIiOiAyLAorICAgICAgICAidGV4dCI6IFsiY29t
cGlsZSJdLAorICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDM5OC40Njg1NSwgMTMxMjQ0NDQ0MS42
ODgzOF0sCisgICAgICAgICJ1cmxzIjoge30KKyAgICB9LCB7CisgICAgICAgICJldGEiOiBudWxs
LAorICAgICAgICAiZXhwZWN0YXRpb25zIjogWworICAgICAgICAgICAgWyJvdXRwdXQiLCA5MTk4
MCwgOTIwMDIuMTI2MjgzMjUyNTFdCisgICAgICAgIF0sCisgICAgICAgICJpc0ZpbmlzaGVkIjog
dHJ1ZSwKKyAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCisgICAgICAgICJsb2dzIjogWworICAg
ICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
d2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3Rlc3Rfc2hl
bGxfdGVzdHMvbG9ncy9zdGRpbyJdCisgICAgICAgIF0sCisgICAgICAgICJuYW1lIjogInRlc3Rf
c2hlbGxfdGVzdHMiLAorICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCisgICAgICAgICJzdGF0
aXN0aWNzIjoge30sCisgICAgICAgICJzdGVwX251bWJlciI6IDMsCisgICAgICAgICJ0ZXh0Ijog
WyJ0ZXN0X3NoZWxsX3Rlc3RzIiwgIjEgZGlzYWJsZWQiLCAiMiBmbGFreSJdLAorICAgICAgICAi
dGltZXMiOiBbMTMxMjQ0NDQ0MS42ODg3NTYsIDEzMTI0NDQ0NTEuNzQ5MDhdLAorICAgICAgICAi
dXJscyI6IHt9CisgICAgfSwgeworICAgICAgICAiZXRhIjogbnVsbCwKKyAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKKyAgICAgICAgICAgIFsib3V0cHV0IiwgMjA3NzIsIDIwNzcyLjYzODUwMzQ0
MzA4Nl0KKyAgICAgICAgXSwKKyAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAorICAgICAgICAi
aXNTdGFydGVkIjogdHJ1ZSwKKyAgICAgICAgImxvZ3MiOiBbCisgICAgICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X3VuaXRfdGVzdHMvbG9ncy9z
dGRpbyJdCisgICAgICAgIF0sCisgICAgICAgICJuYW1lIjogIndlYmtpdF91bml0X3Rlc3RzIiwK
KyAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAorICAgICAgICAic3RhdGlzdGljcyI6IHt9LAor
ICAgICAgICAic3RlcF9udW1iZXIiOiA0LAorICAgICAgICAidGV4dCI6IFsid2Via2l0X3VuaXRf
dGVzdHMiLCAiMSBkaXNhYmxlZCJdLAorICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDQ1MS43NDk1
NzQsIDEzMTI0NDQ0NTIuMzA2MTQzXSwKKyAgICAgICAgInVybHMiOiB7fQorICAgIH0sIHsKKyAg
ICAgICAgImV0YSI6IG51bGwsCisgICAgICAgICJleHBlY3RhdGlvbnMiOiBbCisgICAgICAgICAg
ICBbIm91dHB1dCIsIDI0Nzc0MDYsIDI0OTg5MTUuNjE0NjI3NTQ5NF0KKyAgICAgICAgXSwKKyAg
ICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAorICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKKyAg
ICAgICAgImxvZ3MiOiBbCisgICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMv
MTE0NjEvc3RlcHMvd2Via2l0X3Rlc3RzL2xvZ3Mvc3RkaW8iXQorICAgICAgICBdLAorICAgICAg
ICAibmFtZSI6ICJ3ZWJraXRfdGVzdHMiLAorICAgICAgICAicmVzdWx0cyI6IFsyLCBbIndlYmtp
dF90ZXN0cyJdXSwKKyAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKKyAgICAgICAgInN0ZXBfbnVt
YmVyIjogNSwKKyAgICAgICAgInRleHQiOiBbIndlYmtpdF90ZXN0cyIsICIyMDE0IGZpeGFibGUi
LCAiKDM3MCBza2lwcGVkKSIsICJmYWlsZWQgMSIsICI8ZGl2IGNsYXNzPVwiQnVpbGRSZXN1bHRJ
bmZvXCI+IiwgIjxhIGhyZWY9XCJodHRwOi8vdGVzdC1yZXN1bHRzLmFwcHNwb3QuY29tL2Rhc2hi
b2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sI21hc3Rlcj1DaHJvbWl1bVdlYmtpdCZ0ZXN0
cz1mYXN0L2JveC1zaGFkb3cvYm94LXNoYWRvdy1jbGlwcGVkLXNsaWNlcy5odG1sXCI+IiwgIjxh
YmJyIHRpdGxlPVwiZmFzdC9ib3gtc2hhZG93L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRt
bFwiPmJveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rp
dj4iXSwKKyAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTIuMzA2Njk1LCAxMzEyNDQ0NzY4Ljg4
ODI2Nl0sCisgICAgICAgICJ1cmxzIjoge30KKyAgICB9LCB7CisgICAgICAgICJldGEiOiBudWxs
LAorICAgICAgICAiZXhwZWN0YXRpb25zIjogWworICAgICAgICAgICAgWyJvdXRwdXQiLCAyNjY4
ODQ1LCAyNjcyNzQ2LjM3MjM2MzI1NF0KKyAgICAgICAgXSwKKyAgICAgICAgImlzRmluaXNoZWQi
OiB0cnVlLAorICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKKyAgICAgICAgImxvZ3MiOiBbCisg
ICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS53ZWJraXRidWlsZGVycy9XZWJraXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2
ZV93ZWJraXRfdGVzdHNfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KKyAgICAgICAgXSwKKyAgICAgICAg
Im5hbWUiOiAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVzdWx0cyIsCisgICAgICAgICJyZXN1bHRz
IjogWzAsIFtdXSwKKyAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKKyAgICAgICAgInN0ZXBfbnVt
YmVyIjogNiwKKyAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0cyByZXN1bHRz
Il0sCisgICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0NzY4Ljg4ODc0NiwgMTMxMjQ0NDc4MS40NDQz
OTldLAorICAgICAgICAidXJscyI6IHsKKyAgICAgICAgICAgICJsYXlvdXQgdGVzdCByZXN1bHRz
IjogImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvYnVpbGRib3QvbGF5b3V0X3Rlc3RfcmVzdWx0
cy9XZWJraXRfTGludXhcci85NTM5NVxyTm9uZSIKKyAgICAgICAgfQorICAgIH0sIHsKKyAgICAg
ICAgImV0YSI6IG51bGwsCisgICAgICAgICJleHBlY3RhdGlvbnMiOiBbCisgICAgICAgICAgICBb
Im91dHB1dCIsIDIxMDk1OCwgMjA4MTM4LjQ5NjUxODI5OTNdCisgICAgICAgIF0sCisgICAgICAg
ICJpc0ZpbmlzaGVkIjogdHJ1ZSwKKyAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCisgICAgICAg
ICJsb2dzIjogWworICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYx
L3N0ZXBzL3dlYmtpdF9ncHVfdGVzdHMvbG9ncy9zdGRpbyJdCisgICAgICAgIF0sCisgICAgICAg
ICJuYW1lIjogIndlYmtpdF9ncHVfdGVzdHMiLAorICAgICAgICAicmVzdWx0cyI6IFsyLCBbIndl
YmtpdF9ncHVfdGVzdHMiXV0sCisgICAgICAgICJzdGF0aXN0aWNzIjoge30sCisgICAgICAgICJz
dGVwX251bWJlciI6IDcsCisgICAgICAgICJ0ZXh0IjogWyJ3ZWJraXRfZ3B1X3Rlc3RzIiwgIjE0
OCBmaXhhYmxlIiwgIigyNCBza2lwcGVkKSIsICJmYWlsZWQgMSIsICI8ZGl2IGNsYXNzPVwiQnVp
bGRSZXN1bHRJbmZvXCI+IiwgIjxhIGhyZWY9XCJodHRwOi8vdGVzdC1yZXN1bHRzLmFwcHNwb3Qu
Y29tL2Rhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sI21hc3Rlcj1DaHJvbWl1bVdl
YmtpdCZ0ZXN0cz1jb21wb3NpdGluZy9zY2FsaW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1s
XCI+IiwgIjxhYmJyIHRpdGxlPVwiY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1
cnNpb24uaHRtbFwiPnRpbGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sPC9hYmJyPiIsICI8L2E+Iiwg
IjwvZGl2PiJdLAorICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDc4MS40NDQ5MDMsIDEzMTI0NDQ5
NjYuODU2MDc0XSwKKyAgICAgICAgInVybHMiOiB7fQorICAgIH0sIHsKKyAgICAgICAgImV0YSI6
IG51bGwsCisgICAgICAgICJleHBlY3RhdGlvbnMiOiBbCisgICAgICAgICAgICBbIm91dHB1dCIs
IDE0ODgyNSwgMTQ3ODIyLjEwNzQyNzcwNzJdCisgICAgICAgIF0sCisgICAgICAgICJpc0Zpbmlz
aGVkIjogdHJ1ZSwKKyAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCisgICAgICAgICJsb2dzIjog
WworICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2Via2l0YnVpbGRlcnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2Fy
Y2hpdmVfd2Via2l0X3Rlc3RzX2dwdV9yZXN1bHRzL2xvZ3Mvc3RkaW8iXQorICAgICAgICBdLAor
ICAgICAgICAibmFtZSI6ICJhcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cyIsCisgICAg
ICAgICJyZXN1bHRzIjogWzAsIFtdXSwKKyAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKKyAgICAg
ICAgInN0ZXBfbnVtYmVyIjogOCwKKyAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90
ZXN0cyBncHUgcmVzdWx0cyJdLAorICAgICAgICAidGltZXMiOiBbMTMxMjQ0NDk2Ni44NTY1NzUs
IDEzMTI0NDQ5NzAuNDU4NjU1XSwKKyAgICAgICAgInVybHMiOiB7CisgICAgICAgICAgICAibGF5
b3V0IHRlc3QgZ3B1IHJlc3VsdHMiOiAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJv
dC9sYXlvdXRfdGVzdF9yZXN1bHRzL1dlYmtpdF9MaW51eF8tX0dQVVxyLzk1Mzk1XHJOb25lIgor
ICAgICAgICB9CisgICAgfV0sCisgICAgInRleHQiOiBbImZhaWxlZCIsICJ3ZWJraXRfdGVzdHMi
LCAid2Via2l0X2dwdV90ZXN0cyJdLAorICAgICJ0aW1lcyI6IFsxMzEyNDQ0Mjk5LjEwMjE2LCAx
MzEyNDQ0OTcwLjQ1OTEzOF0KK307CisKK3Rlc3QoImJ1aWxkZXJzRmFpbGluZ1N0ZXBSZXF1cmVk
Rm9yVGVzdENvdmVyYWdlIiwgMywgZnVuY3Rpb24oKSB7CisgICAgdmFyIHNpbXVsYXRvciA9IG5l
dyBOZXR3b3JrU2ltdWxhdG9yKCk7CisKKyAgICB2YXIgZmFpbGluZ0J1aWxkSW5mb0pTT04gPSBK
U09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlQnVpbGRJbmZvSlNPTikpOworICAgIGZh
aWxpbmdCdWlsZEluZm9KU09OLm51bWJlciA9IDExNDYwOworICAgIGZhaWxpbmdCdWlsZEluZm9K
U09OLnN0ZXBzWzJdLnJlc3VsdHNbMF0gPSAxOworCisgICAgdmFyIHJlcXVlc3RlZFVSTHMgPSBb
XTsKKyAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOworICAgICAgICBzaW11bGF0b3Iuc2NoZWR1
bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICgvXC9qc29uXC9idWlsZGVy
cyQvLmV4ZWModXJsKSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhrRXhhbXBsZUJ1aWxkZXJT
dGF0dXNKU09OKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKC9XZWJraXQlMjBMaW51eC8uZXhlYyh1
cmwpKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGtFeGFtcGxlQnVpbGRJbmZvSlNPTik7Cisg
ICAgICAgICAgICBlbHNlIGlmICgvV2Via2l0JTIwTWFjMTBcLjYlMjBcKENHXCkvLmV4ZWModXJs
KSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWlsaW5nQnVpbGRJbmZvSlNPTik7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvayhmYWxzZSwgIlVuZXhwZWN0ZWQgVVJM
OiAiICsgdXJsKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICB9OworCisgICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7
CisgICAgICAgIGJ1aWxkZXJzLmJ1aWxkZXJzRmFpbGluZ1N0ZXBSZXF1cmVkRm9yVGVzdENvdmVy
YWdlKGZ1bmN0aW9uKGJ1aWxkZXJOYW1lTGlzdCkgeworICAgICAgICAgICAgZGVlcEVxdWFsKGJ1
aWxkZXJOYW1lTGlzdCwgWyJXZWJraXQgTWFjMTAuNiAoQ0cpIl0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGRlZXBFcXVhbChyZXF1ZXN0ZWRVUkxzLCBbCisgICAgICAiaHR0cDovL2J1
aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC9qc29uL2J1aWxkZXJzIiwKKyAgICAg
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRl
cnMvV2Via2l0JTIwTGludXgvYnVpbGRzLzExNDYxIiwKKyAgICAgICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMvV2Via2l0JTIwTWFjMTAu
NiUyMChDRykvYnVpbGRzLzExNDYwIiwKKyAgICBdKTsKK30pOworCit9KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvY2hlY2tvdXQuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvY2hlY2tvdXQuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9j
aGVja291dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K3ZhciBjaGVja291dCA9IGNoZWNrb3V0IHx8IHt9OworCisoZnVuY3Rpb24oKSB7CisKK3ZhciBr
V2ViS2l0VHJ1bmsgPSAnaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3Ry
dW5rLyc7CisKK2NoZWNrb3V0LnN1YnZlcnNpb25VUkxGb3JUZXN0ID0gZnVuY3Rpb24odGVzdE5h
bWUpCit7CisgICAgcmV0dXJuIGtXZWJLaXRUcnVuayArICdMYXlvdXRUZXN0cy8nICsgdGVzdE5h
bWU7Cit9OworCitjaGVja291dC5pc0F2YWlsYWJsZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorewor
ICAgIG5ldC5hamF4KHsKKyAgICAgICAgdXJsOiBjb25maWcua0xvY2FsU2VydmVyVVJMICsgJy9w
aW5nJywKKyAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayh0cnVlKTsKKyAgICAgICAgfSwKKyAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICB9LAorICAgIH0pOworfTsKKworY2hlY2tv
dXQudXBkYXRlRXhwZWN0YXRpb25zID0gZnVuY3Rpb24oZmFpbHVyZUluZm9MaXN0LCBjYWxsYmFj
aykKK3sKKyAgICBuZXQucG9zdChjb25maWcua0xvY2FsU2VydmVyVVJMICsgJy91cGRhdGVleHBl
Y3RhdGlvbnMnLCBKU09OLnN0cmluZ2lmeShmYWlsdXJlSW5mb0xpc3QpLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK307CisKK2NoZWNrb3V0Lm9wdGltaXplQmFz
ZWxpbmVzID0gZnVuY3Rpb24odGVzdE5hbWUsIGNhbGxiYWNrKQoreworICAgIG5ldC5wb3N0KGNv
bmZpZy5rTG9jYWxTZXJ2ZXJVUkwgKyAnL29wdGltaXplYmFzZWxpbmVzPycgKyAkLnBhcmFtKHsK
KyAgICAgICAgJ3Rlc3QnOiB0ZXN0TmFtZSwKKyAgICB9KSwgZnVuY3Rpb24oKSB7CisgICAgICAg
IGNhbGxiYWNrKCk7CisgICAgfSk7Cit9OworCitjaGVja291dC5yZWJhc2VsaW5lID0gZnVuY3Rp
b24oZmFpbHVyZUluZm9MaXN0LCBjYWxsYmFjaykKK3sKKyAgICBiYXNlLmNhbGxJblNlcXVlbmNl
KGZ1bmN0aW9uKGZhaWx1cmVJbmZvLCBjYWxsYmFjaykgeworICAgICAgICB2YXIgZXh0ZW5zaW9u
TGlzdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGZhaWx1cmVJbmZvLmZhaWx1
cmVUeXBlTGlzdC5tYXAocmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0ZW5zaW9uTGlzdCkpOworICAg
ICAgICBiYXNlLmNhbGxJblNlcXVlbmNlKGZ1bmN0aW9uKGV4dGVuc2lvbiwgY2FsbGJhY2spIHsK
KyAgICAgICAgICAgIG5ldC5wb3N0KGNvbmZpZy5rTG9jYWxTZXJ2ZXJVUkwgKyAnL3JlYmFzZWxp
bmU/JyArICQucGFyYW0oeworICAgICAgICAgICAgICAgICdidWlsZGVyJzogZmFpbHVyZUluZm8u
YnVpbGRlck5hbWUsCisgICAgICAgICAgICAgICAgJ3Rlc3QnOiBmYWlsdXJlSW5mby50ZXN0TmFt
ZSwKKyAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uJzogZXh0ZW5zaW9uCisgICAgICAgICAgICB9
KSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9LCBleHRlbnNpb25MaXN0LCBjYWxsYmFjayk7CisgICAgfSwgZmFpbHVy
ZUluZm9MaXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHRlc3ROYW1lTGlzdCA9IGJhc2Uu
dW5pcXVpZnlBcnJheShmYWlsdXJlSW5mb0xpc3QubWFwKGZ1bmN0aW9uKGZhaWx1cmVJbmZvKSB7
IHJldHVybiBmYWlsdXJlSW5mby50ZXN0TmFtZTsgfSkpOworICAgICAgICBiYXNlLmNhbGxJblNl
cXVlbmNlKGNoZWNrb3V0Lm9wdGltaXplQmFzZWxpbmVzLCB0ZXN0TmFtZUxpc3QsIGNhbGxiYWNr
KTsKKyAgICB9KTsKK307CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9j
aGVja291dF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL2NoZWNrb3V0X3VuaXR0ZXN0cy5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL2NoZWNrb3V0X3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisoZnVuY3Rpb24gKCkgeworCittb2R1bGUoImNoZWNrb3V0Iik7
CisKK3Rlc3QoInN1YnZlcnNpb25VUkxGb3JUZXN0IiwgMSwgZnVuY3Rpb24oKSB7CisgICAgZXF1
YWxzKGNoZWNrb3V0LnN1YnZlcnNpb25VUkxGb3JUZXN0KCJwYXRoL3RvL3Rlc3QuaHRtbCIpLCAi
aHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3Rz
L3BhdGgvdG8vdGVzdC5odG1sIik7Cit9KTsKKwordGVzdCgidXBkYXRlRXhwZWN0YXRpb25zIiwg
NCwgZnVuY3Rpb24oKSB7CisgICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9y
KCk7CisgICAgc2ltdWxhdG9yLnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgZXF1YWxzKHVybCwgJ2h0dHA6Ly8xMjcuMC4wLjE6ODEyNy91cGRhdGVl
eHBlY3RhdGlvbnMnKTsKKyAgICAgICAgZXF1YWxzKGRhdGEsICdbeyJidWlsZGVyTmFtZSI6Ildl
YktpdCBMaW51eCIsInRlc3ROYW1lIjoiYW5vdGhlci90ZXN0LnN2ZyIsImZhaWx1cmVUeXBlTGlz
dCI6WyJJTUFHRSJdfV0nKTsKKyAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soY2Fs
bGJhY2spOworICAgIH07CisKKyAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKKyAg
ICAgICAgY2hlY2tvdXQudXBkYXRlRXhwZWN0YXRpb25zKFt7CisgICAgICAgICAgICAnYnVpbGRl
ck5hbWUnOiAnV2ViS2l0IExpbnV4JywKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6ICdhbm90aGVy
L3Rlc3Quc3ZnJywKKyAgICAgICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiBbJ0lNQUdFJ10sCisg
ICAgICAgIH1dLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG9rKHRydWUpOworICAgICAgICB9
KTsKKyAgICB9KTsKK30pOworCit0ZXN0KCJvcHRpbWl6ZUJhc2VsaW5lcyIsIDMsIGZ1bmN0aW9u
KCkgeworICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOworICAgIHNp
bXVsYXRvci5wb3N0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGVx
dWFscyh1cmwsICdodHRwOi8vMTI3LjAuMC4xOjgxMjcvb3B0aW1pemViYXNlbGluZXM/dGVzdD1h
bm90aGVyJTJGdGVzdC5zdmcnKTsKKyAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2so
Y2FsbGJhY2spOworICAgIH07CisKKyAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsK
KyAgICAgICAgY2hlY2tvdXQub3B0aW1pemVCYXNlbGluZXMoJ2Fub3RoZXIvdGVzdC5zdmcnLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIG9rKHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30pOworCit0ZXN0KCJyZWJhc2VsaW5lIiwgMywgZnVuY3Rpb24oKSB7CisgICAgdmFyIHNpbXVs
YXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7CisKKyAgICB2YXIgcmVxdWVzdGVkVVJMcyA9
IFtdOworICAgIHNpbXVsYXRvci5wb3N0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOworICAgICAgICBzaW11bGF0b3Iuc2No
ZWR1bGVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgfTsKKworICAgIHNpbXVsYXRvci5ydW5UZXN0
KGZ1bmN0aW9uKCkgeworICAgICAgICBjaGVja291dC5yZWJhc2VsaW5lKFt7CisgICAgICAgICAg
ICAnYnVpbGRlck5hbWUnOiAnV2ViS2l0IExpbnV4JywKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6
ICdhbm90aGVyL3Rlc3Quc3ZnJywKKyAgICAgICAgICAgICdmYWlsdXJlVHlwZUxpc3QnOiBbJ0lN
QUdFJ10sCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICdidWlsZGVyTmFtZSc6ICdXZWJLaXQg
TWFjMTAuNicsCisgICAgICAgICAgICAndGVzdE5hbWUnOiAnYW5vdGhlci90ZXN0LnN2ZycsCisg
ICAgICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogWydJTUFHRStURVhUJ10sCisgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICdidWlsZGVyTmFtZSc6ICdXZWJraXQgVmlzdGEnLAorICAgICAgICAg
ICAgJ3Rlc3ROYW1lJzogJ2Zhc3QvdGVzdC5odG1sJywKKyAgICAgICAgICAgICdmYWlsdXJlVHlw
ZUxpc3QnOiBbJ1RFWFQnXSwKKyAgICAgICAgfV0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
b2sodHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVlcEVxdWFsKHJlcXVlc3Rl
ZFVSTHMsIFsKKyAgICAgICAgImh0dHA6Ly8xMjcuMC4wLjE6ODEyNy9yZWJhc2VsaW5lP2J1aWxk
ZXI9V2ViS2l0K0xpbnV4JnRlc3Q9YW5vdGhlciUyRnRlc3Quc3ZnJmV4dGVuc2lvbj1wbmciLAor
ICAgICAgICAiaHR0cDovLzEyNy4wLjAuMTo4MTI3L3JlYmFzZWxpbmU/YnVpbGRlcj1XZWJLaXQr
TWFjMTAuNiZ0ZXN0PWFub3RoZXIlMkZ0ZXN0LnN2ZyZleHRlbnNpb249dHh0IiwKKyAgICAgICAg
Imh0dHA6Ly8xMjcuMC4wLjE6ODEyNy9yZWJhc2VsaW5lP2J1aWxkZXI9V2ViS2l0K01hYzEwLjYm
dGVzdD1hbm90aGVyJTJGdGVzdC5zdmcmZXh0ZW5zaW9uPXBuZyIsCisgICAgICAgICJodHRwOi8v
MTI3LjAuMC4xOjgxMjcvcmViYXNlbGluZT9idWlsZGVyPVdlYmtpdCtWaXN0YSZ0ZXN0PWZhc3Ql
MkZ0ZXN0Lmh0bWwmZXh0ZW5zaW9uPXR4dCIsCisgICAgICAgICJodHRwOi8vMTI3LjAuMC4xOjgx
Mjcvb3B0aW1pemViYXNlbGluZXM/dGVzdD1hbm90aGVyJTJGdGVzdC5zdmciLAorICAgICAgICAi
aHR0cDovLzEyNy4wLjAuMTo4MTI3L29wdGltaXplYmFzZWxpbmVzP3Rlc3Q9ZmFzdCUyRnRlc3Qu
aHRtbCIKKyAgICBdKTsKK30pOworCit9KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvY29uZmlnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZp
Zy5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb25maWcuanM6OTMy
NTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2YXIgY29uZmlnID0gY29uZmlnIHx8IHt9
OworCisoZnVuY3Rpb24oKSB7CisKK2NvbmZpZy5rQnVpbGRlcnMgPSBbCisgICAgJ1dlYmtpdCBX
aW4nLAorICAgICdXZWJraXQgVmlzdGEnLAorICAgICdXZWJraXQgV2luNycsCisgICAgJ1dlYmtp
dCBXaW4gKGRiZykoMSknLAorICAgICdXZWJraXQgV2luIChkYmcpKDIpJywKKyAgICAnV2Via2l0
IExpbnV4JywKKyAgICAnV2Via2l0IExpbnV4IDMyJywKKyAgICAnV2Via2l0IExpbnV4IChkYmcp
KDEpJywKKyAgICAnV2Via2l0IExpbnV4IChkYmcpKDIpJywKKyAgICAnV2Via2l0IE1hYzEwLjUg
KENHKScsCisgICAgJ1dlYmtpdCBNYWMxMC41IChDRykoZGJnKSgxKScsCisgICAgJ1dlYmtpdCBN
YWMxMC41IChDRykoZGJnKSgyKScsCisgICAgJ1dlYmtpdCBNYWMxMC42IChDRyknLAorICAgICdX
ZWJraXQgTWFjMTAuNiAoQ0cpKGRiZyknLAorXTsKKworY29uZmlnLmtCdWlsZGVyc1RoYXRPbmx5
Q29tcGlsZSA9IFsKKyAgICAnV2Via2l0IFdpbiBCdWlsZGVyJywKKyAgICAnV2Via2l0IFdpbiBC
dWlsZGVyIChkYmcpJywKKyAgICAvLyBGSVhNRTogV2hlcmUgaXMgdGhlIExpbnV4IEJ1aWxkZXI/
CisgICAgJ1dlYmtpdCBNYWMgQnVpbGRlcicsCisgICAgJ1dlYmtpdCBNYWMgQnVpbGRlciAoZGJn
KScsCisgICAgJ1dpbiBCdWlsZGVyJywKKyAgICAnTWFjIENsYW5nIEJ1aWxkZXIgKGRiZyknLAor
XTsKKworY29uZmlnLmtUcmFjVVJMID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcnOworY29uZmln
LmtCdWd6aWxsYVVSTCA9ICdodHRwczovL2J1Z3Mud2Via2l0Lm9yZyc7Citjb25maWcua0xvY2Fs
U2VydmVyVVJMID0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODEyNyc7CisKK2NvbmZpZy5rUmV2aXNpb25B
dHRyID0gJ2RhdGEtcmV2aXNpb24nOworY29uZmlnLmtUZXN0TmFtZUF0dHIgPSAnZGF0YS10ZXN0
LW5hbWUnOworY29uZmlnLmtCdWlsZGVyTmFtZUF0dHIgPSAnZGF0YS1idWlsZGVyLW5hbWUnOwor
Y29uZmlnLmtGYWlsdXJlQ291bnRBdHRyID0gJ2RhdGEtZmFpbHVyZS1jb3VudCc7Citjb25maWcu
a0ZhaWx1cmVUeXBlc0F0dHIgPSAnZGF0YS1mYWlsdXJlLXR5cGVzJzsKK2NvbmZpZy5rSW5mb2Jh
clR5cGVBdHRyID0gJ2RhdGEtaW5mb2Jhci10eXBlJzsKKwordmFyIGtUZW5NaW51dGVzSW5NaWxs
aXNlY29uZHMgPSAxMCAqIDYwICogMTAwMDsKK2NvbmZpZy5rVXBkYXRlRnJlcXVlbmN5ID0ga1Rl
bk1pbnV0ZXNJbk1pbGxpc2Vjb25kczsKKworfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL2NvbnRyb2xsZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL2NvbnRyb2xsZXJzLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L2NvbnRyb2xsZXJzLmpzOjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29udHJv
bGxlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2
YXIgY29udG9sbGVycyA9IGNvbnRvbGxlcnMgfHwge307CisKKyhmdW5jdGlvbigpeworCitjb250
b2xsZXJzLlJlc3VsdHNEZXRhaWxzID0gYmFzZS5leHRlbmRzKE9iamVjdCwgeworICAgIGluaXQ6
IGZ1bmN0aW9uKHZpZXcsIHJlc3VsdHNCeVRlc3QpCisgICAgeworICAgICAgICB0aGlzLl92aWV3
ID0gdmlldzsKKyAgICAgICAgdGhpcy5fcmVzdWx0c0J5VGVzdCA9IHJlc3VsdHNCeVRlc3Q7CisK
KyAgICAgICAgdGhpcy5fdmlldy5zZXRUZXN0TGlzdChPYmplY3Qua2V5cyh0aGlzLl9yZXN1bHRz
QnlUZXN0KSk7CisgICAgICAgICQodGhpcy5fdmlldykuYmluZCgndGVzdHNlbGVjdGVkJywgdGhp
cy5vblRlc3RTZWxlY3RlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5k
KCdidWlsZGVyc2VsZWN0ZWQnLCB0aGlzLm9uQnVpbGRlclNlbGVjdGVkLmJpbmQodGhpcykpOwor
ICAgICAgICAkKHRoaXMuX3ZpZXcpLmJpbmQoJ3JlYmFzZWxpbmUnLCB0aGlzLm9uUmViYXNlbGlu
ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgLy8gRklYTUU6IEJpbmQgdGhlIG5leHQvcHJldmlvdXMg
ZXZlbnRzLgorICAgIH0sCisgICAgX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXI6IGZ1bmN0
aW9uKHRlc3ROYW1lLCBidWlsZGVyTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKKyAgICAgICAgICAgICdidWlsZGVyTmFtZSc6
IGJ1aWxkZXJOYW1lLAorICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFp
bHVyZVR5cGVMaXN0KHRoaXMuX3Jlc3VsdHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJOYW1lXS5h
Y3R1YWwpCisgICAgICAgIH0KKyAgICB9LAorICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgICQodGhpcy5fdmlldykuZGV0YWNoKCk7CisgICAgfSwKKyAgICBzaG93VGVzdDog
ZnVuY3Rpb24odGVzdE5hbWUpCisgICAgeworICAgICAgICB2YXIgYnVpbGRlck5hbWVMaXN0ID0g
T2JqZWN0LmtleXModGhpcy5fcmVzdWx0c0J5VGVzdFt0ZXN0TmFtZV0pOworICAgICAgICB0aGlz
Ll92aWV3LnNldEJ1aWxkZXJMaXN0KGJ1aWxkZXJOYW1lTGlzdCkKKyAgICAgICAgdGhpcy5fdmll
dy5zaG93UmVzdWx0cyh0aGlzLl9mYWlsdXJlSW5mb0ZvclRlc3RBbmRCdWlsZGVyKHRlc3ROYW1l
LCBidWlsZGVyTmFtZUxpc3RbMF0pKTsKKyAgICB9LAorICAgIG9uVGVzdFNlbGVjdGVkOiBmdW5j
dGlvbihldmVudCwgdGVzdE5hbWUpCisgICAgeworICAgICAgICB0aGlzLnNob3dUZXN0KHRlc3RO
YW1lKQorICAgIH0sCisgICAgb25CdWlsZGVyU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0aGlzLl92aWV3LnNob3dSZXN1bHRzKHRoaXMuX2ZhaWx1cmVJbmZvRm9yVGVzdEFuZEJ1aWxk
ZXIodGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKSwgdGhpcy5fdmlldy5jdXJyZW50QnVpbGRl
ck5hbWUoKSkpOworICAgIH0sCisgICAgb25SZWJhc2VsaW5lOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIHRlc3ROYW1lID0gdGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKTsKKyAgICAgICAg
dmFyIGJ1aWxkZXJOYW1lID0gdGhpcy5fdmlldy5jdXJyZW50QnVpbGRlck5hbWUoKTsKKyAgICAg
ICAgbW9kZWwucXVldWVGb3JSZWJhc2VsaW5lKHsKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRl
c3ROYW1lLAorICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogYnVpbGRlck5hbWUKKyAgICAgICAg
fSk7CisgICAgfQorfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9t
YWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL21haW4uanMJKHJl
dmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczo5MzI1NCkKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCit2YXIga0Zhc3RMb2FkaW5nREVC
VUcgPSBmYWxzZTsKKwordmFyIGdfdXBkYXRlVGltZXJJZCA9IDA7Cit2YXIgZ19yZXN1bHRzRGV0
YWlsc0l0ZXJhdG9yID0gbnVsbDsKK3ZhciBnX3RyZWVTdGF0ZSA9IHt9OworCit2YXIga0J1aWxk
RmFpbGVkSW5mb2JhclR5cGUgPSAnYnVpbGQtZmFpbGVkJzsKKworZnVuY3Rpb24gZGlzbWlzc0J1
dHRlcmJhcigpCit7CisgICAgJCgnLmJ1dHRlcmJhcicpLmZhZGVPdXQoJ2Zhc3QnKTsKKyAgICBj
aGVja0ZvckxvY2FsU2VydmVyKCk7Cit9CisKK2Z1bmN0aW9uIGRpc3BsYXlPbkJ1dHRlcmJhciht
ZXNzYWdlKQoreworICAgICQoJy5idXR0ZXJiYXIgLnN0YXR1cycpLnRleHQobWVzc2FnZSk7Cisg
ICAgJCgnLmJ1dHRlcmJhcicpLmZhZGVJbignZmFzdCcpOworfQorCitmdW5jdGlvbiBoaWRlSW5m
b2JhcigpCit7CisgICAgJCgnLmluZm9iYXInKS5hbmltYXRlKHsKKyAgICAgICAgb3BhY2l0eTog
J3RvZ2dsZScsCisgICAgICAgIGhlaWdodDogJ3RvZ2dsZScsCisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIGhpZGVJbmZvYmFySWZPZlR5cGUodHlwZSkKK3sKKyAgICBpZiAoISQoJy5pbmZvYmFyIC5z
dGF0dXMnKS5pcygnOnZpc2libGUnKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgkKCcuaW5m
b2JhciAuc3RhdHVzJykuYXR0cihjb25maWcua0luZm9iYXJUeXBlQXR0cikgIT0gdHlwZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGhpZGVJbmZvYmFyKCk7Cit9CisKK2Z1bmN0aW9uIGRpc3BsYXlJ
bmZvYmFyKG1lc3NhZ2UsIHR5cGUpCit7CisgICAgJCgnLmluZm9iYXIgLnN0YXR1cycpLmVtcHR5
KCkuYXR0cihjb25maWcua0luZm9iYXJUeXBlQXR0ciwgdHlwZSkuYXBwZW5kKG1lc3NhZ2UpOwor
ICAgICQoJy5pbmZvYmFyJykuYW5pbWF0ZSh7CisgICAgICAgIG9wYWNpdHk6ICd0b2dnbGUnLAor
ICAgICAgICBoZWlnaHQ6ICd0b2dnbGUnLAorICAgIH0pOworfQorCitmdW5jdGlvbiBzZXRJY29u
U3RhdGUoaGFzRmFpbHVyZXMpCit7CisgICAgdmFyIGZhdmljb25VUkwgPSAnZmF2aWNvbi0nICsg
KGhhc0ZhaWx1cmVzID8gJ3JlZCcgOiAnZ3JlZW4nKSArICcucG5nJzsKKyAgICAkKCcjZmF2aWNv
bicpLmF0dHIoJ2hyZWYnLCBmYXZpY29uVVJMKTsKK30KKworZnVuY3Rpb24gdG9nZ2xlQnV0dG9u
KGJ1dHRvbiwgaXNFbmFibGVkKQoreworICAgIGlmIChpc0VuYWJsZWQpCisgICAgICAgIGJ1dHRv
bi5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpOworICAgIGVsc2UKKyAgICAgICAgYnV0dG9uLmF0dHIo
J2Rpc2FibGVkJywgdHJ1ZSkKK30KKworZnVuY3Rpb24gcmViYXNlbGluZShmYWlsdXJlSW5mb0xp
c3QpCit7CisgICAgaWYgKCFmYWlsdXJlSW5mb0xpc3QubGVuZ3RoKQorICAgICAgICByZXR1cm47
CisgICAgZGlzcGxheU9uQnV0dGVyYmFyKCdSZWJhc2VsaW5pbmcuLi4nKTsKKyAgICBjaGVja291
dC5yZWJhc2VsaW5lKGZhaWx1cmVJbmZvTGlzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgIGRpc21p
c3NCdXR0ZXJiYXIoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ugc29tZXRoaW5n
IGxpa2UgYSBsaWdodGJveCByYXRoZXIgdGhhbiBhbGVydCEKKyAgICAgICAgYWxlcnQoJ05ldyBy
ZXN1bHRzIGRvd25sb2FkZWQgdG8geW91ciB3b3JraW5nIGNvcHkuIFBsZWFzZSB1c2UgIndlYmtp
dC1wYXRjaCBsYW5kLWNvd2JveSIgdG8gbGFuZCB0aGUgdXBkYXRlZCBiYXNlbGluZXMuJyk7Cisg
ICAgfSk7Cit9CisKK2Z1bmN0aW9uIHNob3dSZXN1bHRzRGV0YWlsKGZhaWx1cmVJbmZvKQorewor
ICAgIHZhciBmYWlsdXJlVHlwZXMgPSBmYWlsdXJlSW5mby5mYWlsdXJlVHlwZUxpc3Quam9pbign
ICcpOworCisgICAgdmFyIGNvbnRlbnQgPSAkKCcucmVzdWx0cy1kZXRhaWwgLmNvbnRlbnQnKTsK
KworICAgIGlmICgkKCcuZmFpbHVyZS1kZXRhaWxzJywgY29udGVudCkuYXR0cihjb25maWcua0J1
aWxkZXJOYW1lQXR0cikgPT0gZmFpbHVyZUluZm8uYnVpbGRlck5hbWUgJiYKKyAgICAgICAgJCgn
LmZhaWx1cmUtZGV0YWlscycsIGNvbnRlbnQpLmF0dHIoY29uZmlnLmtUZXN0TmFtZUF0dHIpID09
IGZhaWx1cmVJbmZvLnRlc3ROYW1lICYmCisgICAgICAgICQoJy5mYWlsdXJlLWRldGFpbHMnLCBj
b250ZW50KS5hdHRyKGNvbmZpZy5rRmFpbHVyZVR5cGVzQXR0cikgPT0gZmFpbHVyZVR5cGVzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBkaXNwbGF5T25CdXR0ZXJiYXIoJ0xvYWRpbmcuLi4nKTsK
KworICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcyhmYWlsdXJlSW5mbywgZnVuY3Rpb24ocmVz
dWx0c1VSTHMpIHsKKyAgICAgICAgdmFyIHN0YXR1cyA9ICQoJy5yZXN1bHRzLWRldGFpbCAudG9v
bGJhciAuc3RhdHVzJyk7CisKKyAgICAgICAgc3RhdHVzLmVtcHR5KCk7CisgICAgICAgIGNvbnRl
bnQuZW1wdHkoKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHBhc3NpbmcgdGhl
IGZ1bGwgbGlzdCBvZiBmYWlsaW5nIGJ1aWxkZXIgbmFtZXMgYXMgdGhlIGZvdXJ0aCBhcmd1bWVu
dC4KKyAgICAgICAgc3RhdHVzLmFwcGVuZCh1aS5mYWlsdXJlRGV0YWlsc1N0YXR1cyhmYWlsdXJl
SW5mbywgW2ZhaWx1cmVJbmZvLmJ1aWxkZXJOYW1lXSkpOworICAgICAgICB2YXIgcmVzdWx0c0dy
aWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpOworICAgICAgICByZXN1bHRzR3JpZC5h
ZGRSZXN1bHRzKHJlc3VsdHNVUkxzKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQocmVzdWx0c0dy
aWQpOworCisgICAgICAgIHRvZ2dsZUJ1dHRvbigkKCcucmVzdWx0cy1kZXRhaWwgLmFjdGlvbnMg
Lm5leHQnKSwgZ19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yLmhhc05leHQoKSk7CisgICAgICAgIHRv
Z2dsZUJ1dHRvbigkKCcucmVzdWx0cy1kZXRhaWwgLmFjdGlvbnMgLnByZXZpb3VzJyksIGdfcmVz
dWx0c0RldGFpbHNJdGVyYXRvci5oYXNQcmV2aW91cygpKTsKKyAgICAgICAgdG9nZ2xlQnV0dG9u
KCQoJy5yZXN1bHRzLWRldGFpbCAuYWN0aW9ucyAucmViYXNlbGluZScpLCByZXN1bHRzLmNhblJl
YmFzZWxpbmUoZmFpbHVyZUluZm8uZmFpbHVyZVR5cGVMaXN0KSk7CisKKyAgICAgICAgJCgnLmZh
aWx1cmUtZGV0YWlscycsIGNvbnRlbnQpLmF0dHIoY29uZmlnLmtUZXN0TmFtZUF0dHIsIGZhaWx1
cmVJbmZvLnRlc3ROYW1lKTsKKyAgICAgICAgJCgnLmZhaWx1cmUtZGV0YWlscycsIGNvbnRlbnQp
LmF0dHIoY29uZmlnLmtCdWlsZGVyTmFtZUF0dHIsIGZhaWx1cmVJbmZvLmJ1aWxkZXJOYW1lKTsK
KyAgICAgICAgJCgnLmZhaWx1cmUtZGV0YWlscycsIGNvbnRlbnQpLmF0dHIoY29uZmlnLmtGYWls
dXJlVHlwZXNBdHRyLCBmYWlsdXJlVHlwZXMpOworCisgICAgICAgIGlmICghJCgnLnJlc3VsdHMt
ZGV0YWlsJykuaXMoIjp2aXNpYmxlIikpCisgICAgICAgICAgICAkKCcucmVzdWx0cy1kZXRhaWwn
KS5mYWRlSW4oJ2Zhc3QnLCBkaXNtaXNzQnV0dGVyYmFyKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGlzbWlzc0J1dHRlcmJhcigpOworICAgIH0pOworfQorCitmdW5jdGlvbiBoaWRlUmVz
dWx0c0RldGFpbCgpCit7CisgICAgJCgnLnJlc3VsdHMtZGV0YWlsJykuZmFkZU91dCgnZmFzdCcs
IGZ1bmN0aW9uKCkgeworICAgICAgICAkKCcucmVzdWx0cy1kZXRhaWwgLnN0YXR1cycpLmVtcHR5
KCk7CisgICAgICAgICQoJy5yZXN1bHRzLWRldGFpbCAuY29udGVudCcpLmVtcHR5KCk7CisgICAg
ICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGdfcmVzdWx0
c0RldGFpbHNJdGVyYXRvciwKKyAgICAgICAgLy8gYnV0IGRvaW5nIHNvIGhlbHBzIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciBmcmVlIG1lbW9yeS4KKyAgICAgICAgZ19yZXN1bHRzRGV0YWlsc0l0ZXJh
dG9yID0gbnVsbDsKKyAgICB9KTsKKyAgICBjaGVja291dC51cGRhdGVFeHBlY3RhdGlvbnMobW9k
ZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVldWUoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIC8v
IEZJWE1FOiBTaG91bGQgd2UgY29uZmlybSB3aXRoIHRoZSB1c2UgYmVmb3JlIGV4ZWN1dGluZyB0
aGUgcXVldWU/CisgICAgICAgIHJlYmFzZWxpbmUobW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgp
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gbmV4dFJlc3VsdHNEZXRhaWwoKQoreworICAgIGlm
IChnX3Jlc3VsdHNEZXRhaWxzSXRlcmF0b3IuaGFzTmV4dCgpKQorICAgICAgICBnX3Jlc3VsdHNE
ZXRhaWxzSXRlcmF0b3IuY2FsbE5leHQoKTsKKyAgICBlbHNlCisgICAgICAgIGhpZGVSZXN1bHRz
RGV0YWlsKCk7Cit9CisKK2Z1bmN0aW9uIHByZXZpb3VzUmVzdWx0c0RldGFpbCgpCit7CisgICAg
Z19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yLmNhbGxQcmV2aW91cygpOworfQorCitmdW5jdGlvbiBm
YWlsdXJlSW5mb0Zyb21SZXN1bHRzRGV0YWlsKCkKK3sKKyAgICB2YXIgZmFpbHVyZURldGFpbHMg
PSAkKCcucmVzdWx0cy1kZXRhaWwgLmZhaWx1cmUtZGV0YWlscycpOworICAgIHJldHVybiB7Cisg
ICAgICAgICdidWlsZGVyTmFtZSc6IGZhaWx1cmVEZXRhaWxzLmF0dHIoY29uZmlnLmtCdWlsZGVy
TmFtZUF0dHIpLAorICAgICAgICAndGVzdE5hbWUnOiBmYWlsdXJlRGV0YWlscy5hdHRyKGNvbmZp
Zy5rVGVzdE5hbWVBdHRyKSwKKyAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFp
bHVyZVR5cGVMaXN0KGZhaWx1cmVEZXRhaWxzLmF0dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRy
KSksCisgICAgfQorfQorCitmdW5jdGlvbiBhZGRUb1JlYmFzZWxpbmVRdWV1ZSgpCit7CisgICAg
bW9kZWwucXVldWVGb3JSZWJhc2VsaW5lKGZhaWx1cmVJbmZvRnJvbVJlc3VsdHNEZXRhaWwoKSk7
CisgICAgbmV4dFJlc3VsdHNEZXRhaWwoKTsKK30KKworZnVuY3Rpb24gYWRkVG9FeHBlY3RhdGlv
blVwZGF0ZVF1ZXVlKCkKK3sKKyAgICBtb2RlbC5xdWV1ZUZvckV4cGVjdGF0aW9uVXBkYXRlKGZh
aWx1cmVJbmZvRnJvbVJlc3VsdHNEZXRhaWwoKSk7CisgICAgbmV4dFJlc3VsdHNEZXRhaWwoKTsK
K30KKworZnVuY3Rpb24gc2VsZWN0ZWRGYWlsdXJlcygpCit7CisgICAgdmFyIGZhaWx1cmVJbmZv
TGlzdCA9IFtdOworCisgICAgJCgnLnRlc3QgaW5wdXQ6Y2hlY2tib3gnKS5lYWNoKGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAoIXRoaXMuY2hlY2tlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgZmFpbHVyZUluZm9MaXN0ID0gZmFpbHVyZUluZm9MaXN0LmNvbmNhdCh1aS5mYWlsdXJl
SW5mb0xpc3RGb3JTdW1tYXJ5KCQodGhpcykucGFyZW50cygnLnJlc3VsdCcpKSk7CisgICAgfSk7
CisKKyAgICByZXR1cm4gZmFpbHVyZUluZm9MaXN0OworfQorCitmdW5jdGlvbiByZWJhc2VsaW5l
U2VsZWN0ZWQoKQoreworICAgIHJlYmFzZWxpbmUoc2VsZWN0ZWRGYWlsdXJlcygpKTsKK30KKwor
ZnVuY3Rpb24gdXBkYXRlRXhwZWN0YXRpb25zRm9yU2VsZWN0ZWQoKQoreworICAgIGNoZWNrb3V0
LnVwZGF0ZUV4cGVjdGF0aW9ucyhzZWxlY3RlZEZhaWx1cmVzKCksICQubm9vcCk7Cit9CisKK2Z1
bmN0aW9uIHNob3dTZWxlY3RlZEZhaWx1cmVzKCkKK3sKKyAgICB2YXIgbGlzdE9mQXJndW1lbnRB
cnJheXMgPSBzZWxlY3RlZEZhaWx1cmVzKCkubWFwKGZ1bmN0aW9uKGZhaWx1cmVJbmZvKSB7IHJl
dHVybiBbZmFpbHVyZUluZm9dOyB9KTsKKyAgICBnX3Jlc3VsdHNEZXRhaWxzSXRlcmF0b3IgPSBu
ZXcgYmFzZS5DYWxsYmFja0l0ZXJhdG9yKHNob3dSZXN1bHRzRGV0YWlsLCBsaXN0T2ZBcmd1bWVu
dEFycmF5cyk7CisgICAgZ19yZXN1bHRzRGV0YWlsc0l0ZXJhdG9yLmNhbGxOZXh0KCk7Cit9CisK
K2Z1bmN0aW9uIHJvd3NJblJldmlzaW9uUmFuZ2UoZWFybGllc3RSZXZpc2lvbiwgbGF0ZXN0UmV2
aXNpb24pCit7CisgICAgdmFyIGVhcmxpZXN0UmV2aXNpb24gPSBiYXNlLmFzSW50ZWdlcihlYXJs
aWVzdFJldmlzaW9uKTsKKyAgICB2YXIgbGF0ZXN0UmV2aXNpb24gPSBiYXNlLmFzSW50ZWdlcihs
YXRlc3RSZXZpc2lvbik7CisKKyAgICB2YXIgcm93cyA9IFtdOworICAgICQoJy5yZWNlbnQtaGlz
dG9yeSB0cicpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciByZXZpc2lvbiA9IHBhcnNl
SW50KCQodGhpcykuYXR0cihjb25maWcua1JldmlzaW9uQXR0cikpOworICAgICAgICBpZiAoZWFy
bGllc3RSZXZpc2lvbiA8PSByZXZpc2lvbiAmJiByZXZpc2lvbiA8PSBsYXRlc3RSZXZpc2lvbikK
KyAgICAgICAgICAgIHJvd3MucHVzaCh0aGlzKTsKKyAgICB9KTsKKworICAgIHJldHVybiAkKHJv
d3MpOworfQorCitmdW5jdGlvbiByb3dzQmVmb3JlUmV2aXNpb24obGF0ZXN0UmV2aXNpb24pCit7
CisgICAgcmV0dXJuIHJvd3NJblJldmlzaW9uUmFuZ2UoMCwgbGF0ZXN0UmV2aXNpb24pCit9CisK
K2Z1bmN0aW9uIHNob3dSZWNlbnRDb21taXRzKCkKK3sKKyAgICAkKCcucmVjZW50LWhpc3Rvcnkn
KS5lbXB0eSgpLmFwcGVuZCh1aS5jaGFuZ2Vsb2cobW9kZWwuc3RhdGUucmVjZW50Q29tbWl0cykp
OworfQorCitmdW5jdGlvbiBzaG93QnVpbGRlclByb2dyZXNzKCkKK3sKKyAgICAkLmVhY2gobW9k
ZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlciwgZnVuY3Rpb24oYnVpbGRlck5hbWUsIHJlc3VsdHNU
cmVlKSB7CisgICAgICAgIHZhciBidWlsZGVySW5kZXggPSBjb25maWcua0J1aWxkZXJzLmluZGV4
T2YoYnVpbGRlck5hbWUpOworICAgICAgICByb3dzQmVmb3JlUmV2aXNpb24ocmVzdWx0c1RyZWUu
cmV2aXNpb24pLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAkKCQodGhpcykuY2hpbGRy
ZW4oKVtidWlsZGVySW5kZXhdKS5hZGRDbGFzcygnYnVpbHQnKTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9CisKK2Z1bmN0aW9uIHNob3dVbmV4cGVjdGVkRmFpbHVyZShmYWlsdXJlQW5hbHlzaXMp
Cit7CisgICAgdmFyIGltcGxpZWRGaXJzdEZhaWxpbmdSZXZpc2lvbiA9IGZhaWx1cmVBbmFseXNp
cy5uZXdlc3RQYXNzaW5nUmV2aXNpb24gKyAxOworICAgIHZhciByZWdyZXNzaW9uUm93cyA9IHJv
d3NJblJldmlzaW9uUmFuZ2UoaW1wbGllZEZpcnN0RmFpbGluZ1JldmlzaW9uLCBmYWlsdXJlQW5h
bHlzaXMub2xkZXN0RmFpbGluZ1JldmlzaW9uKTsKKworICAgICQoJy5lbnRyeScsIHJlZ3Jlc3Np
b25Sb3dzKS5hZGRDbGFzcygncG9zc2libGUtcmVncmVzc2lvbicpOworCisgICAgdmFyIGZhaWx1
cmVTdW1tYXJ5ID0gdWkuc3VtbWFyaXplRmFpbHVyZShmYWlsdXJlQW5hbHlzaXMpLmF0dHIoY29u
ZmlnLmtSZXZpc2lvbkF0dHIsIGltcGxpZWRGaXJzdEZhaWxpbmdSZXZpc2lvbik7CisgICAgKHJl
Z3Jlc3Npb25Sb3dzLmxlbmd0aCA/IHJlZ3Jlc3Npb25Sb3dzIDogJCgnLnJlY2VudC1oaXN0b3J5
IHRyJykpLmxhc3QoKS5hZnRlcihmYWlsdXJlU3VtbWFyeSk7CisKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGp1c3QgY29tcHV0ZSB0aGlzIGZvciBmYWlsdXJlU3VtbWFyeSBpbnN0ZWFkIG9mIHJl
Y29tcHV0aW5nIHRoZSB3aG9sZSBwYWdlLgorICAgIHNob3dCdWlsZGVyUHJvZ3Jlc3MoKTsKK30K
KworZnVuY3Rpb24gc2hvd0ZhaWxpbmdCdWlsZGVyc0luZm9iYXIoYnVpbGRlck5hbWVMaXN0KQor
eworICAgIGlmIChidWlsZGVyTmFtZUxpc3QubGVuZ3RoKQorICAgICAgICBkaXNwbGF5SW5mb2Jh
cih1aS5pbmZvYmFyTWVzc2FnZUZvckNvbXBpbGVFcnJvcnMoYnVpbGRlck5hbWVMaXN0KSwga0J1
aWxkRmFpbGVkSW5mb2JhclR5cGUpOworICAgIGVsc2UKKyAgICAgICAgaGlkZUluZm9iYXJJZk9m
VHlwZShrQnVpbGRGYWlsZWRJbmZvYmFyVHlwZSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRm9yTG9j
YWxTZXJ2ZXIoKQoreworICAgIGNoZWNrb3V0LmlzQXZhaWxhYmxlKGZ1bmN0aW9uKGF2YWlsYWJs
ZSkgeworICAgICAgICBpZiAoIWF2YWlsYWJsZSkKKyAgICAgICAgICAgIGRpc3BsYXlPbkJ1dHRl
cmJhcignUnVuICJ3ZWJraXQtcGF0Y2ggZ2FyZGVuLW8tbWF0aWMiIHRvIGVuYWJsZSByZWJhc2Vs
aW5lIGZlYXR1cmVzLicpCisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZSgpCit7CisgICAg
ZGlzcGxheU9uQnV0dGVyYmFyKCdMb2FkaW5nLi4uJyk7CisgICAgYnVpbGRlcnMuYnVpbGRlcnNG
YWlsaW5nU3RlcFJlcXVyZWRGb3JUZXN0Q292ZXJhZ2Uoc2hvd0ZhaWxpbmdCdWlsZGVyc0luZm9i
YXIpOworICAgIGJhc2UuY2FsbEluUGFyYWxsZWwoW21vZGVsLnVwZGF0ZVJlY2VudENvbW1pdHMs
IG1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXJdLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hv
d1JlY2VudENvbW1pdHMoKTsKKyAgICAgICAgc2hvd0J1aWxkZXJQcm9ncmVzcygpOworICAgICAg
ICBtb2RlbC5hbmFseXplVW5leHBlY3RlZEZhaWx1cmVzKHNob3dVbmV4cGVjdGVkRmFpbHVyZSwg
ZGlzbWlzc0J1dHRlcmJhcik7CisgICAgICAgIGNoZWNrRm9yTG9jYWxTZXJ2ZXIoKTsKKyAgICB9
KTsKK30KKworJCgnLnNob3ctc2VsZWN0ZWQtZmFpbHVyZXMnKS5saXZlKCdjbGljaycsIHNob3dT
ZWxlY3RlZEZhaWx1cmVzKTsKKyQoJy5yZWJhc2VsaW5lLXNlbGVjdGVkJykubGl2ZSgnY2xpY2sn
LCByZWJhc2VsaW5lU2VsZWN0ZWQpOworJCgnLnVwZGF0ZS1leHBlY3RhdGlvbnMtc2VsZWN0ZWQn
KS5saXZlKCdjbGljaycsIHVwZGF0ZUV4cGVjdGF0aW9uc0ZvclNlbGVjdGVkKTsKKyQoJy5yZWZy
ZXNoJykubGl2ZSgnY2xpY2snLCB1cGRhdGUpOworCiskKCcucmVzdWx0cy1kZXRhaWwgLmFjdGlv
bnMgLm5leHQnKS5saXZlKCdjbGljaycsIG5leHRSZXN1bHRzRGV0YWlsKTsKKyQoJy5yZXN1bHRz
LWRldGFpbCAuYWN0aW9ucyAucHJldmlvdXMnKS5saXZlKCdjbGljaycsIHByZXZpb3VzUmVzdWx0
c0RldGFpbCk7CiskKCcucmVzdWx0cy1kZXRhaWwgLmFjdGlvbnMgLnJlYmFzZWxpbmUnKS5saXZl
KCdjbGljaycsIGFkZFRvUmViYXNlbGluZVF1ZXVlKTsKKyQoJy5yZXN1bHRzLWRldGFpbCAuYWN0
aW9ucyAudXBkYXRlLWV4cGVjdGF0aW9uJykubGl2ZSgnY2xpY2snLCBhZGRUb0V4cGVjdGF0aW9u
VXBkYXRlUXVldWUpOworJCgnLnJlc3VsdHMtZGV0YWlsIC5hY3Rpb25zIC5kaXNtaXNzJykubGl2
ZSgnY2xpY2snLCBoaWRlUmVzdWx0c0RldGFpbCk7CisKKyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0
aW9uKCkgeworICAgIGdfdXBkYXRlVGltZXJJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGUs
IGNvbmZpZy5rVXBkYXRlRnJlcXVlbmN5KTsKKyAgICB1cGRhdGUoKTsKK30pOworCit9KSgpOwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9tYWluLmpzCShyZXZpc2lvbiA5MzI1NCkKKysrIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAg
ZnVuY3Rpb24gZGlzcGxheUluZm9iYXIobWVzc2FnZSwgdHlwZSkKIAogZnVuY3Rpb24gc2V0SWNv
blN0YXRlKGhhc0ZhaWx1cmVzKQogewotICAgIHZhciBmYXZpY29uVVJMID0gJ2Zhdmljb24tJyAr
IChoYXNGYWlsdXJlcyA/ICdyZWQnIDogJ2dyZWVuJykgKyAnLnBuZyc7CisgICAgdmFyIGZhdmlj
b25VUkwgPSAnaW1hZ2VzL2Zhdmljb24tJyArIChoYXNGYWlsdXJlcyA/ICdyZWQnIDogJ2dyZWVu
JykgKyAnLnBuZyc7CiAgICAgJCgnI2Zhdmljb24nKS5hdHRyKCdocmVmJywgZmF2aWNvblVSTCk7
CiB9CiAKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL21vZGVsLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL21vZGVsLmpzCShyZXZpc2lvbiA5MzI1NikJKGZy
b20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL21vZGVsLmpzOjkzMjU2KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvbW9kZWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKwordmFyIG1vZGVsID0gbW9kZWwgfHwge307CisKKyhmdW5jdGlvbiAoKSB7CisKK3ZhciBr
Q29tbWl0TG9nTGVuZ3RoID0gNTA7CisKK21vZGVsLnN0YXRlID0ge307Cittb2RlbC5zdGF0ZS5m
YWlsdXJlQW5hbHlzaXNCeVRlc3QgPSB7fTsKK21vZGVsLnN0YXRlLnJlYmFzZWxpbmVRdWV1ZSA9
IFtdOworbW9kZWwuc3RhdGUuZXhwZWN0YXRpb25zVXBkYXRlUXVldWUgPSBbXTsKKworZnVuY3Rp
b24gZmluZEFuZE1hcmtSZXZlcnRlZFJldmlzaW9ucyhjb21taXREYXRhTGlzdCkKK3sKKyAgICB2
YXIgcmV2ZXJ0ZWRSZXZpc2lvbnMgPSB7fTsKKyAgICAkLmVhY2goY29tbWl0RGF0YUxpc3QsIGZ1
bmN0aW9uKGluZGV4LCBjb21taXREYXRhKSB7CisgICAgICAgIGlmIChjb21taXREYXRhLnJldmVy
dGVkUmV2aXNpb24pCisgICAgICAgICAgICByZXZlcnRlZFJldmlzaW9uc1tjb21taXREYXRhLnJl
dmVydGVkUmV2aXNpb25dID0gdHJ1ZTsKKyAgICB9KTsKKyAgICAkLmVhY2goY29tbWl0RGF0YUxp
c3QsIGZ1bmN0aW9uKGluZGV4LCBjb21taXREYXRhKSB7CisgICAgICAgIGlmIChjb21taXREYXRh
LnJldmlzaW9uIGluIHJldmVydGVkUmV2aXNpb25zKQorICAgICAgICAgICAgY29tbWl0RGF0YS53
YXNSZXZlcnRlZCA9IHRydWU7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGZ1enp5RmluZCh0ZXN0
TmFtZSwgY29tbWl0RGF0YSkKK3sKKyAgICB2YXIgaW5kZXhPZkxhc3REb3QgPSB0ZXN0TmFtZS5s
YXN0SW5kZXhPZignLicpOworICAgIHZhciBzdGVtID0gaW5kZXhPZkxhc3REb3QgPT0gLTEgPyB0
ZXN0TmFtZSA6IHRlc3ROYW1lLnN1YnN0cigwLCBpbmRleE9mTGFzdERvdCk7CisgICAgcmV0dXJu
IGNvbW1pdERhdGEubWVzc2FnZS5pbmRleE9mKHN0ZW0pICE9IC0xOworfQorCitmdW5jdGlvbiBo
ZXVyaXN0aWNhbGx5TmFycm93UmVncmVzc2lvblJhbmdlKGZhaWx1cmVBbmFseXNpcykKK3sKKyAg
ICB2YXIgY29tbWl0RGF0YUxpc3QgPSBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzOworICAgIHZh
ciBjb21taXREYXRhSW5kZXggPSBjb21taXREYXRhTGlzdC5sZW5ndGggLSAxOworCisgICAgZm9y
KHZhciByZXZpc2lvbiA9IGZhaWx1cmVBbmFseXNpcy5uZXdlc3RQYXNzaW5nUmV2aXNpb24gKyAx
OyByZXZpc2lvbiA8PSBmYWlsdXJlQW5hbHlzaXMub2xkZXN0RmFpbGluZ1JldmlzaW9uOyArK3Jl
dmlzaW9uKSB7CisgICAgICAgIHdoaWxlIChjb21taXREYXRhSW5kZXggPj0gMCAmJiBjb21taXRE
YXRhTGlzdFtjb21taXREYXRhSW5kZXhdLnJldmlzaW9uIDwgcmV2aXNpb24pCisgICAgICAgICAg
ICAtLWNvbW1pdERhdGFJbmRleDsKKyAgICAgICAgdmFyIGNvbW1pdERhdGEgPSBjb21taXREYXRh
TGlzdFtjb21taXREYXRhSW5kZXhdOworICAgICAgICBpZiAoY29tbWl0RGF0YS5yZXZpc2lvbiAh
PSByZXZpc2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZnV6enlGaW5k
KGZhaWx1cmVBbmFseXNpcy50ZXN0TmFtZSwgY29tbWl0RGF0YSkpIHsKKyAgICAgICAgICAgIGZh
aWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb24gPSByZXZpc2lvbjsKKyAgICAgICAg
ICAgIGZhaWx1cmVBbmFseXNpcy5uZXdlc3RQYXNzaW5nUmV2aXNpb24gPSByZXZpc2lvbiAtIDE7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK21vZGVsLnF1ZXVl
Rm9yUmViYXNlbGluZSA9IGZ1bmN0aW9uKGZhaWx1cmVJbmZvKQoreworICAgIG1vZGVsLnN0YXRl
LnJlYmFzZWxpbmVRdWV1ZS5wdXNoKGZhaWx1cmVJbmZvKTsKK307CisKK21vZGVsLnRha2VSZWJh
c2VsaW5lUXVldWUgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHF1ZXVlID0gbW9kZWwuc3RhdGUu
cmViYXNlbGluZVF1ZXVlOworICAgIG1vZGVsLnN0YXRlLnJlYmFzZWxpbmVRdWV1ZSA9IFtdOwor
ICAgIHJldHVybiBxdWV1ZTsKK307CisKK21vZGVsLnF1ZXVlRm9yRXhwZWN0YXRpb25VcGRhdGUg
PSBmdW5jdGlvbihmYWlsdXJlSW5mbykKK3sKKyAgICBtb2RlbC5zdGF0ZS5leHBlY3RhdGlvbnNV
cGRhdGVRdWV1ZS5wdXNoKGZhaWx1cmVJbmZvKTsKK307CisKK21vZGVsLnRha2VFeHBlY3RhdGlv
blVwZGF0ZVF1ZXVlID0gZnVuY3Rpb24oKQoreworICAgIHZhciBxdWV1ZSA9IG1vZGVsLnN0YXRl
LmV4cGVjdGF0aW9uc1VwZGF0ZVF1ZXVlOworICAgIG1vZGVsLnN0YXRlLmV4cGVjdGF0aW9uc1Vw
ZGF0ZVF1ZXVlID0gW107CisgICAgcmV0dXJuIHF1ZXVlOworfTsKKwordmFyIGdfY29tbWl0SW5k
ZXggPSB7fTsKKworbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0cyA9IGZ1bmN0aW9uKGNhbGxiYWNr
KQoreworICAgIHRyYWMucmVjZW50Q29tbWl0RGF0YSgndHJ1bmsnLCBrQ29tbWl0TG9nTGVuZ3Ro
LCBmdW5jdGlvbihjb21taXREYXRhTGlzdCkgeworICAgICAgICBtb2RlbC5zdGF0ZS5yZWNlbnRD
b21taXRzID0gY29tbWl0RGF0YUxpc3Q7CisgICAgICAgIHVwZGF0ZUNvbW1pdEluZGV4KCk7Cisg
ICAgICAgIGZpbmRBbmRNYXJrUmV2ZXJ0ZWRSZXZpc2lvbnMobW9kZWwuc3RhdGUucmVjZW50Q29t
bWl0cyk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9OworCitmdW5jdGlvbiB1cGRh
dGVDb21taXRJbmRleCgpIHsKKyAgICBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzLmZvckVhY2go
ZnVuY3Rpb24oY29tbWl0RGF0YSkgeworICAgICAgICBnX2NvbW1pdEluZGV4W2NvbW1pdERhdGEu
cmV2aXNpb25dID0gY29tbWl0RGF0YTsKKyAgICB9KTsKK30KKworLyoKKyAgICBBc3N1bWVzIFNW
Ti1zdHlsZSwgY29uc2VjdXRpdmUgcmV2aXNpb24gc2NoZW1lLgorKi8KK21vZGVsLmNvbW1pdERh
dGFMaXN0Rm9yUmV2aXNpb25SYW5nZSA9IGZ1bmN0aW9uKGZyb21SZXZpc2lvbiwgdG9SZXZpc2lv
bikKK3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgcmV2aXNpb24gPSBmcm9t
UmV2aXNpb247IHJldmlzaW9uIDw9IHRvUmV2aXNpb247ICsrcmV2aXNpb24pIHsKKyAgICAgICAg
dmFyIGNvbW1pdERhdGEgPSBnX2NvbW1pdEluZGV4W3JldmlzaW9uXTsKKyAgICAgICAgaWYgKGNv
bW1pdERhdGEpCisgICAgICAgICAgICByZXN1bHQucHVzaChjb21taXREYXRhKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK307CisKK21vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXIgPSBm
dW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICByZXN1bHRzLmZldGNoUmVzdWx0c0J5QnVpbGRlcihj
b25maWcua0J1aWxkZXJzLCBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVyKSB7CisgICAgICAgIG1v
ZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIgPSByZXN1bHRzQnlCdWlsZGVyOworICAgICAgICBj
YWxsYmFjaygpOworICAgIH0pOworfTsKKworbW9kZWwuYW5hbHl6ZVVuZXhwZWN0ZWRGYWlsdXJl
cyA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisgICAgdmFyIHVu
ZXhwZWN0ZWRGYWlsdXJlcyA9IHJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0KG1vZGVs
LnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpOworCisgICAgJC5lYWNoKG1vZGVsLnN0YXRlLmZhaWx1
cmVBbmFseXNpc0J5VGVzdCwgZnVuY3Rpb24odGVzdE5hbWUsIGZhaWx1cmVBbmFseXNpcykgewor
ICAgICAgICBpZiAoISh0ZXN0TmFtZSBpbiB1bmV4cGVjdGVkRmFpbHVyZXMpKQorICAgICAgICAg
ICAgZGVsZXRlIG1vZGVsLnN0YXRlLmZhaWx1cmVBbmFseXNpc0J5VGVzdFt0ZXN0TmFtZV07Cisg
ICAgfSk7CisKKyAgICB2YXIgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKE9iamVj
dC5rZXlzKHVuZXhwZWN0ZWRGYWlsdXJlcykubGVuZ3RoLCBjb21wbGV0aW9uQ2FsbGJhY2spOwor
ICAgICQuZWFjaCh1bmV4cGVjdGVkRmFpbHVyZXMsIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHRO
b2Rlc0J5QnVpbGRlcikgeworICAgICAgICB2YXIgYnVpbGRlck5hbWVMaXN0ID0gT2JqZWN0Lmtl
eXMocmVzdWx0Tm9kZXNCeUJ1aWxkZXIpOworICAgICAgICByZXN1bHRzLnVuaWZ5UmVncmVzc2lv
blJhbmdlcyhidWlsZGVyTmFtZUxpc3QsIHRlc3ROYW1lLCBmdW5jdGlvbihvbGRlc3RGYWlsaW5n
UmV2aXNpb24sIG5ld2VzdFBhc3NpbmdSZXZpc2lvbikgeworICAgICAgICAgICAgdmFyIGZhaWx1
cmVBbmFseXNpcyA9IHsKKyAgICAgICAgICAgICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKKyAg
ICAgICAgICAgICAgICAncmVzdWx0Tm9kZXNCeUJ1aWxkZXInOiByZXN1bHROb2Rlc0J5QnVpbGRl
ciwKKyAgICAgICAgICAgICAgICAnb2xkZXN0RmFpbGluZ1JldmlzaW9uJzogb2xkZXN0RmFpbGlu
Z1JldmlzaW9uLAorICAgICAgICAgICAgICAgICduZXdlc3RQYXNzaW5nUmV2aXNpb24nOiBuZXdl
c3RQYXNzaW5nUmV2aXNpb24sCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBoZXVyaXN0
aWNhbGx5TmFycm93UmVncmVzc2lvblJhbmdlKGZhaWx1cmVBbmFseXNpcyk7CisKKyAgICAgICAg
ICAgIHZhciBwcmV2aW91c0ZhaWx1cmVBbmFseXNpcyA9IG1vZGVsLnN0YXRlLmZhaWx1cmVBbmFs
eXNpc0J5VGVzdFt0ZXN0TmFtZV07CisgICAgICAgICAgICBpZiAocHJldmlvdXNGYWlsdXJlQW5h
bHlzaXMKKyAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0ZhaWx1cmVBbmFseXNpcy5vbGRlc3RG
YWlsaW5nUmV2aXNpb24gPD0gZmFpbHVyZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbgor
ICAgICAgICAgICAgICAgICYmIHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdS
ZXZpc2lvbiA+PSBmYWlsdXJlQW5hbHlzaXMubmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7CisgICAg
ICAgICAgICAgICAgZmFpbHVyZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHByZXZp
b3VzRmFpbHVyZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKKyAgICAgICAgICAgICAg
ICBmYWlsdXJlQW5hbHlzaXMubmV3ZXN0UGFzc2luZ1JldmlzaW9uID0gcHJldmlvdXNGYWlsdXJl
QW5hbHlzaXMubmV3ZXN0UGFzc2luZ1JldmlzaW9uOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtb2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3RbdGVzdE5hbWVdID0gZmFpbHVy
ZUFuYWx5c2lzOworICAgICAgICAgICAgY2FsbGJhY2soZmFpbHVyZUFuYWx5c2lzKTsKKyAgICAg
ICAgICAgIHRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7CisgICAgICAgIH0pOworICAgIH0pOwor
fTsKKworbW9kZWwuYW5hbHl6ZVVuZXhwZWN0ZWRTdWNjZXNzZXMgPSBmdW5jdGlvbihjYWxsYmFj
aykKK3sKKyAgICB2YXIgdW5leHBlY3RlZFN1Y2Nlc3NlcyA9IHJlc3VsdHMudW5leHBlY3RlZFN1
Y2Nlc3Nlc0J5VGVzdChtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKKyAgICAkLmVhY2go
dW5leHBlY3RlZFN1Y2Nlc3NlcywgZnVuY3Rpb24odGVzdE5hbWUsIHJlc3VsdE5vZGVzQnlCdWls
ZGVyKSB7CisgICAgICAgIHZhciBzdWNjZXNzQW5hbHlzaXMgPSB7CisgICAgICAgICAgICAndGVz
dE5hbWUnOiB0ZXN0TmFtZSwKKyAgICAgICAgICAgICdyZXN1bHROb2Rlc0J5QnVpbGRlcic6IHJl
c3VsdE5vZGVzQnlCdWlsZGVyLAorICAgICAgICB9OworCisgICAgICAgIC8vIEZJWE1FOiBDb25z
aWRlciBsb29raW5nIGF0IHRoZSBoaXN0b3J5IHRvIHNlZSBob3cgbG9uZyB0aGlzIHRlc3QKKyAg
ICAgICAgLy8gaGFzIGJlZW4gdW5leHBlY3RlZGx5IHBhc3NpbmcuCisKKyAgICAgICAgY2FsbGJh
Y2soc3VjY2Vzc0FuYWx5c2lzKTsKKyAgICB9KTsKK307CisKK30pKCk7CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9tb2RlbF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvbW9kZWxfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZy
b20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL21vZGVsX3VuaXR0ZXN0cy5qczo5MzI1NCkKKysrIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL21vZGVsX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIxMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisoZnVuY3Rpb24gKCkgeworCittb2R1bGUoIm1vZGVs
Iik7CisKK3ZhciBrRXhhbXBsZUNvbW1pdERhdGFYTUwgPQorICAgICc8P3htbCB2ZXJzaW9uPSIx
LjAiPz5cblxuJyArCisgICAgJzxyc3MgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVt
ZW50cy8xLjEvIiB2ZXJzaW9uPSIyLjAiPlxuXG4nICsKKyAgICAnICBcblxuJyArCisgICAgJ1xu
XG4nICsKKyAgICAnICA8Y2hhbm5lbD5cblxuJyArCisgICAgJyAgICA8dGl0bGU+UmV2aXNpb25z
IG9mIC90cnVuazwvdGl0bGU+XG5cbicgKworICAgICcgICAgPGxpbms+aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4nICsKKyAgICAnICAgIDxkZXNj
cmlwdGlvbj5UcmFjIExvZyAtIFJldmlzaW9ucyBvZiAvdHJ1bms8L2Rlc2NyaXB0aW9uPlxuXG4n
ICsKKyAgICAnICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+XG5cbicgKworICAgICcgICAg
PGdlbmVyYXRvcj5UcmFjIDAuMTEuNzwvZ2VuZXJhdG9yPlxuXG4nICsKKyAgICAnICAgIDxpbWFn
ZT5cblxuJyArCisgICAgJyAgICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPlxuXG4nICsKKyAgICAn
ICAgICAgPHVybD5odHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24ucG5nPC91
cmw+XG5cbicgKworICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90
cnVuaz9yZXY9OTIzNjI8L2xpbms+XG5cbicgKworICAgICcgICAgPC9pbWFnZT5cblxuJyArCisg
ICAgJyAgICA8aXRlbT5cbicgKworICAgICcgICAgICAgICAgPGF1dGhvcj5jb21taXQtcXVldWVA
d2Via2l0Lm9yZzwvYXV0aG9yPlxuJyArCisgICAgJyAgICAgIDxwdWJEYXRlPldlZCwgMDMgQXVn
IDIwMTEgMDQ6MjY6NTIgR01UPC9wdWJEYXRlPlxuJyArCisgICAgJyAgICAgIDx0aXRsZT5SZXZp
c2lvbiA5MjI1OTogVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyMjU2LlxuJyArCisgICAgJ2h0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IC4uLjwvdGl0bGU+XG4nICsKKyAg
ICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTkvdHJ1
bms8L2xpbms+XG4nICsKKyAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1OS90cnVuazwvZ3VpZD5cbicgKworICAg
ICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKKyAgICAnVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgJmx0O2EgY2xhc3M9ImNoYW5nZXNldCIgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIyNTYiIHRpdGxlPSJNYWtlIEV2ZW50RGlzcGF0Y2hNZWRpYXRvciBS
ZWZDb3VudGVkLiAuLi4iJmd0O3I5MjI1NiZsdDsvYSZndDsuXG4nICsKKyAgICAnJmx0O2EgY2xh
c3M9ImV4dC1saW5rIiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1
NiImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTYmbHQ7L2EmZ3Q7XG4nICsKKyAgICAnJmx0O2EgY2xh
c3M9ImV4dC1saW5rIiBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjU1OTMiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFuJmd0O2h0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5MyZsdDsvYSZndDtcbicgKwor
ICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnJmx0O3AmZ3Q7XG4nICsKKyAgICAnQ2F1c2luZyB0
b25zIG9mIGNyYXNoZXMgb24gdGhlIGNocm9taXVtIHdpbiBib3RzIChSZXF1ZXN0ZWQgYnlcbicg
KworICAgICdqYW1lc3Igb24gI3dlYmtpdCkuXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisg
ICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ1BhdGNoIGJ5IFNoZXJpZmYgQm90ICZhbXA7bHQ7Jmx0
O2EgY2xhc3M9Im1haWwtbGluayIgaHJlZj0ibWFpbHRvOndlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbSImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tJmx0Oy9hJmd0OyZhbXA7Z3Q7IG9uIDIwMTEtMDgtMDJcbicgKwor
ICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnJmx0O3AmZ3Q7XG4nICsKKyAgICAnKiBkb20vRXZl
bnQuY3BwOlxuJyArCisgICAgJyogZG9tL0V2ZW50Lmg6XG4nICsKKyAgICAnKiBkb20vRXZlbnRE
aXNwYXRjaGVyLmNwcDpcbicgKworICAgICcoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEV2ZW50KTpcbicgKworICAgICcqIGRvbS9FdmVudERpc3BhdGNoZXIuaDpcbicgKworICAg
ICcqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDpcbicgKworICAgICcqIGRvbS9LZXlib2FyZEV2ZW50
Lmg6XG4nICsKKyAgICAnKiBkb20vTW91c2VFdmVudC5jcHA6XG4nICsKKyAgICAnKiBkb20vTW91
c2VFdmVudC5oOlxuJyArCisgICAgJyogZG9tL05vZGUuY3BwOlxuJyArCisgICAgJyhXZWJDb3Jl
OjpOb2RlOjpkaXNwYXRjaEV2ZW50KTpcbicgKworICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0
Y2hLZXlFdmVudCk6XG4nICsKKyAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoTW91c2VFdmVu
dCk6XG4nICsKKyAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoV2hlZWxFdmVudCk6XG4nICsK
KyAgICAnKiBkb20vV2hlZWxFdmVudC5jcHA6XG4nICsKKyAgICAnKiBkb20vV2hlZWxFdmVudC5o
OlxuJyArCisgICAgJyZsdDsvcCZndDtcbicgKworICAgICc8L2Rlc2NyaXB0aW9uPlxuJyArCisg
ICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCisgICAgJyAgICA8L2l0ZW0+
PGl0ZW0+XG4nICsKKyAgICAnICAgICAgICAgIDxhdXRob3I+bWFjcGhlcnNvbkBjaHJvbWl1bS5v
cmc8L2F1dGhvcj5cblxuJyArCisgICAgJyAgICAgIDxwdWJEYXRlPlRodSwgMDQgQXVnIDIwMTEg
MDI6MDk6MTkgR01UPC9wdWJEYXRlPlxuXG4nICsKKyAgICAnICAgICAgPHRpdGxlPlJldmlzaW9u
IDkyMjU2OiBTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNp
emluZywgdXNlIGluIC4uLjwvdGl0bGU+XG5cbicgKworICAgICcgICAgICA8bGluaz5odHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1Ni90cnVuazwvbGluaz5cblxuJyArCisgICAg
JyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTIyNTYvdHJ1bms8L2d1aWQ+XG5cbicgKworICAgICcgICAgICA8ZGVzY3JpcHRp
b24+Jmx0O3AmZ3Q7XG5cbicgKworICAgICdTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRp
dmVWYWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGluIENTU1N0eWxlU2VsZWN0b3IuXG5cbicgKwor
ICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTY1NyImZ3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7
L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU3Jmx0
Oy9hJmd0O1xuXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuXG4nICsKKyAgICAnJmx0O3AmZ3Q7XG5c
bicgKworICAgICdSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuXG5cbicgKworICAgICcmbHQ7L3Am
Z3Q7XG5cbicgKworICAgICcmbHQ7cCZndDtcblxuJyArCisgICAgJ05vIG5ldyB0ZXN0cyAvIHJl
ZmFjdG9yaW5nIG9ubHkuXG5cbicgKworICAgICcmbHQ7L3AmZ3Q7XG5cbicgKworICAgICcmbHQ7
cCZndDtcblxuJyArCisgICAgJyogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDpcblxu
JyArCisgICAgJyhXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUp
OlxuXG4nICsKKyAgICAnSW1wbGVtZW50IGNhc3QgZnJvbSBFQm94U2l6aW5nLlxuJyArCisgICAg
JyhXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJveFNpemluZyk6XG4nICsK
KyAgICAnSW1wbGVtZW50IGNhc3QgdG8gRUJveFNpemluZy5cbicgKworICAgICcqIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcDpcbicgKworICAgICcoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eSk6XG4nICsKKyAgICAnVXNlIGFwcHJvcHJpYXRlIG1hY3JvIHRvIHNpbXBs
aWZ5IGNvZGUgdXNpbmcgY2FzdC5cbicgKworICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnPC9k
ZXNjcmlwdGlvbj5cbicgKworICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicg
KworICAgICcgICAgPC9pdGVtPlxuJyArCisgICAgJyA8L2NoYW5uZWw+XG4nICsKKyAgICAnPC9y
c3M+XG4nCisKK3Rlc3QoInJlYmFzZWxpbmVRdWV1ZSIsIDMsIGZ1bmN0aW9uKCkgeworICAgIHZh
ciBxdWV1ZSA9IG1vZGVsLnRha2VSZWJhc2VsaW5lUXVldWUoKTsKKyAgICBkZWVwRXF1YWwocXVl
dWUsIFtdKTsKKyAgICBtb2RlbC5xdWV1ZUZvclJlYmFzZWxpbmUoJ2ZhaWx1cmVJbmZvMScpOwor
ICAgIG1vZGVsLnF1ZXVlRm9yUmViYXNlbGluZSgnZmFpbHVyZUluZm8yJyk7CisgICAgdmFyIHF1
ZXVlID0gbW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOworICAgIGRlZXBFcXVhbChxdWV1ZSwg
WydmYWlsdXJlSW5mbzEnLCAnZmFpbHVyZUluZm8yJ10pOworICAgIHZhciBxdWV1ZSA9IG1vZGVs
LnRha2VSZWJhc2VsaW5lUXVldWUoKTsKKyAgICBkZWVwRXF1YWwocXVldWUsIFtdKTsKK30pOwor
Cit0ZXN0KCJyZWJhc2VsaW5lUXVldWUiLCAzLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgcXVldWUg
PSBtb2RlbC50YWtlRXhwZWN0YXRpb25VcGRhdGVRdWV1ZSgpOworICAgIGRlZXBFcXVhbChxdWV1
ZSwgW10pOworICAgIG1vZGVsLnF1ZXVlRm9yRXhwZWN0YXRpb25VcGRhdGUoJ2ZhaWx1cmVJbmZv
MScpOworICAgIG1vZGVsLnF1ZXVlRm9yRXhwZWN0YXRpb25VcGRhdGUoJ2ZhaWx1cmVJbmZvMicp
OworICAgIHZhciBxdWV1ZSA9IG1vZGVsLnRha2VFeHBlY3RhdGlvblVwZGF0ZVF1ZXVlKCk7Cisg
ICAgZGVlcEVxdWFsKHF1ZXVlLCBbJ2ZhaWx1cmVJbmZvMScsICdmYWlsdXJlSW5mbzInXSk7Cisg
ICAgdmFyIHF1ZXVlID0gbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVldWUoKTsKKyAgICBk
ZWVwRXF1YWwocXVldWUsIFtdKTsKK30pOworCit0ZXN0KCJ1cGRhdGVSZWNlbnRDb21taXRzIiwg
MiwgZnVuY3Rpb24oKSB7CisgICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9y
KCk7CisKKyAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKKyAgICAgICAgICAgIHZhciByZXNw
b25zZURPTSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoa0V4YW1wbGVDb21taXREYXRhWE1MLCAi
YXBwbGljYXRpb24veG1sIik7CisgICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZURPTSk7Cisg
ICAgICAgIH0pOworICAgIH07CisKKyAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsK
KyAgICAgICAgbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0cyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHZhciByZWNlbnRDb21taXRzID0gbW9kZWwuc3RhdGUucmVjZW50Q29tbWl0czsKKyAgICAg
ICAgICAgIGRlbGV0ZSBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzOworICAgICAgICAgICAgJC5l
YWNoKHJlY2VudENvbW1pdHMsIGZ1bmN0aW9uKGluZGV4LCBjb21taXREYXRhKSB7CisgICAgICAg
ICAgICAgICAgZGVsZXRlIGNvbW1pdERhdGEubWVzc2FnZTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgZGVlcEVxdWFsKHJlY2VudENvbW1pdHMsIFt7CisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogOTIyNTksCisgICAgICAgICAgICAgICAgInRpdGxlIjogIlJldmlzaW9uIDkyMjU5
OiBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTIyNTYuXG5odHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC85MjI1NiAuLi4iLAorICAgICAgICAgICAgICAgICJ0aW1lIjogIldlZCwgMDMg
QXVnIDIwMTEgMDQ6MjY6NTIgR01UIiwKKyAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByOTIyNTYuIiwKKyAgICAgICAgICAgICAgICAiYXV0aG9yIjog
IlNoZXJpZmYgQm90IiwKKyAgICAgICAgICAgICAgICAicmV2aWV3ZXIiOiBudWxsLAorICAgICAg
ICAgICAgICAgICJidWdJRCI6IDY1NTkzLAorICAgICAgICAgICAgICAgICJyZXZlcnRlZFJldmlz
aW9uIjogOTIyNTYKKyAgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgInJldmlzaW9u
IjogOTIyNTYsCisgICAgICAgICAgICAgICAgInRpdGxlIjogIlJldmlzaW9uIDkyMjU2OiBTdXBw
b3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGlu
IC4uLiIsCisgICAgICAgICAgICAgICAgInRpbWUiOiAiVGh1LCAwNCBBdWcgMjAxMSAwMjowOTox
OSBHTVQiLAorICAgICAgICAgICAgICAgICJzdW1tYXJ5IjogIlN1cHBvcnQgY2FzdCBiZXR3ZWVu
IENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gQ1NTU3R5bGVTZWxlY3Rv
ci4iLAorICAgICAgICAgICAgICAgICJhdXRob3IiOiAibWFjcGhlcnNvbkBjaHJvbWl1bS5vcmci
LAorICAgICAgICAgICAgICAgICJyZXZpZXdlciI6ICJTaW1vbiBGcmFzZXIiLAorICAgICAgICAg
ICAgICAgICJidWdJRCI6IDY1NjU3LAorICAgICAgICAgICAgICAgICJyZXZlcnRlZFJldmlzaW9u
IjogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICJ3YXNSZXZlcnRlZCI6IHRydWUKKyAgICAg
ICAgICAgIH1dKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKKwordGVzdCgiY29tbWl0RGF0
YUxpc3RGb3JSZXZpc2lvblJhbmdlIiwgNiwgZnVuY3Rpb24oKSB7CisgICAgdmFyIHNpbXVsYXRv
ciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7CisKKyAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rp
b24odXJsLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxi
YWNrKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIo
KTsKKyAgICAgICAgICAgIHZhciByZXNwb25zZURPTSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmco
a0V4YW1wbGVDb21taXREYXRhWE1MLCAiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgICAgICBj
YWxsYmFjayhyZXNwb25zZURPTSk7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBzaW11bGF0
b3IucnVuVGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0
cyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4dHJhY3RCdWdJRHMoY29tbWl0
RGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0RGF0YS5i
dWdJRDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1p
dERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5MjI1OSwgOTIyNTkpLm1hcChleHRyYWN0QnVnSURz
KSwgWzY1NTkzXSk7CisgICAgICAgICAgICBkZWVwRXF1YWwobW9kZWwuY29tbWl0RGF0YUxpc3RG
b3JSZXZpc2lvblJhbmdlKDkyMjU2LCA5MjI1OSkubWFwKGV4dHJhY3RCdWdJRHMpLCBbNjU2NTcs
IDY1NTkzXSk7CisgICAgICAgICAgICBkZWVwRXF1YWwobW9kZWwuY29tbWl0RGF0YUxpc3RGb3JS
ZXZpc2lvblJhbmdlKDkyMjU5LCA5MjI1NikubWFwKGV4dHJhY3RCdWdJRHMpLCBbXSk7CisgICAg
ICAgICAgICBkZWVwRXF1YWwobW9kZWwuY29tbWl0RGF0YUxpc3RGb3JSZXZpc2lvblJhbmdlKDAs
IDkyMjU2KS5tYXAoZXh0cmFjdEJ1Z0lEcyksIFs2NTY1N10pOworICAgICAgICAgICAgZGVlcEVx
dWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5MjI1NiwgMCkubWFwKGV4
dHJhY3RCdWdJRHMpLCBbXSk7CisgICAgICAgICAgICBkZWxldGUgbW9kZWwuc3RhdGUucmVjZW50
Q29tbWl0czsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKKworfSkoKTsKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL25ldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9uZXQuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbmV0
LmpzOjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbmV0LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordmFyIG5ldCA9IG5ldCB8fCB7fTsK
KworKGZ1bmN0aW9uICgpIHsKKworbmV0LnBvc3QgPSAkLnBvc3Q7CituZXQuZ2V0ID0gJC5nZXQ7
CituZXQuYWpheCA9ICQuYWpheDsKKworbmV0LnByb2JlID0gZnVuY3Rpb24odXJsLCBvcHRpb25z
KQoreworICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2Ny
aXB0Jyk7CisgICAgc2NyaXB0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rp
b24oKSB7CisgICAgICAgICQoc2NyaXB0RWxlbWVudCkuZGV0YWNoKCk7CisgICAgICAgIGlmIChv
cHRpb25zLnN1Y2Nlc3MpCisgICAgICAgICAgICBvcHRpb25zLnN1Y2Nlc3MuY2FsbCgpOworICAg
IH0sIGZhbHNlKTsKKyAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywg
ZnVuY3Rpb24oKSB7CisgICAgICAgICQoc2NyaXB0RWxlbWVudCkuZGV0YWNoKCk7CisgICAgICAg
IGlmIChvcHRpb25zLmVycm9yKQorICAgICAgICAgICAgb3B0aW9ucy5lcnJvci5jYWxsKCk7Cisg
ICAgfSwgZmFsc2UpOworICAgIHNjcmlwdEVsZW1lbnQuc3JjID0gdXJsOworICAgIGRvY3VtZW50
LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0RWxlbWVudCk7Cit9OworCisvLyBqUXVlcnkgbWFrZXMg
anNvbnAgcmVxdWVzdHMgc29tZXdoYXQgdWdseSAod2hpY2ggaXMgZmFpciBnaXZlbiB0aGF0IHRo
ZXkncmUKKy8vIHRlcnJpYmxlIGZvciBzZWN1cml0eSkuIFdlIHVzZSB0aGlzIHdyYXBwZXIgdG8g
bWFrZSBvdXIgbGl2ZXMgc2xpZ2h0bHkgZWFzaWVyLgorbmV0Lmpzb25wID0gZnVuY3Rpb24odXJs
LCBvbnN1Y2Nlc3MpCit7CisgICAgJC5hamF4KHsKKyAgICAgICAgdXJsOiB1cmwsCisgICAgICAg
IGRhdGFUeXBlOiAnanNvbnAnLAorICAgICAgICBzdWNjZXNzOiBvbnN1Y2Nlc3MKKyAgICB9KTsK
K307CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9uZXRfdW5pdHRlc3Rz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldF91bml0dGVzdHMu
anMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbmV0X3VuaXR0ZXN0cy5q
czo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldF91bml0dGVzdHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBFeHBvcnQgTmV0
d29ya1NpbXVsYXRvciBmb3IgdXNlIGJ5IG90aGVyIHVuaXR0ZXN0cy4KK2Z1bmN0aW9uIE5ldHdv
cmtTaW11bGF0b3IoKQoreworICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBbXTsKK307CisK
K05ldHdvcmtTaW11bGF0b3IucHJvdG90eXBlLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbihj
YWxsYmFjaykKK3sKKyAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwor
fTsKKworTmV0d29ya1NpbXVsYXRvci5wcm90b3R5cGUucnVuVGVzdCA9IGZ1bmN0aW9uKHRlc3RD
YXNlKQoreworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB2YXIgcmVhbE5ldCA9IHdpbmRvdy5u
ZXQ7CisKKyAgICB3aW5kb3cubmV0ID0ge307CisgICAgaWYgKHNlbGYucHJvYmUpCisgICAgICAg
IG5ldC5wcm9iZSA9IHNlbGYucHJvYmU7CisgICAgaWYgKHNlbGYuanNvbnApCisgICAgICAgIG5l
dC5qc29ucCA9IHNlbGYuanNvbnA7CisgICAgaWYgKHNlbGYuZ2V0KQorICAgICAgICBuZXQuZ2V0
ID0gc2VsZi5nZXQ7CisgICAgaWYgKHNlbGYucG9zdCkKKyAgICAgICAgbmV0LnBvc3QgPSBzZWxm
LnBvc3Q7CisgICAgaWYgKHNlbGYuYWpheCkKKyAgICAgICAgbmV0LmFqYXggPSBzZWxmLmFqYXg7
CisKKyAgICB0ZXN0Q2FzZSgpOworCisgICAgd2hpbGUgKHRoaXMuX3BlbmRpbmdDYWxsYmFja3Mu
bGVuZ3RoKSB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX3BlbmRpbmdDYWxsYmFja3Mu
c2hpZnQoKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9CisKKyAgICB3aW5kb3cubmV0ID0g
cmVhbE5ldDsKKyAgICBlcXVhbCh3aW5kb3cubmV0LCByZWFsTmV0LCAiRmFpbGVkIHRvIHJlc3Rv
cmUgcmVhbCBiYXNlISIpOworfTsKKworKGZ1bmN0aW9uICgpIHsKKworbW9kdWxlKCJuZXQiKTsK
KworLy8gTm8gdW5pdCB0ZXN0cyB5ZXQhCisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9yZXN1bHRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L3Jlc3VsdHMuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0
cy5qczo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordmFyIHJlc3VsdHMgPSBy
ZXN1bHRzIHx8IHt9OworCisoZnVuY3Rpb24oKSB7CisKK3ZhciBrVGVzdFJlc3VsdHNTZXJ2ZXIg
PSAnaHR0cDovL3Rlc3QtcmVzdWx0cy5hcHBzcG90LmNvbS8nOwordmFyIGtUZXN0UmVzdWx0c1F1
ZXJ5ID0ga1Rlc3RSZXN1bHRzU2VydmVyICsgJ3Rlc3RmaWxlPycKK3ZhciBrVGVzdFR5cGUgPSAn
bGF5b3V0LXRlc3RzJzsKK3ZhciBrUmVzdWx0c05hbWUgPSAnZnVsbF9yZXN1bHRzLmpzb24nOwor
dmFyIGtNYXN0ZXJOYW1lID0gJ0Nocm9taXVtV2Via2l0JzsKKwordmFyIGtMYXlvdXRUZXN0UmVz
dWx0c1NlcnZlciA9ICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0
X3Rlc3RfcmVzdWx0cy8nOwordmFyIGtMYXlvdXRUZXN0UmVzdWx0c1BhdGggPSAnL3Jlc3VsdHMv
bGF5b3V0LXRlc3QtcmVzdWx0cy8nOworCit2YXIgUEFTUyA9ICdQQVNTJzsKK3ZhciBUSU1FT1VU
ID0gJ1RJTUVPVVQnOwordmFyIFRFWFQgPSAnVEVYVCc7Cit2YXIgQ1JBU0ggPSAnQ1JBU0gnOwor
dmFyIElNQUdFID0gJ0lNQUdFJzsKK3ZhciBJTUFHRV9URVhUID0gJ0lNQUdFK1RFWFQnOworCit2
YXIga0ZhaWxpbmdSZXN1bHRzID0gW1RJTUVPVVQsIFRFWFQsIENSQVNILCBJTUFHRSwgSU1BR0Vf
VEVYVF07CisKK3ZhciBrRXhwZWN0ZWRJbWFnZVN1ZmZpeCA9ICctZXhwZWN0ZWQucG5nJzsKK3Zh
ciBrQWN0dWFsSW1hZ2VTdWZmaXggPSAnLWFjdHVhbC5wbmcnOwordmFyIGtJbWFnZURpZmZTdWZm
aXggPSAnLWRpZmYucG5nJzsKK3ZhciBrVGV4dERpZmZTdWZmaXggPSAnLWRpZmYudHh0JzsKK3Zh
ciBrQ3Jhc2hMb2dTdWZmaXggPSAnLWNyYXNoLWxvZy50eHQnOworCit2YXIga1BOR0V4dGVuc2lv
biA9ICdwbmcnOwordmFyIGtUWFRFeHRlbnNpb24gPSAndHh0JzsKKwordmFyIGtQcmVmZXJyZWRT
dWZmaXhPcmRlciA9IFsKKyAgICBrRXhwZWN0ZWRJbWFnZVN1ZmZpeCwKKyAgICBrQWN0dWFsSW1h
Z2VTdWZmaXgsCisgICAga0ltYWdlRGlmZlN1ZmZpeCwKKyAgICBrVGV4dERpZmZTdWZmaXgsCisg
ICAga0NyYXNoTG9nU3VmZml4LAorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHJl
c3Qgb2YgdGhlIHJlc3VsdCB0eXBlcy4KK107CisKKy8vIEtpbmRzIG9mIHJlc3VsdHMuCityZXN1
bHRzLmtBY3R1YWxLaW5kID0gJ2FjdHVhbCc7CityZXN1bHRzLmtFeHBlY3RlZEtpbmQgPSAnZXhw
ZWN0ZWQnOworcmVzdWx0cy5rRGlmZktpbmQgPSAnZGlmZic7CityZXN1bHRzLmtVbmtub3duS2lu
ZCA9ICd1bmtub3duJzsKKworLy8gVHlwZXMgb2YgdGVzdHMuCityZXN1bHRzLmtJbWFnZVR5cGUg
PSAnaW1hZ2UnCityZXN1bHRzLmtUZXh0VHlwZSA9ICd0ZXh0JworLy8gRklYTUU6IFRoZXJlIGFy
ZSBtb3JlIHR5cGVzIG9mIHRlc3RzLgorCitmdW5jdGlvbiBpc0ZhaWx1cmUocmVzdWx0KQorewor
ICAgIHJldHVybiBrRmFpbGluZ1Jlc3VsdHMuaW5kZXhPZihyZXN1bHQpICE9IC0xOworfQorCitm
dW5jdGlvbiBpc1N1Y2Nlc3MocmVzdWx0KQoreworICAgIHJldHVybiByZXN1bHQgPT09IFBBU1M7
Cit9CisKK2Z1bmN0aW9uIHJlc3VsdHNQYXJhbWV0ZXJzKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSkK
K3sKKyAgICByZXR1cm4geworICAgICAgICBidWlsZGVyOiBidWlsZGVyTmFtZSwKKyAgICAgICAg
bWFzdGVyOiBrTWFzdGVyTmFtZSwKKyAgICAgICAgdGVzdHR5cGU6IGtUZXN0VHlwZSwKKyAgICAg
ICAgbmFtZTogdGVzdE5hbWUsCisgICAgfTsKK30KKworZnVuY3Rpb24gcG9zc2libGVTdWZmaXhM
aXN0Rm9yKGZhaWx1cmVUeXBlTGlzdCkKK3sKKyAgICB2YXIgc3VmZml4TGlzdCA9IFtdOworCisg
ICAgZnVuY3Rpb24gcHVzaEltYWdlU3VmZml4ZXMoKQorICAgIHsKKyAgICAgICAgc3VmZml4TGlz
dC5wdXNoKGtFeHBlY3RlZEltYWdlU3VmZml4KTsKKyAgICAgICAgc3VmZml4TGlzdC5wdXNoKGtB
Y3R1YWxJbWFnZVN1ZmZpeCk7CisgICAgICAgIHN1ZmZpeExpc3QucHVzaChrSW1hZ2VEaWZmU3Vm
Zml4KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwdXNoVGV4dFN1ZmZpeGVzKCkKKyAgICB7Cisg
ICAgICAgIC8vICctZXhwZWN0ZWQudHh0JywKKyAgICAgICAgLy8gJy1hY3R1YWwudHh0JywKKyAg
ICAgICAgc3VmZml4TGlzdC5wdXNoKGtUZXh0RGlmZlN1ZmZpeCk7CisgICAgICAgIC8vICctd2Rp
ZmYuaHRtbCcsCisgICAgICAgIC8vICctcHJldHR5LWRpZmYuaHRtbCcsCisgICAgfQorCisgICAg
JC5lYWNoKGZhaWx1cmVUeXBlTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGZhaWx1cmVUeXBlKSB7Cisg
ICAgICAgIHN3aXRjaChmYWlsdXJlVHlwZSkgeworICAgICAgICBjYXNlIElNQUdFOgorICAgICAg
ICAgICAgcHVzaEltYWdlU3VmZml4ZXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFRFWFQ6CisgICAgICAgICAgICBwdXNoVGV4dFN1ZmZpeGVzKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJTUFHRV9URVhUOgorICAgICAgICAgICAgcHVzaEltYWdlU3Vm
Zml4ZXMoKTsKKyAgICAgICAgICAgIHB1c2hUZXh0U3VmZml4ZXMoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENSQVNIOgorICAgICAgICAgICAgc3VmZml4TGlzdC5wdXNoKGtD
cmFzaExvZ1N1ZmZpeCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHJlc3Vs
dCB0eXBlcy4KKyAgICAgICAgICAgIC8vICctZXhwZWN0ZWQuaHRtbCcsCisgICAgICAgICAgICAv
LyAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLAorICAgICAgICAgICAgLy8gJy1leHBlY3RlZC53
YXYnLAorICAgICAgICAgICAgLy8gJy1hY3R1YWwud2F2JywKKyAgICAgICAgICAgIC8vIC4uLiBh
bmQgcG9zc2libHkgbW9yZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICByZXR1cm4gYmFzZS51bmlxdWlmeUFycmF5KHN1ZmZpeExpc3QpOworfQorCityZXN1
bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0ID0gZnVuY3Rpb24oZmFpbHVyZVR5cGUpCit7
CisgICAgc3dpdGNoKGZhaWx1cmVUeXBlKSB7CisgICAgY2FzZSBJTUFHRToKKyAgICAgICAgcmV0
dXJuIFtrUE5HRXh0ZW5zaW9uXTsKKyAgICBjYXNlIFRFWFQ6CisgICAgICAgIHJldHVybiBba1RY
VEV4dGVuc2lvbl07CisgICAgY2FzZSBJTUFHRV9URVhUOgorICAgICAgICByZXR1cm4gW2tUWFRF
eHRlbnNpb24sIGtQTkdFeHRlbnNpb25dOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1F
OiBBZGQgc3VwcG9ydCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHJlc3VsdCB0eXBlcy4KKyAgICAgICAg
Ly8gJy1leHBlY3RlZC5odG1sJywKKyAgICAgICAgLy8gJy1leHBlY3RlZC1taXNtYXRjaC5odG1s
JywKKyAgICAgICAgLy8gJy1leHBlY3RlZC53YXYnLAorICAgICAgICAvLyAnLWFjdHVhbC53YXYn
LAorICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG1vcmUuCisgICAgICAgIHJldHVybiBbXTsK
KyAgICB9Cit9OworCityZXN1bHRzLmZhaWx1cmVUeXBlTGlzdCA9IGZ1bmN0aW9uKGZhaWx1cmVC
bG9iKQoreworICAgIHJldHVybiBmYWlsdXJlQmxvYi5zcGxpdCgnICcpOworfTsKKworcmVzdWx0
cy5jYW5SZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVyZVR5cGVMaXN0KQoreworICAgIHJldHVy
biBmYWlsdXJlVHlwZUxpc3Quc29tZShmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgIHJldHVy
biByZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KGVsZW1lbnQpLmxlbmd0aCA+IDA7
CisgICAgfSk7Cit9OworCitmdW5jdGlvbiByZXN1bHRzU3VtbWFyeVVSTChidWlsZGVyTmFtZSwg
dGVzdE5hbWUpCit7CisgICAgcmV0dXJuIGtUZXN0UmVzdWx0c1F1ZXJ5ICsgJC5wYXJhbShyZXN1
bHRzUGFyYW1ldGVycyhidWlsZGVyTmFtZSwgdGVzdE5hbWUpKTsKK30KKworZnVuY3Rpb24gZGly
ZWN0b3J5T2ZSZXN1bHRzU3VtbWFyeVVSTChidWlsZGVyTmFtZSwgdGVzdE5hbWUpCit7CisgICAg
dmFyIHBhcmFtZXRlcnMgPSByZXN1bHRzUGFyYW1ldGVycyhidWlsZGVyTmFtZSwgdGVzdE5hbWUp
OworICAgIHBhcmFtZXRlcnNbJ2RpciddID0gMTsKKyAgICByZXR1cm4ga1Rlc3RSZXN1bHRzUXVl
cnkgKyAkLnBhcmFtKHBhcmFtZXRlcnMpOworfQorCit2YXIgZ19yZXN1bHRzQ2FjaGUgPSBuZXcg
YmFzZS5Bc3luY2hyb25vdXNDYWNoZShmdW5jdGlvbihrZXksIGNhbGxiYWNrKSB7CisgICAgbmV0
Lmpzb25wKGtUZXN0UmVzdWx0c1NlcnZlciArICd0ZXN0ZmlsZT9rZXk9JyArIGtleSwgY2FsbGJh
Y2spOworfSk7CisKK2Z1bmN0aW9uIGFueUlzRmFpbHVyZShyZXN1bHRzTGlzdCkKK3sKKyAgICBy
ZXR1cm4gJC5ncmVwKHJlc3VsdHNMaXN0LCBpc0ZhaWx1cmUpLmxlbmd0aCA+IDA7Cit9CisKK2Z1
bmN0aW9uIGFueUlzU3VjY2VzcyhyZXN1bHRzTGlzdCkKK3sKKyAgICByZXR1cm4gJC5ncmVwKHJl
c3VsdHNMaXN0LCBpc1N1Y2Nlc3MpLmxlbmd0aCA+IDA7Cit9CisKK2Z1bmN0aW9uIGFkZEltcGxp
ZWRFeHBlY3RhdGlvbnMocmVzdWx0c0xpc3QpCit7CisgICAgaWYgKHJlc3VsdHNMaXN0LmluZGV4
T2YoJ0ZBSUwnKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHNMaXN0OworICAgIHJldHVy
biByZXN1bHRzTGlzdC5jb25jYXQoa0ZhaWxpbmdSZXN1bHRzKTsKK30KKworcmVzdWx0cy51bmV4
cGVjdGVkUmVzdWx0cyA9IGZ1bmN0aW9uKHJlc3VsdE5vZGUpCit7CisgICAgdmFyIGFjdHVhbFJl
c3VsdHMgPSByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCk7CisgICAg
dmFyIGV4cGVjdGVkUmVzdWx0cyA9IGFkZEltcGxpZWRFeHBlY3RhdGlvbnMocmVzdWx0cy5mYWls
dXJlVHlwZUxpc3QocmVzdWx0Tm9kZS5leHBlY3RlZCkpCisKKyAgICByZXR1cm4gJC5ncmVwKGFj
dHVhbFJlc3VsdHMsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICByZXR1cm4gZXhwZWN0ZWRS
ZXN1bHRzLmluZGV4T2YocmVzdWx0KSA9PSAtMTsKKyAgICB9KTsKK307CisKK2Z1bmN0aW9uIGlz
RXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpCit7CisgICAgaWYgKCFyZXN1
bHROb2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFyIGFjdHVhbFJlc3VsdHMgPSBy
ZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCk7CisgICAgaWYgKGFueUlz
U3VjY2VzcyhhY3R1YWxSZXN1bHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBhbnlJc0ZhaWx1cmUoYWN0dWFsUmVzdWx0cyk7Cit9CisKK2Z1bmN0aW9uIGlzVW5leHBlY3Rl
ZEZhaWx1cmUocmVzdWx0Tm9kZSkKK3sKKyAgICBpZiAoIXJlc3VsdE5vZGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYW55SXNTdWNjZXNzKHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0
KHJlc3VsdE5vZGUuYWN0dWFsKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
YW55SXNGYWlsdXJlKHJlc3VsdHMudW5leHBlY3RlZFJlc3VsdHMocmVzdWx0Tm9kZSkpOworfQor
CitmdW5jdGlvbiBpc1VuZXhwZWN0ZWRTdWNjZXNzZXMocmVzdWx0Tm9kZSkKK3sKKyAgICBpZiAo
IXJlc3VsdE5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYW55SXNGYWlsdXJl
KHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3VsdE5vZGUuYWN0dWFsKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gYW55SXNTdWNjZXNzKHJlc3VsdHMudW5leHBlY3RlZFJl
c3VsdHMocmVzdWx0Tm9kZSkpOworfQorCitmdW5jdGlvbiBpc1Jlc3VsdE5vZGUobm9kZSkKK3sK
KyAgICByZXR1cm4gISFub2RlLmFjdHVhbDsKK30KKworcmVzdWx0cy5leHBlY3RlZE9yVW5leHBl
Y3RlZEZhaWx1cmVzID0gZnVuY3Rpb24ocmVzdWx0c1RyZWUpCit7CisgICAgcmV0dXJuIGJhc2Uu
ZmlsdGVyVHJlZShyZXN1bHRzVHJlZS50ZXN0cywgaXNSZXN1bHROb2RlLCBpc0V4cGVjdGVkT3JV
bmV4cGVjdGVkRmFpbHVyZSk7Cit9OworCityZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlcyA9IGZ1
bmN0aW9uKHJlc3VsdHNUcmVlKQoreworICAgIHJldHVybiBiYXNlLmZpbHRlclRyZWUocmVzdWx0
c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwgaXNVbmV4cGVjdGVkRmFpbHVyZSk7Cit9OworCity
ZXN1bHRzLnVuZXhwZWN0ZWRTdWNjZXNzZXMgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSkKK3sKKyAg
ICByZXR1cm4gYmFzZS5maWx0ZXJUcmVlKHJlc3VsdHNUcmVlLnRlc3RzLCBpc1Jlc3VsdE5vZGUs
IGlzVW5leHBlY3RlZFN1Y2Nlc3Nlcyk7Cit9OworCitmdW5jdGlvbiByZXN1bHRzQnlUZXN0KHJl
c3VsdHNCeUJ1aWxkZXIsIGZpbHRlcikKK3sKKyAgICB2YXIgcmVzdWx0c0J5VGVzdCA9IHt9Owor
CisgICAgJC5lYWNoKHJlc3VsdHNCeUJ1aWxkZXIsIGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCByZXN1
bHRzVHJlZSkgeworICAgICAgICAkLmVhY2goZmlsdGVyKHJlc3VsdHNUcmVlKSwgZnVuY3Rpb24o
dGVzdE5hbWUsIHJlc3VsdE5vZGUpIHsKKyAgICAgICAgICAgIHJlc3VsdHNCeVRlc3RbdGVzdE5h
bWVdID0gcmVzdWx0c0J5VGVzdFt0ZXN0TmFtZV0gfHwge307CisgICAgICAgICAgICByZXN1bHRz
QnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0gPSByZXN1bHROb2RlOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIHJldHVybiByZXN1bHRzQnlUZXN0OworfQorCityZXN1bHRzLmV4cGVj
dGVkT3JVbmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVy
KQoreworICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsIHJlc3VsdHMu
ZXhwZWN0ZWRPclVuZXhwZWN0ZWRGYWlsdXJlcyk7Cit9OworCityZXN1bHRzLnVuZXhwZWN0ZWRG
YWlsdXJlc0J5VGVzdCA9IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCit7CisgICAgcmV0dXJu
IHJlc3VsdHNCeVRlc3QocmVzdWx0c0J5QnVpbGRlciwgcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVy
ZXMpOworfTsKKworcmVzdWx0cy51bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0ID0gZnVuY3Rpb24o
cmVzdWx0c0J5QnVpbGRlcikKK3sKKyAgICByZXR1cm4gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlC
dWlsZGVyLCByZXN1bHRzLnVuZXhwZWN0ZWRTdWNjZXNzZXMpOworfTsKKworcmVzdWx0cy5jb2xs
ZWN0VW5leHBlY3RlZFJlc3VsdHMgPSBmdW5jdGlvbihkaWN0aW9uYXJ5T2ZSZXN1bHROb2RlcykK
K3sKKyAgICB2YXIgY29sbGVjdGVkUmVzdWx0cyA9IFtdOworICAgICQuZWFjaChkaWN0aW9uYXJ5
T2ZSZXN1bHROb2RlcywgZnVuY3Rpb24oa2V5LCByZXN1bHROb2RlKSB7CisgICAgICAgIGNvbGxl
Y3RlZFJlc3VsdHMgPSBjb2xsZWN0ZWRSZXN1bHRzLmNvbmNhdChyZXN1bHRzLnVuZXhwZWN0ZWRS
ZXN1bHRzKHJlc3VsdE5vZGUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gYmFzZS51bmlxdWlmeUFy
cmF5KGNvbGxlY3RlZFJlc3VsdHMpOworfTsKKworZnVuY3Rpb24gd2Fsa0hpc3RvcnkoYnVpbGRl
ck5hbWUsIHRlc3ROYW1lLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgaW5kZXhPZk5leHRLZXlUb0Zl
dGNoID0gMDsKKyAgICB2YXIga2V5TGlzdCA9IFtdOworCisgICAgZnVuY3Rpb24gY29udGludWVX
YWxrKCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleE9mTmV4dEtleVRvRmV0Y2ggPj0ga2V5TGlz
dC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHByb2Nlc3NSZXN1bHROb2RlKDAsIG51bGwpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGtleSA9IGtleUxpc3Rb
aW5kZXhPZk5leHRLZXlUb0ZldGNoXTsKKyAgICAgICAgKytpbmRleE9mTmV4dEtleVRvRmV0Y2g7
CisgICAgICAgIGdfcmVzdWx0c0NhY2hlLmdldChrZXksIGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7
CisgICAgICAgICAgICB2YXIgcmVzdWx0Tm9kZSA9IHJlc3VsdHMucmVzdWx0Tm9kZUZvclRlc3Qo
cmVzdWx0c1RyZWUsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIHZhciByZXZpc2lvbiA9IHBhcnNl
SW50KHJlc3VsdHNUcmVlWydyZXZpc2lvbiddKQorICAgICAgICAgICAgaWYgKGlzTmFOKHJldmlz
aW9uKSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IDA7CisgICAgICAgICAgICBwcm9jZXNz
UmVzdWx0Tm9kZShyZXZpc2lvbiwgcmVzdWx0Tm9kZSk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHByb2Nlc3NSZXN1bHROb2RlKHJldmlzaW9uLCByZXN1bHROb2RlKQorICAg
IHsKKyAgICAgICAgdmFyIHNob3VsZENvbnRpbnVlID0gY2FsbGJhY2socmV2aXNpb24sIHJlc3Vs
dE5vZGUpOworICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjb250aW51ZVdhbGsoKTsKKyAgICB9CisKKyAgICBuZXQuanNvbnAoZGlyZWN0
b3J5T2ZSZXN1bHRzU3VtbWFyeVVSTChidWlsZGVyTmFtZSwga1Jlc3VsdHNOYW1lKSwgZnVuY3Rp
b24oZGlyZWN0b3J5KSB7CisgICAgICAgIGtleUxpc3QgPSBkaXJlY3RvcnkubWFwKGZ1bmN0aW9u
IChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmtleTsgfSk7CisgICAgICAgIGNvbnRpbnVlV2Fs
aygpOworICAgIH0pOworfQorCityZXN1bHRzLnJlZ3Jlc3Npb25SYW5nZUZvckZhaWx1cmUgPSBm
dW5jdGlvbihidWlsZGVyTmFtZSwgdGVzdE5hbWUsIGNhbGxiYWNrKQoreworICAgIHZhciBvbGRl
c3RGYWlsaW5nUmV2aXNpb24gPSAwOworICAgIHZhciBuZXdlc3RQYXNzaW5nUmV2aXNpb24gPSAw
OworCisgICAgd2Fsa0hpc3RvcnkoYnVpbGRlck5hbWUsIHRlc3ROYW1lLCBmdW5jdGlvbihyZXZp
c2lvbiwgcmVzdWx0Tm9kZSkgeworICAgICAgICBpZiAoIXJldmlzaW9uKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhvbGRlc3RGYWlsaW5nUmV2aXNpb24sIG5ld2VzdFBhc3NpbmdSZXZpc2lvbik7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFyZXN1
bHROb2RlKSB7CisgICAgICAgICAgICBuZXdlc3RQYXNzaW5nUmV2aXNpb24gPSByZXZpc2lvbjsK
KyAgICAgICAgICAgIGNhbGxiYWNrKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2lu
Z1JldmlzaW9uKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoaXNVbmV4cGVjdGVkRmFpbHVyZShyZXN1bHROb2RlKSkgeworICAgICAgICAgICAgb2xk
ZXN0RmFpbGluZ1JldmlzaW9uID0gcmV2aXNpb247CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIW9sZGVzdEZhaWxpbmdSZXZpc2lvbikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOyAgLy8gV2UgbmVlZCB0byBrZWVwIGxvb2tpbmcgZm9yIGEgZmFpbGlu
ZyByZXZpc2lvbi4KKyAgICAgICAgbmV3ZXN0UGFzc2luZ1JldmlzaW9uID0gcmV2aXNpb247Cisg
ICAgICAgIGNhbGxiYWNrKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1Jldmlz
aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworfTsKKworZnVuY3Rpb24gbWVy
Z2VSZWdyZXNzaW9uUmFuZ2VzKHJlZ3Jlc3Npb25SYW5nZXMpCit7CisgICAgdmFyIG1lcmdlZFJh
bmdlID0ge307CisKKyAgICBtZXJnZWRSYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24gPSAwOwor
ICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IDA7CisKKyAgICAkLmVhY2go
cmVncmVzc2lvblJhbmdlcywgZnVuY3Rpb24oYnVpbGRlck5hbWUsIHJhbmdlKSB7CisgICAgICAg
IGlmICghcmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uIHx8ICFyYW5nZS5uZXdlc3RQYXNzaW5n
UmV2aXNpb24pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiAoIW1lcmdlZFJhbmdl
Lm9sZGVzdEZhaWxpbmdSZXZpc2lvbikKKyAgICAgICAgICAgIG1lcmdlZFJhbmdlLm9sZGVzdEZh
aWxpbmdSZXZpc2lvbiA9IHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKKyAgICAgICAgaWYg
KCFtZXJnZWRSYW5nZS5uZXdlc3RQYXNzaW5nUmV2aXNpb24pCisgICAgICAgICAgICBtZXJnZWRS
YW5nZS5uZXdlc3RQYXNzaW5nUmV2aXNpb24gPSByYW5nZS5uZXdlc3RQYXNzaW5nUmV2aXNpb247
CisKKyAgICAgICAgaWYgKHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA8IG1lcmdlZFJhbmdl
Lm9sZGVzdEZhaWxpbmdSZXZpc2lvbikKKyAgICAgICAgICAgIG1lcmdlZFJhbmdlLm9sZGVzdEZh
aWxpbmdSZXZpc2lvbiA9IHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKKyAgICAgICAgaWYg
KHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA+IG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdS
ZXZpc2lvbikKKyAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9
IHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVyZ2Vk
UmFuZ2U7Cit9CisKK3Jlc3VsdHMudW5pZnlSZWdyZXNzaW9uUmFuZ2VzID0gZnVuY3Rpb24oYnVp
bGRlck5hbWVMaXN0LCB0ZXN0TmFtZSwgY2FsbGJhY2spCit7CisgICAgdmFyIHF1ZXJpZXNJbkZs
aWdodCA9IGJ1aWxkZXJOYW1lTGlzdC5sZW5ndGg7CisgICAgaWYgKCFxdWVyaWVzSW5GbGlnaHQp
CisgICAgICAgIGNhbGxiYWNrKDAsIDApOworCisgICAgdmFyIHJlZ3Jlc3Npb25SYW5nZXMgPSB7
fTsKKyAgICAkLmVhY2goYnVpbGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5h
bWUpIHsKKyAgICAgICAgcmVzdWx0cy5yZWdyZXNzaW9uUmFuZ2VGb3JGYWlsdXJlKGJ1aWxkZXJO
YW1lLCB0ZXN0TmFtZSwgZnVuY3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNz
aW5nUmV2aXNpb24pIHsKKyAgICAgICAgICAgIHZhciByYW5nZSA9IHt9OworICAgICAgICAgICAg
cmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uID0gb2xkZXN0RmFpbGluZ1JldmlzaW9uOworICAg
ICAgICAgICAgcmFuZ2UubmV3ZXN0UGFzc2luZ1JldmlzaW9uID0gbmV3ZXN0UGFzc2luZ1Jldmlz
aW9uOworICAgICAgICAgICAgcmVncmVzc2lvblJhbmdlc1tidWlsZGVyTmFtZV0gPSByYW5nZTsK
KworICAgICAgICAgICAgLS1xdWVyaWVzSW5GbGlnaHQ7CisgICAgICAgICAgICBpZiAoIXF1ZXJp
ZXNJbkZsaWdodCkgeworICAgICAgICAgICAgICAgIHZhciBtZXJnZWRSYW5nZSA9IG1lcmdlUmVn
cmVzc2lvblJhbmdlcyhyZWdyZXNzaW9uUmFuZ2VzKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhtZXJnZWRSYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24sIG1lcmdlZFJhbmdlLm5ld2VzdFBh
c3NpbmdSZXZpc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0pOworfTsK
KworcmVzdWx0cy5jb3VudEZhaWx1cmVPY2N1cmFuY2VzID0gZnVuY3Rpb24oYnVpbGRlck5hbWVM
aXN0LCB0ZXN0TmFtZSwgY2FsbGJhY2spCit7CisgICAgdmFyIHF1ZXJpZXNJbkZsaWdodCA9IGJ1
aWxkZXJOYW1lTGlzdC5sZW5ndGg7CisgICAgaWYgKCFxdWVyaWVzSW5GbGlnaHQpCisgICAgICAg
IGNhbGxiYWNrKDApOworCisgICAgdmFyIGZhaWx1cmVDb3VudCA9IDA7CisgICAgJC5lYWNoKGJ1
aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7CisgICAgICAgIHdh
bGtIaXN0b3J5KGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwgZnVuY3Rpb24ocmV2aXNpb24sIHJlc3Vs
dE5vZGUpIHsKKyAgICAgICAgICAgIGlmIChpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUp
KSB7CisgICAgICAgICAgICAgICAgKytmYWlsdXJlQ291bnQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC0tcXVlcmllc0luRmxpZ2h0
OworICAgICAgICAgICAgaWYgKCFxdWVyaWVzSW5GbGlnaHQpCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZmFpbHVyZUNvdW50KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9OworCityZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0ID0gZnVuY3Rpb24o
cmVzdWx0c1RyZWUsIHRlc3ROYW1lKQoreworICAgIHZhciB0ZXN0TmFtZVBhdGggPSB0ZXN0TmFt
ZS5zcGxpdCgnLycpOworICAgIHZhciBjdXJyZW50Tm9kZSA9IHJlc3VsdHNUcmVlWyd0ZXN0cydd
OworICAgICQuZWFjaCh0ZXN0TmFtZVBhdGgsIGZ1bmN0aW9uKGluZGV4LCBzZWdtZW50TmFtZSkg
eworICAgICAgICBpZiAoIWN1cnJlbnROb2RlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjdXJyZW50Tm9kZSA9IChzZWdtZW50TmFtZSBpbiBjdXJyZW50Tm9kZSkgPyBjdXJyZW50Tm9k
ZVtzZWdtZW50TmFtZV0gOiBudWxsOworICAgIH0pOworICAgIHJldHVybiBjdXJyZW50Tm9kZTsK
K307CisKK2Z1bmN0aW9uIHJlc3VsdHNEaXJlY3RvcnlGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQor
eworICAgIHJldHVybiBidWlsZGVyTmFtZS5yZXBsYWNlKC9bIC4oKV0vZywgJ18nKTsKK30KKwor
ZnVuY3Rpb24gcmVzdWx0c0RpcmVjdG9yeVVSTChidWlsZGVyTmFtZSkKK3sKKyAgICByZXR1cm4g
a0xheW91dFRlc3RSZXN1bHRzU2VydmVyICsgcmVzdWx0c0RpcmVjdG9yeUZvckJ1aWxkZXIoYnVp
bGRlck5hbWUpICsga0xheW91dFRlc3RSZXN1bHRzUGF0aDsKK30KKworcmVzdWx0cy5yZXN1bHRL
aW5kID0gZnVuY3Rpb24odXJsKQoreworICAgIGlmICgvLWFjdHVhbFwuW2Etel0rJC8udGVzdCh1
cmwpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy5rQWN0dWFsS2luZDsKKyAgICBlbHNlIGlmICgv
LWV4cGVjdGVkXC5bYS16XSskLy50ZXN0KHVybCkpCisgICAgICAgIHJldHVybiByZXN1bHRzLmtF
eHBlY3RlZEtpbmQ7CisgICAgZWxzZSBpZiAoL2RpZmZcLlthLXpdKyQvLnRlc3QodXJsKSkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdHMua0RpZmZLaW5kOworICAgIHJldHVybiByZXN1bHRzLmtVbmtu
b3duS2luZDsKK30KKworcmVzdWx0cy5yZXN1bHRUeXBlID0gZnVuY3Rpb24odXJsKQoreworICAg
IGlmICgvXC5wbmckLy50ZXN0KHVybCkpCisgICAgICAgIHJldHVybiByZXN1bHRzLmtJbWFnZVR5
cGU7CisgICAgcmV0dXJuIHJlc3VsdHMua1RleHRUeXBlOworfQorCitmdW5jdGlvbiBzb3J0UmVz
dWx0VVJMc0J5U3VmZml4KHVybHMpCit7CisgICAgdmFyIHNvcnRlZFVSTHMgPSBbXTsKKyAgICAk
LmVhY2goa1ByZWZlcnJlZFN1ZmZpeE9yZGVyLCBmdW5jdGlvbihpLCBzdWZmaXgpIHsKKyAgICAg
ICAgJC5lYWNoKHVybHMsIGZ1bmN0aW9uKGosIHVybCkgeworICAgICAgICAgICAgaWYgKCFiYXNl
LmVuZHNXaXRoKHVybCwgc3VmZml4KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBzb3J0ZWRVUkxzLnB1c2godXJsKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgaWYg
KHNvcnRlZFVSTHMubGVuZ3RoICE9IHVybHMubGVuZ3RoKQorICAgICAgICB0aHJvdyAic29ydFJl
c3VsdFVSTHNCeVN1ZmZpeCBmYWlsZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG51bWJlciBvZiBVUkxz
LiIKKyAgICByZXR1cm4gc29ydGVkVVJMczsKK30KKworcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxz
ID0gZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNhbGxiYWNrKQoreworICAgIHZhciBzdGVtID0gcmVz
dWx0c0RpcmVjdG9yeVVSTChmYWlsdXJlSW5mby5idWlsZGVyTmFtZSk7CisgICAgdmFyIHRlc3RO
YW1lU3RlbSA9IGJhc2UudHJpbUV4dGVuc2lvbihmYWlsdXJlSW5mby50ZXN0TmFtZSk7CisKKyAg
ICB2YXIgc3VmZml4TGlzdCA9IHBvc3NpYmxlU3VmZml4TGlzdEZvcihmYWlsdXJlSW5mby5mYWls
dXJlVHlwZUxpc3QpOworCisgICAgdmFyIHJlc3VsdFVSTHMgPSBbXTsKKyAgICB2YXIgcmVxdWVz
dHNJbkZsaWdodCA9IHN1ZmZpeExpc3QubGVuZ3RoOworCisgICAgaWYgKCFyZXF1ZXN0c0luRmxp
Z2h0KSB7CisgICAgICAgIGNhbGxiYWNrKFtdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGNoZWNrQ29tcGxldGUoKQorICAgIHsKKyAgICAgICAgaWYgKC0tcmVxdWVz
dHNJbkZsaWdodCA9PSAwKQorICAgICAgICAgICAgY2FsbGJhY2soc29ydFJlc3VsdFVSTHNCeVN1
ZmZpeChyZXN1bHRVUkxzKSk7CisgICAgfQorCisgICAgJC5lYWNoKHN1ZmZpeExpc3QsIGZ1bmN0
aW9uKGluZGV4LCBzdWZmaXgpIHsKKyAgICAgICAgdmFyIHVybCA9IHN0ZW0gKyB0ZXN0TmFtZVN0
ZW0gKyBzdWZmaXg7CisgICAgICAgIG5ldC5wcm9iZSh1cmwsIHsKKyAgICAgICAgICAgIHN1Y2Nl
c3M6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJlc3VsdFVSTHMucHVzaCh1cmwpOwor
ICAgICAgICAgICAgICAgIGNoZWNrQ29tcGxldGUoKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBlcnJvcjogY2hlY2tDb21wbGV0ZSwKKyAgICAgICAgfSk7CisgICAgfSk7Cit9OworCity
ZXN1bHRzLmZldGNoUmVzdWx0c0ZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwgY2Fs
bGJhY2spCit7CisgICAgbmV0Lmpzb25wKHJlc3VsdHNTdW1tYXJ5VVJMKGJ1aWxkZXJOYW1lLCBr
UmVzdWx0c05hbWUpLCBmdW5jdGlvbihyZXN1bHRzVHJlZSkgeworICAgICAgICBjYWxsYmFjayhy
ZXN1bHRzVHJlZSk7CisgICAgfSk7Cit9OworCityZXN1bHRzLmZldGNoUmVzdWx0c0J5QnVpbGRl
ciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lTGlzdCwgY2FsbGJhY2spCit7CisgICAgdmFyIHJlc3Vs
dHNCeUJ1aWxkZXIgPSB7fQorICAgIHZhciByZXF1ZXN0c0luRmxpZ2h0ID0gYnVpbGRlck5hbWVM
aXN0Lmxlbmd0aDsKKyAgICAkLmVhY2goYnVpbGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRleCwg
YnVpbGRlck5hbWUpIHsKKyAgICAgICAgcmVzdWx0cy5mZXRjaFJlc3VsdHNGb3JCdWlsZGVyKGJ1
aWxkZXJOYW1lLCBmdW5jdGlvbihyZXN1bHRzVHJlZSkgeworICAgICAgICAgICAgcmVzdWx0c0J5
QnVpbGRlcltidWlsZGVyTmFtZV0gPSByZXN1bHRzVHJlZTsKKyAgICAgICAgICAgIC0tcmVxdWVz
dHNJbkZsaWdodDsKKyAgICAgICAgICAgIGlmICghcmVxdWVzdHNJbkZsaWdodCkKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayhyZXN1bHRzQnlCdWlsZGVyKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9OworCit9KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvcmVzdWx0c191bml0
dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvcmVzdWx0c191
bml0dGVzdHMuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0
c191bml0dGVzdHMuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9yZXN1bHRz
X3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisoZnVuY3Rpb24gKCkgeworCittb2R1bGUoInJlc3VsdHMiKTsKKwordmFyIGtFeGFtcGxl
UmVzdWx0c0pTT04gPSB7CisgICAgInRlc3RzIjogeworICAgICAgICAic2Nyb2xsYmFycyI6IHsK
KyAgICAgICAgICAgICJjdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1s
IjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCisgICAgICAgICAgICAg
ICAgImFjdHVhbCI6ICJJTUFHRSIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZmxha3kt
c2Nyb2xsYmFyLmh0bWwiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAor
ICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyBURVhUIgorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICJ1bmV4cGVjdGVkLXBhc3MuaHRtbCI6IHsKKyAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQiOiAiRkFJTCIsCisgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJQQVNTIgorICAgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAidXNlcnNjcmlwdHMiOiB7CisgICAgICAgICAg
ICAidXNlci1zY3JpcHQtdmlkZW8tZG9jdW1lbnQuaHRtbCI6IHsKKyAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiAiRkFJTCIsCisgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKKyAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJU
RVhUIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgIH0sCisgICAgInNraXBwZWQiOiAz
MzksCisgICAgIm51bV9yZWdyZXNzaW9ucyI6IDE0LAorICAgICJpbnRlcnJ1cHRlZCI6IGZhbHNl
LAorICAgICJsYXlvdXRfdGVzdHNfZGlyIjogIlwvbW50XC9kYXRhXC9iXC9idWlsZFwvc2xhdmVc
L1dlYmtpdF9MaW51eFwvYnVpbGRcL3NyY1wvdGhpcmRfcGFydHlcL1dlYktpdFwvTGF5b3V0VGVz
dHMiLAorICAgICJ2ZXJzaW9uIjogMywKKyAgICAibnVtX3Bhc3NlcyI6IDE1NTY2LAorICAgICJo
YXNfcHJldHR5X3BhdGNoIjogZmFsc2UsCisgICAgImZpeGFibGUiOiAxMjMzLAorICAgICJudW1f
Zmxha3kiOjEsCisgICAgInVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOiB0cnVlLAorICAgICJoYXNf
d2RpZmYiOiB0cnVlLAorICAgICJyZXZpc2lvbiI6ICI5MDQzMCIKK307CisKK3Rlc3QoInVuZXhw
ZWN0ZWRGYWlsdXJlcyIsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciB1bmV4cGVjdGVkRmFpbHVy
ZXMgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlcyhrRXhhbXBsZVJlc3VsdHNKU09OKTsKKyAg
ICBkZWVwRXF1YWwodW5leHBlY3RlZEZhaWx1cmVzLCB7CisgICAgICAgICJ1c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QuaHRtbCI6IHsKKyAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAg
ICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKKyAgICAgICAgfQorICAgIH0pOworfSk7CisKK3Rl
c3QoInVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCIsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciB1
bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVz
dCh7CisgICAgICAgICJNb2NrIEJ1aWxkZXIiOiBrRXhhbXBsZVJlc3VsdHNKU09OCisgICAgfSk7
CisgICAgZGVlcEVxdWFsKHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwgeworICAgICAgICAidXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7CisgICAgICAgICAgICAiTW9jayBCdWlsZGVy
IjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAg
ICAiYWN0dWFsIjogIlRFWFQiCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKK30p
OworCit0ZXN0KCJ1bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0IiwgMSwgZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCA9IHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nl
c3Nlc0J5VGVzdCh7CisgICAgICAgICJNb2NrIEJ1aWxkZXIiOiBrRXhhbXBsZVJlc3VsdHNKU09O
CisgICAgfSk7CisgICAgZGVlcEVxdWFsKHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwgeworICAg
ICAgICAic2Nyb2xsYmFycy91bmV4cGVjdGVkLXBhc3MuaHRtbCI6IHsKKyAgICAgICAgICAgICJN
b2NrIEJ1aWxkZXIiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwiLAorICAg
ICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0pOworfSk7CisKK3Rlc3QoInJlc3VsdEtpbmQiLCAxMiwgZnVuY3Rpb24oKSB7CisgICAg
ZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1hY3R1YWwu
dHh0IiksICJhY3R1YWwiKTsKKyAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJodHRwOi8v
ZXhhbXBsZS5jb20vZm9vLWV4cGVjdGVkLnR4dCIpLCAiZXhwZWN0ZWQiKTsKKyAgICBlcXVhbHMo
cmVzdWx0cy5yZXN1bHRLaW5kKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWRpZmYudHh0IiksICJk
aWZmIik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29t
L2Zvby5iYXItYWN0dWFsLnR4dCIpLCAiYWN0dWFsIik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVz
dWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby5iYXItZXhwZWN0ZWQudHh0IiksICJleHBl
Y3RlZCIpOworICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNv
bS9mb28uYmFyLWRpZmYudHh0IiksICJkaWZmIik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0
S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1hY3R1YWwucG5nIiksICJhY3R1YWwiKTsKKyAg
ICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWV4cGVj
dGVkLnBuZyIpLCAiZXhwZWN0ZWQiKTsKKyAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJo
dHRwOi8vZXhhbXBsZS5jb20vZm9vLWRpZmYucG5nIiksICJkaWZmIik7CisgICAgZXF1YWxzKHJl
c3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1wcmV0dHktZGlmZi5odG1s
IiksICJkaWZmIik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1w
bGUuY29tL2Zvby13ZGlmZi5odG1sIiksICJkaWZmIik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVz
dWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby14eXouaHRtbCIpLCAidW5rbm93biIpOwor
fSk7CisKK3Rlc3QoInJlc3VsdFR5cGUiLCAxMiwgZnVuY3Rpb24oKSB7CisgICAgZXF1YWxzKHJl
c3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1hY3R1YWwudHh0IiksICJ0
ZXh0Iik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29t
L2Zvby1leHBlY3RlZC50eHQiKSwgInRleHQiKTsKKyAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRU
eXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWRpZmYudHh0IiksICJ0ZXh0Iik7CisgICAgZXF1
YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby5iYXItYWN0dWFs
LnR4dCIpLCAidGV4dCIpOworICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9l
eGFtcGxlLmNvbS9mb28uYmFyLWV4cGVjdGVkLnR4dCIpLCAidGV4dCIpOworICAgIGVxdWFscyhy
ZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWRpZmYudHh0Iiks
ICJ0ZXh0Iik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUu
Y29tL2Zvby1hY3R1YWwucG5nIiksICJpbWFnZSIpOworICAgIGVxdWFscyhyZXN1bHRzLnJlc3Vs
dFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tZXhwZWN0ZWQucG5nIiksICJpbWFnZSIpOwor
ICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tZGlm
Zi5wbmciKSwgImltYWdlIik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDov
L2V4YW1wbGUuY29tL2Zvby1wcmV0dHktZGlmZi5odG1sIiksICJ0ZXh0Iik7CisgICAgZXF1YWxz
KHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby13ZGlmZi5odG1sIiks
ICJ0ZXh0Iik7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUu
Y29tL2Zvby54eXoiKSwgInRleHQiKTsKK30pOworCit0ZXN0KCJyZXN1bHROb2RlRm9yVGVzdCIs
IDQsIGZ1bmN0aW9uKCkgeworICAgIGRlZXBFcXVhbChyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0
KGtFeGFtcGxlUmVzdWx0c0pTT04sICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIpLCB7
CisgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgImFjdHVhbCI6ICJURVhUIgor
ICAgIH0pOworICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0KGtFeGFtcGxlUmVz
dWx0c0pTT04sICJmb28uaHRtbCIpLCBudWxsKTsKKyAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRO
b2RlRm9yVGVzdChrRXhhbXBsZVJlc3VsdHNKU09OLCAidXNlcnNjcmlwdHMvZm9vLmh0bWwiKSwg
bnVsbCk7CisgICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0Tm9kZUZvclRlc3Qoa0V4YW1wbGVSZXN1
bHRzSlNPTiwgInVzZXJzY3JpcHRzL2Zvby9iYXIuaHRtbCIpLCBudWxsKTsKK30pOworCit0ZXN0
KCJ3YWxrSGlzdG9yeSIsIDYsIGZ1bmN0aW9uKCkgeworICAgIHZhciBzaW11bGF0b3IgPSBuZXcg
TmV0d29ya1NpbXVsYXRvcigpOworCisgICAgdmFyIGtleU1hcCA9IHsKKyAgICAgICAgImFneDBa
WE4wTFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdMbmNVQXciOiB7CisgICAgICAgICAgICAi
dGVzdHMiOiB7CisgICAgICAgICAgICAgICAgInVzZXJzY3JpcHRzIjogeworICAgICAgICAgICAg
ICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRF
WFQiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MDQzMCIKKyAgICAgICAgfSwKKyAgICAg
ICAgImFneDBaWE4wTFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdOZlRVQXciOnsKKyAgICAg
ICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7CisgICAg
ICAgICAgICAgICAgICAgICJ1c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sIjogeworICAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImFjdHVhbCI6ICJURVhUIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFs
IjogIlRFWFQiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MDQyOSIKKyAgICAgICAgfSwK
KyAgICAgICAgImFneDBaWE4wTFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdKV0NVUXciOnsK
KyAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7
CisgICAgICAgICAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJhY3R1YWwiOiAiVEVYVCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInJldmlzaW9uIjogIjkwNDI2IgorICAg
ICAgICB9LAorICAgICAgICAiYWd4MFpYTjBMWEpsYzNWc2RITnlFQXNTQ0ZSbGMzUkdhV3hsR0ti
TFVBdyI6eworICAgICAgICAgICAgInRlc3RzIjogeworICAgICAgICAgICAgICAgICJ1c2Vyc2Ny
aXB0cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgInVzZXItc2NyaXB0LXZpZGVvLWRvY3VtZW50
Lmh0bWwiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRkFJTCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAi
cmV2aXNpb24iOiAiOTA0MjQiCisgICAgICAgIH0sCisgICAgICAgICJhYmMiOnsKKyAgICAgICAg
ICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7CisgICAgICAg
ICAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1YWwi
OiAiVEVYVCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgInJldmlzaW9uIjogIjkwNDI2IgorICAgICAgICB9LAor
ICAgICAgICAieHl6Ijp7CisgICAgICAgICAgICAidGVzdHMiOiB7CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgInJldmlzaW9uIjogIjkwNDI1IgorICAgICAgICB9CisgICAgfTsKKworICAg
IHNpbXVsYXRvci5qc29ucCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKKyAgICAgICAgc2lt
dWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoL2Rp
cj0xLy50ZXN0KHVybCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoL2J1aWxkZXI9TW9jay8udGVz
dCh1cmwpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsgImtleSI6ICJhZ3gwWlhOMExYSmxjM1ZzZEhOeUVBc1NDRlJsYzNSR2FXeGxH
TG5jVUF3IiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyAia2V5IjogImFneDBaWE4wTFhK
bGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdOZlRVQXciIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICB7ICJrZXkiOiAiYWd4MFpYTjBMWEpsYzNWc2RITnlFQXNTQ0ZSbGMzUkdhV3hsR0pXQ1VR
dyIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgImtleSI6ICJhZ3gwWlhOMExYSmxjM1Zz
ZEhOeUVBc1NDRlJsYzNSR2FXeGxHS2JMVUF3IiB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
eyAia2V5IjogImFneDBaWE4wTFhKbGMzVnNkSE55RUFzU0NGUmxjM1JHYVd4bEdPajVVQXciIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICB7ICJrZXkiOiAiYWd4MFpYTjBMWEpsYzNWc2RITnlF
QXNTQ0ZSbGMzUkdhV3hsR1AtQVVRdyIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgImtl
eSI6ICJhZ3gwWlhOMExYSmxjM1ZzZEhOeUVBc1NDRlJsYzNSR2FXeGxHUEwzVUF3IiB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgeyAia2V5IjogImFneDBaWE4wTFhKbGMzVnNkSE55RUFzU0NG
UmxjM1JHYVd4bEdOSEpRQXciIH0sCisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoL2J1aWxkZXI9QW5vdGhlci8udGVzdCh1cmwpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgImtleSI6
ICJhYmMiIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ICJrZXkiOiAieHl6IiB9LAorICAg
ICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBvayhmYWxzZSwgJ1VuZXhwZWN0ZWQgVVJMOiAnICsgdXJsKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBrZXkg
PSB1cmwubWF0Y2goL2tleT0oW14mXSspLylbMV07CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
a2V5TWFwW2tleV0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9OworICAgIHNp
bXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICByZXN1bHRzLnJlZ3Jlc3Npb25S
YW5nZUZvckZhaWx1cmUoIk1vY2sgQnVpbGRlciIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCIsIGZ1bmN0aW9uKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1Jldmlz
aW9uKSB7CisgICAgICAgICAgICBlcXVhbHMob2xkZXN0RmFpbGluZ1JldmlzaW9uLCA5MDQyNik7
CisgICAgICAgICAgICBlcXVhbHMobmV3ZXN0UGFzc2luZ1JldmlzaW9uLCA5MDQyNCk7CisgICAg
ICAgIH0pOworCisgICAgICAgIHJlc3VsdHMudW5pZnlSZWdyZXNzaW9uUmFuZ2VzKFsiTW9jayBC
dWlsZGVyIiwgIkFub3RoZXIgQnVpbGRlciJdLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWwiLCBmdW5jdGlvbihvbGRlc3RGYWlsaW5nUmV2aXNpb24sIG5ld2VzdFBhc3NpbmdSZXZpc2lv
bikgeworICAgICAgICAgICAgZXF1YWxzKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgOTA0MjYpOwor
ICAgICAgICAgICAgZXF1YWxzKG5ld2VzdFBhc3NpbmdSZXZpc2lvbiwgOTA0MjUpOworICAgICAg
ICB9KTsKKworICAgICAgICByZXN1bHRzLmNvdW50RmFpbHVyZU9jY3VyYW5jZXMoWyJNb2NrIEJ1
aWxkZXIiLCAiQW5vdGhlciBCdWlsZGVyIl0sICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCIsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCkgeworICAgICAgICAgICAgZXF1YWxzKGZhaWx1cmVD
b3VudCwgNCk7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CisKK3Rlc3QoIndhbGtIaXN0b3J5
IChubyByZXZpc2lvbikiLCAzLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2ltdWxhdG9yID0gbmV3
IE5ldHdvcmtTaW11bGF0b3IoKTsKKworICAgIHZhciBrZXlNYXAgPSB7CisgICAgICAgICJ2c2Zk
c2Zkc2Fmc2RhZmFzZCI6IHsKKyAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAg
ICAidXNlcnNjcmlwdHMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRt
bCI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInJldmlz
aW9uIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgImdhdnNhdnNyZmd3YWV2d2VmYXd2YWUiOnsK
KyAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicmV2
aXNpb24iOiAiIgorICAgICAgICB9LAorICAgIH07CisKKyAgICBzaW11bGF0b3IuanNvbnAgPSBm
dW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CisgICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxi
YWNrKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKC9kaXI9MS8udGVzdCh1cmwpKSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soWworICAgICAgICAgICAgICAgICAgICB7ICJrZXkiOiAi
dnNmZHNmZHNhZnNkYWZhc2QiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImtleSI6ICJnYXZz
YXZzcmZnd2FldndlZmF3dmFlIiB9LAorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIga2V5ID0gdXJsLm1hdGNoKC9rZXk9KFteJl0r
KS8pWzFdOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGtleU1hcFtrZXldKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0
aW9uKCkgeworICAgICAgICByZXN1bHRzLnJlZ3Jlc3Npb25SYW5nZUZvckZhaWx1cmUoIk1vY2sg
QnVpbGRlciIsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKG9sZGVz
dEZhaWxpbmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7CisgICAgICAgICAgICBl
cXVhbHMob2xkZXN0RmFpbGluZ1JldmlzaW9uLCAwKTsKKyAgICAgICAgICAgIGVxdWFscyhuZXdl
c3RQYXNzaW5nUmV2aXNpb24sIDApOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOworCit0ZXN0
KCJjb2xsZWN0VW5leHBlY3RlZFJlc3VsdHMiLCAxLCBmdW5jdGlvbigpIHsKKyAgICB2YXIgZGlj
dGlvbmFyeU9mUmVzdWx0Tm9kZXMgPSB7CisgICAgICAgICJmb28iOiB7CisgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiAiSU1BR0UiLAorICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIKKyAgICAg
ICAgfSwKKyAgICAgICAgImJhciI6IHsKKyAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwK
KyAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyBURVhUIgorICAgICAgICB9LAorICAgICAgICAi
YmF6IjogeworICAgICAgICAgICAgImV4cGVjdGVkIjogIlRFWFQiLAorICAgICAgICAgICAgImFj
dHVhbCI6ICJJTUFHRSIKKyAgICAgICAgfSwKKyAgICAgICAgInF1eCI6IHsKKyAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKKyAgICAg
ICAgfSwKKyAgICAgICAgInRhY28iOiB7CisgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIs
CisgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCisgICAgICAgIH0sCisgICAgfTsKKworICAg
IHZhciBjb2xsZWN0ZWRSZXN1bHRzID0gcmVzdWx0cy5jb2xsZWN0VW5leHBlY3RlZFJlc3VsdHMo
ZGljdGlvbmFyeU9mUmVzdWx0Tm9kZXMpOworICAgIGRlZXBFcXVhbChjb2xsZWN0ZWRSZXN1bHRz
LCBbIlRFWFQiLCAiSU1BR0UiXSk7Cit9KTsKKwordGVzdCgiZmFpbHVyZVR5cGVUb0V4dGVuc2lv
bkxpc3QiLCA1LCBmdW5jdGlvbigpIHsKKyAgICBkZWVwRXF1YWwocmVzdWx0cy5mYWlsdXJlVHlw
ZVRvRXh0ZW5zaW9uTGlzdCgnVEVYVCcpLCBbJ3R4dCddKTsKKyAgICBkZWVwRXF1YWwocmVzdWx0
cy5mYWlsdXJlVHlwZVRvRXh0ZW5zaW9uTGlzdCgnSU1BR0UrVEVYVCcpLCBbJ3R4dCcsICdwbmcn
XSk7CisgICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QoJ0lN
QUdFJyksIFsncG5nJ10pOworICAgIGRlZXBFcXVhbChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRl
bnNpb25MaXN0KCdDUkFTSCcpLCBbXSk7CisgICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5
cGVUb0V4dGVuc2lvbkxpc3QoJ1RJTUVPVVQnKSwgW10pOworfSk7CisKK3Rlc3QoImNhblJlYmFz
ZWxpbmUiLCA2LCBmdW5jdGlvbigpIHsKKyAgICBvayhyZXN1bHRzLmNhblJlYmFzZWxpbmUoWydU
RVhUJ10pKTsKKyAgICBvayhyZXN1bHRzLmNhblJlYmFzZWxpbmUoWydJTUFHRStURVhUJywgJ0NS
QVNIJ10pKTsKKyAgICBvayhyZXN1bHRzLmNhblJlYmFzZWxpbmUoWydJTUFHRSddKSk7CisgICAg
b2soIXJlc3VsdHMuY2FuUmViYXNlbGluZShbJ0NSQVNIJ10pKTsKKyAgICBvayghcmVzdWx0cy5j
YW5SZWJhc2VsaW5lKFsnVElNRU9VVCddKSk7CisgICAgb2soIXJlc3VsdHMuY2FuUmViYXNlbGlu
ZShbXSkpOworfSk7CisKK3Rlc3QoImZldGNoUmVzdWx0c1VSTHMiLCA1LCBmdW5jdGlvbigpIHsK
KyAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKKworICAgIHZhciBw
cm9iZWRVUkxzID0gW107CisgICAgc2ltdWxhdG9yLnByb2JlID0gZnVuY3Rpb24odXJsLCBvcHRp
b25zKQorICAgIHsKKyAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBwcm9iZWRVUkxzLnB1c2godXJsKTsKKyAgICAgICAgICAgIGlmIChi
YXNlLmVuZHNXaXRoKHVybCwgJy50eHQnKSkKKyAgICAgICAgICAgICAgICBvcHRpb25zLnN1Y2Nl
c3MuY2FsbCgpOworICAgICAgICAgICAgZWxzZSBpZiAoL3RhY28uK3BuZyQvLnRlc3QodXJsKSkK
KyAgICAgICAgICAgICAgICBvcHRpb25zLnN1Y2Nlc3MuY2FsbCgpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG9wdGlvbnMuZXJyb3IuY2FsbCgpOworICAgICAgICB9KTsKKyAg
ICB9OworCisgICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIHJlc3Vs
dHMuZmV0Y2hSZXN1bHRzVVJMcyh7CisgICAgICAgICAgICAnYnVpbGRlck5hbWUnOiAiTW9jayBC
dWlsZGVyIiwKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRl
c3QuaHRtbCIsCisgICAgICAgICAgICAnZmFpbHVyZVR5cGVMaXN0JzogWydJTUFHRScsICdDUkFT
SCddLAorICAgICAgICB9LCBmdW5jdGlvbihyZXN1bHRVUkxzKSB7CisgICAgICAgICAgICBkZWVw
RXF1YWwocmVzdWx0VVJMcywgWworICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0
cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1jcmFzaC1sb2cu
dHh0IgorICAgICAgICAgICAgXSk7CisgICAgICAgIH0pOworICAgICAgICByZXN1bHRzLmZldGNo
UmVzdWx0c1VSTHMoeworICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogIk1vY2sgQnVpbGRlciIs
CisgICAgICAgICAgICAndGVzdE5hbWUnOiAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
LAorICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnVElNRU9VVCddLAorICAgICAgICB9
LCBmdW5jdGlvbihyZXN1bHRVUkxzKSB7CisgICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0VVJM
cywgW10pOworICAgICAgICB9KTsKKyAgICAgICAgcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzKHsK
KyAgICAgICAgICAgICdidWlsZGVyTmFtZSc6ICJNb2NrIEJ1aWxkZXIiLAorICAgICAgICAgICAg
J3Rlc3ROYW1lJzogInVzZXJzY3JpcHRzL3RhY28uaHRtbCIsCisgICAgICAgICAgICAnZmFpbHVy
ZVR5cGVMaXN0JzogWydJTUFHRScsICdJTUFHRStURVhUJ10sCisgICAgICAgIH0sIGZ1bmN0aW9u
KHJlc3VsdFVSTHMpIHsKKyAgICAgICAgICAgIGRlZXBFcXVhbChyZXN1bHRVUkxzLCBbCisgICAg
ICAgICAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRf
dGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNl
cnNjcmlwdHMvdGFjby1leHBlY3RlZC5wbmciLAorICAgICAgICAgICAgICAgICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxk
ZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tYWN0dWFsLnBu
ZyIsCisgICAgICAgICAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1
bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMvdXNlcnNjcmlwdHMvdGFjby1kaWZmLnBuZyIsCisgICAgICAgICAgICAgICAgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tf
QnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvdGFjby1kaWZm
LnR4dCIKKyAgICAgICAgICAgIF0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlZXBF
cXVhbChwcm9iZWRVUkxzLCBbCisgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2Yv
Y2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQt
dGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1leHBlY3RlZC5wbmciLAorICAg
ICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jl
c3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBuZyIsCisgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0
cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1kaWZmLnBuZyIs
CisgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rl
c3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC1jcmFzaC1sb2cudHh0IiwKKyAgICAgICAgImh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRl
ci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvdGFjby1leHBlY3RlZC5w
bmciLAorICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91
dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91
c2Vyc2NyaXB0cy90YWNvLWFjdHVhbC5wbmciLAorICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWRpZmYucG5nIiwKKyAgICAg
ICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1
bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMv
dGFjby1kaWZmLnR4dCIKKyAgICBdKTsKK30pOworCit9KSgpOwpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanMJKHJldmlzaW9uIDkzMjU0KQkoZnJvbSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvdHJhY191bml0dGVzdHMuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy90cmFjX3VuaXR0ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisoZnVuY3Rpb24gKCkgeworCittb2R1bGUoInRyYWMiKTsKKwordmFy
IGtFeGFtcGxlQ29tbWl0RGF0YVhNTCA9IAorICAgICc8P3htbCB2ZXJzaW9uPSIxLjAiPz5cblxu
JyArCisgICAgJzxyc3MgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEv
IiB2ZXJzaW9uPSIyLjAiPlxuXG4nICsKKyAgICAnICBcblxuJyArCisgICAgJ1xuXG4nICsKKyAg
ICAnICA8Y2hhbm5lbD5cblxuJyArCisgICAgJyAgICA8dGl0bGU+UmV2aXNpb25zIG9mIC90cnVu
azwvdGl0bGU+XG5cbicgKworICAgICcgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9s
b2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4nICsKKyAgICAnICAgIDxkZXNjcmlwdGlvbj5U
cmFjIExvZyAtIFJldmlzaW9ucyBvZiAvdHJ1bms8L2Rlc2NyaXB0aW9uPlxuXG4nICsKKyAgICAn
ICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+XG5cbicgKworICAgICcgICAgPGdlbmVyYXRv
cj5UcmFjIDAuMTEuNzwvZ2VuZXJhdG9yPlxuXG4nICsKKyAgICAnICAgIDxpbWFnZT5cblxuJyAr
CisgICAgJyAgICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPlxuXG4nICsKKyAgICAnICAgICAgPHVy
bD5odHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24ucG5nPC91cmw+XG5cbicg
KworICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9
OTIzNjI8L2xpbms+XG5cbicgKworICAgICcgICAgPC9pbWFnZT5cblxuJyArCisgICAgJyAgICA8
aXRlbT5cblxuJyArCisgICAgJyAgICAgICAgICA8YXV0aG9yPm1hY3BoZXJzb25AY2hyb21pdW0u
b3JnPC9hdXRob3I+XG5cbicgKworICAgICcgICAgICA8cHViRGF0ZT5UaHUsIDA0IEF1ZyAyMDEx
IDAyOjA5OjE5IEdNVDwvcHViRGF0ZT5cblxuJyArCisgICAgJyAgICAgIDx0aXRsZT5SZXZpc2lv
biA5MjM0MjogU3VwcG9ydCBjYXN0IGJldHdlZW4gQ1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hT
aXppbmcsIHVzZSBpbiAuLi48L3RpdGxlPlxuXG4nICsKKyAgICAnICAgICAgPGxpbms+aHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDIvdHJ1bms8L2xpbms+XG5cbicgKworICAg
ICcgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzkyMzQyL3RydW5rPC9ndWlkPlxuXG4nICsKKyAgICAnICAgICAgPGRlc2NyaXB0
aW9uPiZsdDtwJmd0O1xuXG4nICsKKyAgICAnU3VwcG9ydCBjYXN0IGJldHdlZW4gQ1NTUHJpbWl0
aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBpbiBDU1NTdHlsZVNlbGVjdG9yLlxuXG4nICsK
KyAgICAnJmx0O2EgY2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTciJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0
Oy9zcGFuJmd0O2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTY1NyZs
dDsvYSZndDtcblxuJyArCisgICAgJyZsdDsvcCZndDtcblxuJyArCisgICAgJyZsdDtwJmd0O1xu
XG4nICsKKyAgICAnUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLlxuXG4nICsKKyAgICAnJmx0Oy9w
Jmd0O1xuXG4nICsKKyAgICAnJmx0O3AmZ3Q7XG5cbicgKworICAgICdObyBuZXcgdGVzdHMgLyBy
ZWZhY3RvcmluZyBvbmx5LlxuXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuXG4nICsKKyAgICAnJmx0
O3AmZ3Q7XG5cbicgKworICAgICcqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6XG5c
bicgKworICAgICcoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KTpcblxuJyArCisgICAgJ0ltcGxlbWVudCBjYXN0IGZyb20gRUJveFNpemluZy5cbicgKworICAg
ICcoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3hTaXppbmcpOlxuJyAr
CisgICAgJ0ltcGxlbWVudCBjYXN0IHRvIEVCb3hTaXppbmcuXG4nICsKKyAgICAnKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6XG4nICsKKyAgICAnKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkpOlxuJyArCisgICAgJ1VzZSBhcHByb3ByaWF0ZSBtYWNybyB0byBzaW1w
bGlmeSBjb2RlIHVzaW5nIGNhc3QuXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJzwv
ZGVzY3JpcHRpb24+XG4nICsKKyAgICAnICAgICAgPGNhdGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4n
ICsKKyAgICAnICAgIDwvaXRlbT48aXRlbT5cbicgKworICAgICcgICAgICAgICAgPGF1dGhvcj5j
b21taXQtcXVldWVAd2Via2l0Lm9yZzwvYXV0aG9yPlxuJyArCisgICAgJyAgICAgIDxwdWJEYXRl
PlRodSwgMDQgQXVnIDIwMTEgMDI6MDE6MzEgR01UPC9wdWJEYXRlPlxuJyArCisgICAgJyAgICAg
IDx0aXRsZT5SZXZpc2lvbiA5MjM0MTogSW1wbGVtZW50IEV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5
KCkgLi4uPC90aXRsZT5cbicgKworICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85MjM0MS90cnVuazwvbGluaz5cbicgKworICAgICcgICAgICA8Z3VpZCBp
c1Blcm1hTGluaz0iZmFsc2UiPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQx
L3RydW5rPC9ndWlkPlxuJyArCisgICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcbicg
KworICAgICdJbXBsZW1lbnQgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoKVxuJyArCisgICAgJyZs
dDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4MDEzIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZn
dDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMTMmbHQ7L2EmZ3Q7
XG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ1Bh
dGNoIGJ5IEtlbnRhcm8gSGFyYSAmYW1wO2x0OyZsdDthIGNsYXNzPSJtYWlsLWxpbmsiIGhyZWY9
Im1haWx0bzpoYXJha2VuQGdvb2dsZS5jb20iJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsg
Jmx0Oy9zcGFuJmd0O2hhcmFrZW5AZ29vZ2xlLmNvbSZsdDsvYSZndDsmYW1wO2d0OyBvbiAyMDEx
LTA4LTAzXG4nICsKKyAgICAnUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLlxuJyArCisgICAgJyZs
dDsvcCZndDtcbicgKworICAgICcmbHQ7cCZndDtcbicgKworICAgICdJbXBsZW1lbnRlZCBFdmVu
dFNlbmRlci5zY2FsZVBhZ2VCeShmLCB4LCB5KSwgd2hpY2ggc2NhbGVzIGEgcGFnZSBieSBhIGZh
Y3RvciBvZiBmXG4nICsKKyAgICAnYW5kIHRoZW4gc2V0cyBhIHNjcm9sbCBwb3NpdGlvbiB0byAo
eCwgeSkuIEVuYWJsZWQgdGhlIHRlc3RzIHRoYXQgaGFkIGJlZW4gd2FpdGluZ1xuJyArCisgICAg
J2ZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoZiwgeCwg
eSkuXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAg
J1NvdXJjZS9XZWJLaXQvY2hyb21pdW06XG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAg
JyZsdDtwJmd0O1xuJyArCisgICAgJ1Rlc3RzOiBjb21wb3NpdGluZy9zY2FsaW5nL3RpbGVkLWxh
eWVyLXJlY3Vyc2lvbi5odG1sXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZsdDti
bG9ja3F1b3RlJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ2Zhc3QvcmVwYWlu
dC9zY2FsZS1wYWdlLXNocmluay5odG1sXG4nICsKKyAgICAnZmFzdC9kb20vRWxlbWVudC9zY2Fs
ZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sXG4nICsKKyAgICAnZmFzdC9kb20vUmFuZ2Uvc2NhbGUt
cGFnZS1jbGllbnQtcmVjdHMuaHRtbFxuJyArCisgICAgJ2Zhc3QvZXZlbnRzL3Njcm9sbC1pbi1z
Y2FsZWQtcGFnZS13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sXG4nICsKKyAgICAnZmFzdC9kb20v
RWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWxcbicgKworICAgICdm
YXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWxcbicgKwor
ICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnJmx0Oy9ibG9ja3F1b3RlJmd0O1xuJyArCisgICAg
JyZsdDtwJmd0O1xuJyArCisgICAgJyogcHVibGljL1dlYlZpZXcuaDpcbicgKworICAgICcqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6XG4nICsKKyAgICAnKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjYWxl
UGFnZSk6IEEgd3JhcHBlciBtZXRob2QgZm9yIHNjYWxlUGFnZSgpIGluIFdlYkNvcmUuXG4nICsK
KyAgICAnKiBzcmMvV2ViVmlld0ltcGwuaDpcbicgKworICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAg
ICAnJmx0O3AmZ3Q7XG4nICsKKyAgICAnVG9vbHM6XG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyAr
CisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ1Rlc3RzOiBjb21wb3NpdGluZy9zY2FsaW5nL3Rp
bGVkLWxheWVyLXJlY3Vyc2lvbi5odG1sXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAg
JyZsdDtibG9ja3F1b3RlJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ2Zhc3Qv
cmVwYWludC9zY2FsZS1wYWdlLXNocmluay5odG1sXG4nICsKKyAgICAnZmFzdC9kb20vRWxlbWVu
dC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sXG4nICsKKyAgICAnZmFzdC9kb20vUmFuZ2Uv
c2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbFxuJyArCisgICAgJ2Zhc3QvZXZlbnRzL3Njcm9s
bC1pbi1zY2FsZWQtcGFnZS13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sXG4nICsKKyAgICAnZmFz
dC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWxcbicgKwor
ICAgICdmYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWxc
bicgKworICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnJmx0Oy9ibG9ja3F1b3RlJmd0O1xuJyAr
CisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJyogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZl
bnRTZW5kZXIuY3BwOlxuJyArCisgICAgJyhFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOiBBZGRl
ZCBiaW5kaW5ncyBmb3Igc2NhbGVQYWdlQnkoKS5cbicgKworICAgICcoRXZlbnRTZW5kZXI6OnNj
YWxlUGFnZUJ5KTogQSB3cmFwcGVyIG1ldGhvZCBmb3Igc2NhbGVQYWdlKCkgaW4gV2ViVmlldy5c
bicgKworICAgICcqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmg6XG4nICsK
KyAgICAnKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOlxuJyArCisgICAg
JyhUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xsZXIpOiBSZXNldHMgdGhlIHNjYWxlIGZhY3Rv
ciB0byAxLlxuJyArCisgICAgJyZsdDsvcCZndDtcbicgKworICAgICcmbHQ7cCZndDtcbicgKwor
ICAgICdMYXlvdXRUZXN0czpcbicgKworICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnJmx0O3Am
Z3Q7XG4nICsKKyAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGluZy9zY2Fs
aW5nL3RpbGVkLWxheWVyLXJlY3Vyc2lvbi1leHBlY3RlZC5wbmc6IEFkZGVkLlxuJyArCisgICAg
JyogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5r
LWV4cGVjdGVkLnBuZzogQWRkZWQuXG4nICsKKyAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9mYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQudHh0OiBBZGRlZC5cbicg
KworICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBh
Z2UtYm91bmRpbmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCisgICAg
JyogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRp
bmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCisgICAgJyogcGxhdGZv
cm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGll
bnQtcmVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuXG4nICsKKyAgICAnKiBwbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuXG4nICsKKyAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9k
b20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuXG4nICsKKyAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20vUmFuZ2Uv
c2NhbGUtcGFnZS1jbGllbnQtcmVjdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCisgICAg
JyogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBFbmFibGVkIG9uZSB0
ZXN0LiBFbmFibGVkIHR3byB0ZXN0cyBmb3IgY2hyb21pdW0tbGludXguXG4nICsKKyAgICAnJmx0
Oy9wJmd0O1xuJyArCisgICAgJzwvZGVzY3JpcHRpb24+XG4nICsKKyAgICAnICAgICAgPGNhdGVn
b3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsKKyAgICAnICAgIDwvaXRlbT48aXRlbT5cbicgKworICAg
ICcgICAgICAgICAgPGF1dGhvcj5ybml3YUB3ZWJraXQub3JnPC9hdXRob3I+XG4nICsKKyAgICAn
ICAgICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMTo0MToyOSBHTVQ8L3B1YkRhdGU+XG4n
ICsKKyAgICAnICAgICAgPHRpdGxlPlJldmlzaW9uIDkyMzM4OiBSZXZlcnQgYW4gZXJyb25lb3Vz
IHJlYmFzZWxpbmUgZnJvbSByOTIzMTUuXG4nICsKKyAgICAnKiAuLi48L3RpdGxlPlxuJyArCisg
ICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzM4L3Ry
dW5rPC9saW5rPlxuJyArCisgICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzMzgvdHJ1bms8L2d1aWQ+XG4nICsKKyAg
ICAnICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCisgICAgJ1JldmVydCBhbiBlcnJv
bmVvdXMgcmViYXNlbGluZSBmcm9tICZsdDthIGNsYXNzPSJjaGFuZ2VzZXQiIGhyZWY9Imh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzE1IiB0aXRsZT0iUmVtb3ZlIExlZ2FjeURl
ZmF1bHRPcHRpb25hbEFyZ3VtZW50cyBmbGFnIGZyb20gbmF2aWdhdG9yIElETCBmaWxlcyAuLi4i
Jmd0O3I5MjMxNSZsdDsvYSZndDsuXG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZs
dDtwJmd0O1xuJyArCisgICAgJyogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
LWV4cGVjdGVkLnR4dDpcbicgKworICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnPC9kZXNjcmlw
dGlvbj5cbicgKworICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicgKworICAg
ICcgICAgPC9pdGVtPjxpdGVtPlxuJyArCisgICAgJyAgICAgICAgICA8YXV0aG9yPm5vYW0ucm9z
ZW50aGFsQG5va2lhLmNvbTwvYXV0aG9yPlxuJyArCisgICAgJyAgICAgIDxwdWJEYXRlPlRodSwg
MDQgQXVnIDIwMTEgMDA6MjI6MjEgR01UPC9wdWJEYXRlPlxuJyArCisgICAgJyAgICAgIDx0aXRs
ZT5SZXZpc2lvbiA5MjMzNzogW1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dIGh0dHA6Ly93ZWJraXQu
b3JnL2Jsb2ctZmlsZXMvdHJhbnNmb3JtLXN0eWxlLmh0bWwgLi4uPC90aXRsZT5cbicgKworICAg
ICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjMzNy90cnVu
azwvbGluaz5cbicgKworICAgICcgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzM3L3RydW5rPC9ndWlkPlxuJyArCisgICAg
JyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcbicgKworICAgICdbUXRdW1RleG1hcF1bUkVH
UkVTU0lPTl0gJmx0O2EgY2xhc3M9ImV4dC1saW5rIiBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9i
bG9nLWZpbGVzL3RyYW5zZm9ybS1zdHlsZS5odG1sIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiIm
Z3Q7ICZsdDsvc3BhbiZndDtodHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1z
dHlsZS5odG1sJmx0Oy9hJmd0OyBkb2VzblwndCBzaG93IGNvbXBvc2l0ZWQgY29udGVudFxuJyAr
CisgICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1NjI5IiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZs
dDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2Mjkm
bHQ7L2EmZ3Q7XG4nICsKKyAgICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyAr
CisgICAgJ1Jldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uXG4nICsKKyAgICAnJmx0Oy9wJmd0
O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ1NvbWUgbm9uLUVTMiBpbml0aWFsaXph
dGlvbiB3YXMgd3JvbmdmdWxseSAjaWZkZWZlZCBpbiBDUFUoWDg2KSBhbmQgdGh1cyBjb21waWxl
ZC1vdXQuXG4nICsKKyAgICAnV2hlbiBwdXQgaXQgaW4gdGhlIGNvcnJlY3QgI2lmZGVmLCBjb21w
b3NpdGVkIGxheWVycyB3aGljaCByZXF1aXJlIGFuIGludGVybWVkaWF0ZSBidWZmZXJcbicgKwor
ICAgICd3b3JrIGFnYWluLlxuJyArCisgICAgJyZsdDsvcCZndDtcbicgKworICAgICcmbHQ7cCZn
dDtcbicgKworICAgICdObyBuZXcgdGVzdHMuIEV4aXN0aW5nIG9wYWNpdHkgdGVzdHMgaW4gTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcgdGVzdCB0aGlzLlxuJyArCisgICAgJyZsdDsvcCZndDtcbicg
KworICAgICcmbHQ7cCZndDtcbicgKworICAgICcqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9U
ZXh0dXJlTWFwcGVyR0wuY3BwOlxuJyArCisgICAgJyhXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OmJpbmQpOlxuJyArCisgICAgJyZsdDsvcCZndDtcbicgKworICAgICc8L2Rlc2NyaXB0aW9uPlxu
JyArCisgICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCisgICAgJyAgICA8
L2l0ZW0+PGl0ZW0+XG4nICsKKyAgICAnICAgICAgICAgIDxhdXRob3I+Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc8L2F1dGhvcj5cbicgKworICAgICcgICAgICA8cHViRGF0ZT5XZWQsIDAzIEF1ZyAy
MDExIDA0OjI2OjUyIEdNVDwvcHViRGF0ZT5cbicgKworICAgICcgICAgICA8dGl0bGU+UmV2aXNp
b24gOTIyNTk6IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjI1Ni5cbicgKworICAgICdodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi48L3RpdGxlPlxuJyArCisgICAg
JyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU5L3RydW5r
PC9saW5rPlxuJyArCisgICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTkvdHJ1bms8L2d1aWQ+XG4nICsKKyAgICAn
ICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCisgICAgJ1VucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0ICZsdDthIGNsYXNzPSJjaGFuZ2VzZXQiIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzkyMjU2IiB0aXRsZT0iTWFrZSBFdmVudERpc3BhdGNoTWVkaWF0b3IgUmVm
Q291bnRlZC4gLi4uIiZndDtyOTIyNTYmbHQ7L2EmZ3Q7LlxuJyArCisgICAgJyZsdDthIGNsYXNz
PSJleHQtbGluayIgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTYi
Jmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFuJmd0O2h0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2Jmx0Oy9hJmd0O1xuJyArCisgICAgJyZsdDthIGNsYXNz
PSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1NTkzIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1OTMmbHQ7L2EmZ3Q7XG4nICsKKyAg
ICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJ0NhdXNpbmcgdG9u
cyBvZiBjcmFzaGVzIG9uIHRoZSBjaHJvbWl1bSB3aW4gYm90cyAoUmVxdWVzdGVkIGJ5XG4nICsK
KyAgICAnamFtZXNyIG9uICN3ZWJraXQpLlxuJyArCisgICAgJyZsdDsvcCZndDtcbicgKworICAg
ICcmbHQ7cCZndDtcbicgKworICAgICdQYXRjaCBieSBTaGVyaWZmIEJvdCAmYW1wO2x0OyZsdDth
IGNsYXNzPSJtYWlsLWxpbmsiIGhyZWY9Im1haWx0bzp3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20iJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFuJmd0O3dlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbSZsdDsvYSZndDsmYW1wO2d0OyBvbiAyMDExLTA4LTAyXG4nICsKKyAg
ICAnJmx0Oy9wJmd0O1xuJyArCisgICAgJyZsdDtwJmd0O1xuJyArCisgICAgJyogZG9tL0V2ZW50
LmNwcDpcbicgKworICAgICcqIGRvbS9FdmVudC5oOlxuJyArCisgICAgJyogZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHA6XG4nICsKKyAgICAnKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hFdmVudCk6XG4nICsKKyAgICAnKiBkb20vRXZlbnREaXNwYXRjaGVyLmg6XG4nICsKKyAgICAn
KiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6XG4nICsKKyAgICAnKiBkb20vS2V5Ym9hcmRFdmVudC5o
OlxuJyArCisgICAgJyogZG9tL01vdXNlRXZlbnQuY3BwOlxuJyArCisgICAgJyogZG9tL01vdXNl
RXZlbnQuaDpcbicgKworICAgICcqIGRvbS9Ob2RlLmNwcDpcbicgKworICAgICcoV2ViQ29yZTo6
Tm9kZTo6ZGlzcGF0Y2hFdmVudCk6XG4nICsKKyAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNo
S2V5RXZlbnQpOlxuJyArCisgICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaE1vdXNlRXZlbnQp
OlxuJyArCisgICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQpOlxuJyArCisg
ICAgJyogZG9tL1doZWVsRXZlbnQuY3BwOlxuJyArCisgICAgJyogZG9tL1doZWVsRXZlbnQuaDpc
bicgKworICAgICcmbHQ7L3AmZ3Q7XG4nICsKKyAgICAnPC9kZXNjcmlwdGlvbj5cbicgKworICAg
ICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicgKworICAgICcgICAgPC9pdGVtPlxu
JyArCisgICAgJyA8L2NoYW5uZWw+XG4nICsKKyAgICAnPC9yc3M+XG4nCisKK3ZhciBrRXhhbXBs
ZUNvbW1pdERhdGFMaXN0ID0gW3sKKyAgICAicmV2aXNpb24iOiA5MjM0MiwKKyAgICAidGl0bGUi
OiAiUmV2aXNpb24gOTIzNDI6IFN1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVl
IGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gLi4uIiwKKyAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAy
MDExIDAyOjA5OjE5IEdNVCIsCisgICAgInN1bW1hcnkiOiAiU3VwcG9ydCBjYXN0IGJldHdlZW4g
Q1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBpbiBDU1NTdHlsZVNlbGVjdG9y
LiIsCisgICAgImF1dGhvciI6ICJtYWNwaGVyc29uQGNocm9taXVtLm9yZyIsCisgICAgInJldmll
d2VyIjogIlNpbW9uIEZyYXNlciIsCisgICAgImJ1Z0lEIjogNjU2NTcsCisgICAgInJldmVydGVk
UmV2aXNpb24iOiB1bmRlZmluZWQKK30sIHsKKyAgICAicmV2aXNpb24iOiA5MjM0MSwKKyAgICAi
dGl0bGUiOiAiUmV2aXNpb24gOTIzNDE6IEltcGxlbWVudCBFdmVudFNlbmRlci5zY2FsZVBhZ2VC
eSgpIC4uLiIsCisgICAgInRpbWUiOiAiVGh1LCAwNCBBdWcgMjAxMSAwMjowMTozMSBHTVQiLAor
ICAgICJzdW1tYXJ5IjogIkltcGxlbWVudCBFdmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpIiwKKyAg
ICAiYXV0aG9yIjogIktlbnRhcm8gSGFyYSIsCisgICAgInJldmlld2VyIjogIkRhcmluIEZpc2hl
ciIsCisgICAgImJ1Z0lEIjogNTgwMTMsCisgICAgInJldmVydGVkUmV2aXNpb24iOiB1bmRlZmlu
ZWQKK30sIHsKKyAgICAicmV2aXNpb24iOiA5MjMzOCwKKyAgICAidGl0bGUiOiAiUmV2aXNpb24g
OTIzMzg6IFJldmVydCBhbiBlcnJvbmVvdXMgcmViYXNlbGluZSBmcm9tIHI5MjMxNS5cbiogLi4u
IiwKKyAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAxOjQxOjI5IEdNVCIsCisgICAgInN1
bW1hcnkiOiAiUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2VsaW5lIGZyb20gcjkyMzE1LiIsCisg
ICAgImF1dGhvciI6ICJybml3YUB3ZWJraXQub3JnIiwKKyAgICAicmV2aWV3ZXIiOiBudWxsLAor
ICAgICJidWdJRCI6IE5hTiwKKyAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IHVuZGVmaW5lZAorfSwg
eworICAgICJyZXZpc2lvbiI6IDkyMzM3LAorICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5MjMzNzog
W1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dIGh0dHA6Ly93ZWJraXQub3JnL2Jsb2ctZmlsZXMvdHJh
bnNmb3JtLXN0eWxlLmh0bWwgLi4uIiwKKyAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAw
OjIyOjIxIEdNVCIsCisgICAgInN1bW1hcnkiOiAiW1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dICBo
dHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1zdHlsZS5odG1sIGRvZXNuJ3Qg
c2hvdyBjb21wb3NpdGVkIGNvbnRlbnQiLAorICAgICJhdXRob3IiOiAibm9hbS5yb3NlbnRoYWxA
bm9raWEuY29tIiwKKyAgICAicmV2aWV3ZXIiOiAiQmVuamFtaW4gUG91bGFpbiIsCisgICAgImJ1
Z0lEIjogNjU2MjksCisgICAgInJldmVydGVkUmV2aXNpb24iOiB1bmRlZmluZWQKK30sIHsKKyAg
ICAicmV2aXNpb24iOiA5MjI1OSwKKyAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIyNTk6IFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjI1Ni5cbmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzkyMjU2IC4uLiIsCisgICAgInRpbWUiOiAiV2VkLCAwMyBBdWcgMjAxMSAwNDoyNjo1MiBH
TVQiLAorICAgICJzdW1tYXJ5IjogIlVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MjI1Ni4iLAor
ICAgICJhdXRob3IiOiAiU2hlcmlmZiBCb3QiLAorICAgICJyZXZpZXdlciI6IG51bGwsCisgICAg
ImJ1Z0lEIjogNjU1OTMsCisgICAgInJldmVydGVkUmV2aXNpb24iOiA5MjI1NgorfV07CisKK3Rl
c3QoImNoYW5nZXNldFVSTCIsIDEsIGZ1bmN0aW9uKCkgeworICAgIGVxdWFscyh0cmFjLmNoYW5n
ZXNldFVSTCgxMjM0KSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyMzQiKTsK
K30pOworCit0ZXN0KCJsb2dVUkwiLCA0LCBmdW5jdGlvbigpIHsKKyAgICBlcXVhbHModHJhYy5s
b2dVUkwoJ3RydW5rJywgMTIzNCwgMTIzNiwgZmFsc2UsIGZhbHNlKSwgImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM2JnN0b3BfcmV2PTEyMzQmbGltaXQ9NCIpOworICAg
IGVxdWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM0LCAxMjM0LCB0cnVlLCBmYWxzZSksICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTIzNCZzdG9wX3Jldj0xMjM0Jmxp
bWl0PTImdmVyYm9zZT1vbiIpOworICAgIGVxdWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM2
LCAxMjM2LCBmYWxzZSwgdHJ1ZSksICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9y
ZXY9MTIzNiZzdG9wX3Jldj0xMjM2JmxpbWl0PTImZm9ybWF0PXJzcyIpOworICAgIGVxdWFscyh0
cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM0LCAxMjM2LCB0cnVlLCB0cnVlKSwgImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM2JnN0b3BfcmV2PTEyMzQmbGltaXQ9NCZ2ZXJi
b3NlPW9uJmZvcm1hdD1yc3MiKTsKK30pOworCit0ZXN0KCJyZWNlbnRDb21taXREYXRhIiwgMywg
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7
CisgICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCisgICAgeworICAg
ICAgICBlcXVhbHModXJsLCAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/dmVyYm9z
ZT1vbiZmb3JtYXQ9cnNzJmxpbWl0PTEwJyk7CisgICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNh
bGxiYWNrKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJz
ZXIoKTsKKyAgICAgICAgICAgIHZhciByZXNwb25zZURPTSA9IHBhcnNlci5wYXJzZUZyb21TdHJp
bmcoa0V4YW1wbGVDb21taXREYXRhWE1MLCAiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgICAg
ICBjYWxsYmFjayhyZXNwb25zZURPTSk7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBzaW11
bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgdHJhYy5yZWNlbnRDb21taXREYXRh
KCd0cnVuaycsIDEwLCBmdW5jdGlvbihjb21taXREYXRhTGlzdCkgeworICAgICAgICAgICAgJC5l
YWNoKGNvbW1pdERhdGFMaXN0LCBmdW5jdGlvbihpbmRleCwgY29tbWl0RGF0YSkgeworICAgICAg
ICAgICAgICAgIC8vIEluY2x1ZGluZyB0aGUgZW50aXJlIG1lc3NhZ2UgbWFrZXMgdGhlIGRlZXBF
cXVhbCBiZWxvdyB0byB1bndpZWxkeS4KKyAgICAgICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0
YS5tZXNzYWdlOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkZWVwRXF1YWwoY29tbWl0
RGF0YUxpc3QsIGtFeGFtcGxlQ29tbWl0RGF0YUxpc3QpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30pOworCit0ZXN0KCJjb21taXREYXRhRm9yUmV2aXNpb25SYW5nZSIsIDMsIGZ1bmN0aW9uKCkg
eworICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOworICAgIHNpbXVs
YXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZXF1YWxz
KHVybCwgJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM2NSZzdG9wX3Jl
dj0xMjM0NSZsaW1pdD0yMiZ2ZXJib3NlPW9uJmZvcm1hdD1yc3MnKTsKKyAgICAgICAgc2ltdWxh
dG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgcGFyc2Vy
ID0gbmV3IERPTVBhcnNlcigpOworICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFyc2Vy
LnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94bWwi
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB0cmFjLmNv
bW1pdERhdGFGb3JSZXZpc2lvblJhbmdlKCd0cnVuaycsIDEyMzQ1LCAxMjM2NSwgZnVuY3Rpb24o
Y29tbWl0RGF0YUxpc3QpIHsKKyAgICAgICAgICAgICQuZWFjaChjb21taXREYXRhTGlzdCwgZnVu
Y3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKKyAgICAgICAgICAgICAgICAvLyBJbmNsdWRpbmcg
dGhlIGVudGlyZSBtZXNzYWdlIG1ha2VzIHRoZSBkZWVwRXF1YWwgYmVsb3cgdG8gdW53aWVsZHku
CisgICAgICAgICAgICAgICAgZGVsZXRlIGNvbW1pdERhdGEubWVzc2FnZTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgZGVlcEVxdWFsKGNvbW1pdERhdGFMaXN0LCBrRXhhbXBsZUNvbW1p
dERhdGFMaXN0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKKworfSkoKTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL3VpLmpzCShyZXZpc2lvbiA5MzI1NCkJKGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Vp
LmpzOjkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordmFyIHVpID0gdWkgfHwge307CisK
KyhmdW5jdGlvbiAoKSB7CisKK3VpLmRpc3BsYXlVUkxGb3JCdWlsZGVyID0gZnVuY3Rpb24oYnVp
bGRlck5hbWUpCit7CisgICAgcmV0dXJuICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2Via2l0L3dhdGVyZmFsbD8nICsgJC5wYXJhbSh7CisgICAgICAgICdidWlsZGVyJzog
YnVpbGRlck5hbWUKKyAgICB9KTsKK30KKwordWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyID0gZnVu
Y3Rpb24oYnVpbGRlck5hbWUpCit7CisgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLnJlcGxhY2UoL1dl
YmtpdCAvLCAnJyk7Cit9CisKK2Z1bmN0aW9uIGRpc3BsYXlOYW1lRm9yUmV2aXNpb24ocmV2aXNp
b25OdW1iZXIpCit7CisgICAgcmV0dXJuICdyJyArIHJldmlzaW9uTnVtYmVyOworfQorCit1aS51
cmxGb3JUZXN0ID0gZnVuY3Rpb24odGVzdE5hbWUpCit7CisgICAgcmV0dXJuICdodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvJyArIHRlc3ROYW1lOworfQor
Cit1aS5pbmZvYmFyTWVzc2FnZUZvckNvbXBpbGVFcnJvcnMgPSBmdW5jdGlvbihidWlsZGVyTmFt
ZUxpc3QpCit7CisgICAgdmFyIGJsb2NrID0gJCgnPGRpdiBjbGFzcz0iY29tcGlsZS1lcnJvcnMi
PkJ1aWxkIEZhaWxlZDo8dWw+PC91bD48L2Rpdj4nKTsKKworICAgIHZhciBsaXN0ID0gJCgndWwn
LCBibG9jayk7CisgICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1
aWxkZXJOYW1lKSB7CisgICAgICAgIHZhciBsaXN0RWxlbWVudCA9ICQoJzxsaT48YSB0YXJnZXQ9
Il9ibGFuayI+PC9hPjwvbGk+Jyk7CisgICAgICAgIGxpc3QuYXBwZW5kKGxpc3RFbGVtZW50KTsK
KyAgICAgICAgJCgnYScsIGxpc3RFbGVtZW50KS5hdHRyKCdocmVmJywgdWkuZGlzcGxheVVSTEZv
ckJ1aWxkZXIoYnVpbGRlck5hbWUpKS50ZXh0KHVpLmRpc3BsYXlOYW1lRm9yQnVpbGRlcihidWls
ZGVyTmFtZSkpOworICAgIH0pOworCisgICAgcmV0dXJuIGJsb2NrOworfTsKKwordWkuZmFpbHVy
ZURldGFpbHNTdGF0dXMgPSBmdW5jdGlvbihmYWlsdXJlSW5mbywgYnVpbGRlck5hbWVMaXN0KQor
eworICAgIHZhciBmYWlsdXJlVHlwZXMgPSBmYWlsdXJlSW5mby5mYWlsdXJlVHlwZUxpc3Quam9p
bignICcpOworCisgICAgdmFyIGJsb2NrID0gJCgnPHNwYW4+PHNwYW4gY2xhc3M9InRlc3QtbmFt
ZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJidWlsZGVyLWxpc3QiPjwvc3Bhbj48L3NwYW4+Jyk7Cisg
ICAgJCgnLnRlc3QtbmFtZScsIGJsb2NrKS5hZGRDbGFzcyhmYWlsdXJlVHlwZXMpLnRleHQoZmFp
bHVyZUluZm8udGVzdE5hbWUpOworCisgICAgdmFyIGJ1aWxkZXJMaXN0ID0gJCgnLmJ1aWxkZXIt
bGlzdCcsIGJsb2NrKTsKKyAgICAkLmVhY2goYnVpbGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRl
eCwgYnVpbGRlck5hbWUpIHsKKyAgICAgICAgdmFyIGJ1aWxkZXIgPSAkKCc8c3BhbiBjbGFzcz0i
YnVpbGRlci1uYW1lIj48L3NwYW4+JykKKyAgICAgICAgYnVpbGRlci50ZXh0KGJ1aWxkZXJOYW1l
KTsKKyAgICAgICAgaWYgKGJ1aWxkZXJOYW1lID09IGZhaWx1cmVJbmZvLmJ1aWxkZXJOYW1lKQor
ICAgICAgICAgICAgYnVpbGRlci5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKKyAgICAgICAgYnVpbGRl
ckxpc3QuYXBwZW5kKGJ1aWxkZXIpOworICAgIH0pOworCisgICAgcmV0dXJuIGJsb2NrOworfTsK
KworZnVuY3Rpb24gYnVpbGRlclRhYmxlRGF0YUNlbGxzKHJlc3VsdE5vZGVzQnlCdWlsZGVyKQor
eworICAgIGlmICghcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpCisgICAgICAgIHJlc3VsdE5vZGVzQnlC
dWlsZGVyID0ge307CisKKyAgICB2YXIgbGlzdCA9IFtdOworCisgICAgJC5lYWNoKGNvbmZpZy5r
QnVpbGRlcnMsIGZ1bmN0aW9uKGluZGV4LCBidWlsZGVyTmFtZSkgeworICAgICAgICB2YXIgYmxv
Y2sgPSAkKCc8dGQgY2xhc3M9ImJ1aWxkZXIiPjwvdGQ+Jyk7CisgICAgICAgIGJsb2NrLmF0dHIo
J3RpdGxlJywgdWkuZGlzcGxheU5hbWVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKSk7CisgICAgICAg
IGJsb2NrLmF0dHIoY29uZmlnLmtCdWlsZGVyTmFtZUF0dHIsIGJ1aWxkZXJOYW1lKTsKKworICAg
ICAgICBpZiAoYnVpbGRlck5hbWUgaW4gcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsKKyAgICAgICAg
ICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhwZWN0ZWRSZXN1bHRzKHJl
c3VsdE5vZGVzQnlCdWlsZGVyW2J1aWxkZXJOYW1lXSk7CisgICAgICAgICAgICB2YXIgZmFpbHVy
ZVR5cGVzID0gdW5leHBlY3RlZEZhaWx1cmVzLmpvaW4oJyAnKTsKKyAgICAgICAgICAgIGJsb2Nr
LmF0dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyLCBmYWlsdXJlVHlwZXMpOworICAgICAgICB9
CisKKyAgICAgICAgbGlzdC5wdXNoKGJsb2NrWzBdKQorICAgIH0pOworCisgICAgcmV0dXJuICQo
bGlzdCk7Cit9CisKK3VpLnN1bW1hcml6ZUZhaWx1cmUgPSBmdW5jdGlvbihmYWlsdXJlQW5hbHlz
aXMpCit7CisgICAgdmFyIGJsb2NrID0gJCgnPHRyIGNsYXNzPSJyZXN1bHQiPjwvdHI+Jyk7Cisg
ICAgYmxvY2suYXBwZW5kKGJ1aWxkZXJUYWJsZURhdGFDZWxscyhmYWlsdXJlQW5hbHlzaXMucmVz
dWx0Tm9kZXNCeUJ1aWxkZXIpKTsKKyAgICBibG9jay5hcHBlbmQoCisgICAgICAgICc8dGQgY2xh
c3M9InRlc3QiPicgKworICAgICAgICAgICc8ZGl2IGNsYXNzPSJ3aGF0Ij48aW5wdXQgdHlwZT0i
Y2hlY2tib3giPiA8YSBjbGFzcz0idGVzdC1uYW1lIj48L2E+PC9kaXY+JyArCisgICAgICAgICc8
L3RkPjwvdHI+Jyk7CisgICAgYmxvY2suYXR0cihjb25maWcua1Rlc3ROYW1lQXR0ciwgZmFpbHVy
ZUFuYWx5c2lzLnRlc3ROYW1lKTsKKworICAgIHZhciB1bmV4cGVjdGVkUmVzdWx0cyA9IHJlc3Vs
dHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzKGZhaWx1cmVBbmFseXNpcy5yZXN1bHROb2Rlc0J5
QnVpbGRlcik7CisgICAgdmFyIGZhaWx1cmVUeXBlcyA9IHVuZXhwZWN0ZWRSZXN1bHRzLmpvaW4o
JyAnKTsKKyAgICAkKCcudGVzdC1uYW1lJywgYmxvY2spLnRleHQoZmFpbHVyZUFuYWx5c2lzLnRl
c3ROYW1lKS5hdHRyKCdocmVmJywgdWkudXJsRm9yVGVzdChmYWlsdXJlQW5hbHlzaXMudGVzdE5h
bWUpKS5hZGRDbGFzcyhmYWlsdXJlVHlwZXMpOworCisgICAgcmV0dXJuIGJsb2NrOworfTsKKwor
dWkuZmFpbHVyZUluZm9MaXN0Rm9yU3VtbWFyeSA9IGZ1bmN0aW9uKHRlc3RTdW1tYXJ5KQorewor
ICAgIHZhciBmYWlsdXJlSW5mb0xpc3QgPSBbXTsKKworICAgIHZhciB0ZXN0TmFtZSA9IHRlc3RT
dW1tYXJ5LmF0dHIoY29uZmlnLmtUZXN0TmFtZUF0dHIpOworICAgICQoJy5idWlsZGVyJywgdGVz
dFN1bW1hcnkpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmYWlsdXJlVHlwZXMgPSAk
KHRoaXMpLmF0dHIoY29uZmlnLmtGYWlsdXJlVHlwZXNBdHRyKTsKKyAgICAgICAgaWYgKCFmYWls
dXJlVHlwZXMpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdmFyIGZhaWx1cmVUeXBlTGlz
dCA9IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KGZhaWx1cmVUeXBlcyk7CisgICAgICAgIHZhciBi
dWlsZGVyTmFtZSA9ICQodGhpcykuYXR0cihjb25maWcua0J1aWxkZXJOYW1lQXR0cik7CisgICAg
ICAgIGZhaWx1cmVJbmZvTGlzdC5wdXNoKHsKKyAgICAgICAgICAgICd0ZXN0TmFtZSc6IHRlc3RO
YW1lLAorICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogYnVpbGRlck5hbWUsCisgICAgICAgICAg
ICAnZmFpbHVyZVR5cGVMaXN0JzogZmFpbHVyZVR5cGVMaXN0LAorICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIHJldHVybiBmYWlsdXJlSW5mb0xpc3Q7Cit9OworCit1aS5jb21taXRFbnRyeSA9
IGZ1bmN0aW9uKGNvbW1pdERhdGEpCit7CisgICAgdmFyIGVudHJ5ID0gJCgnPHRkIGNsYXNzPSJl
bnRyeSI+PC90ZD4nKTsKKworICAgIGVudHJ5LmFwcGVuZCgnPGRpdiBjbGFzcz0iZGV0YWlscyI+
PGEgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJyZXZpc2lvbiI+PC9hPiA8c3BhbiBjbGFzcz0ic3Vt
bWFyeSI+PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXV0aG9yIj48L3NwYW4+IDxzcGFuIGNsYXNzPSJy
ZXZpZXdlci1jb250YWluZXIiPihSZXZpZXdlcjogPHNwYW4gY2xhc3M9InJldmlld2VyIj48L3Nw
YW4+KTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJyZWdyZXNzaW9ucyI+PC9kaXY+Jyk7CisgICAg
JCgnLnN1bW1hcnknLCBlbnRyeSkudGV4dChjb21taXREYXRhLnN1bW1hcnkpOworICAgICQoJy5y
ZXZpc2lvbicsIGVudHJ5KS5hdHRyKCdocmVmJywgdHJhYy5jaGFuZ2VzZXRVUkwoY29tbWl0RGF0
YS5yZXZpc2lvbikpLnRleHQoZGlzcGxheU5hbWVGb3JSZXZpc2lvbihjb21taXREYXRhLnJldmlz
aW9uKSk7CisgICAgJCgnLmF1dGhvcicsIGVudHJ5KS50ZXh0KGNvbW1pdERhdGEuYXV0aG9yKTsK
KyAgICBpZiAoY29tbWl0RGF0YS5yZXZpZXdlcikKKyAgICAgICAgJCgnLnJldmlld2VyJywgZW50
cnkpLnRleHQoY29tbWl0RGF0YS5yZXZpZXdlcik7CisgICAgZWxzZQorICAgICAgICAkKCcucmV2
aWV3ZXItY29udGFpbmVyJywgZW50cnkpLmRldGFjaCgpOworICAgIGlmIChjb21taXREYXRhLndh
c1JldmVydGVkKQorICAgICAgICBlbnRyeS5hZGRDbGFzcygncmV2ZXJ0ZWQnKTsKKworICAgIHJl
dHVybiBlbnRyeTsKK30KKwordWkuY2hhbmdlbG9nID0gZnVuY3Rpb24oY29tbWl0RGF0YUxpc3Qp
Cit7CisgICAgdmFyIGJsb2NrID0gJCgnPHRhYmxlIGNsYXNzPSJjaGFuZ2Vsb2ciPjx0Ym9keT48
L3Rib2R5PjwvdGFibGU+Jyk7CisKKyAgICAkLmVhY2goY29tbWl0RGF0YUxpc3QsIGZ1bmN0aW9u
KGluZGV4LCBjb21taXREYXRhKSB7CisgICAgICAgIHZhciByb3cgPSAkKCc8dHIgY2xhc3M9InJl
dmlzaW9uIj48L3RyPicpOworICAgICAgICByb3cuYXBwZW5kKGJ1aWxkZXJUYWJsZURhdGFDZWxs
cygpKTsKKyAgICAgICAgcm93LmF0dHIoY29uZmlnLmtSZXZpc2lvbkF0dHIsIGNvbW1pdERhdGEu
cmV2aXNpb24pOworICAgICAgICByb3cuYXBwZW5kKHVpLmNvbW1pdEVudHJ5KGNvbW1pdERhdGEp
KTsKKyAgICAgICAgJCgndGJvZHknLCBibG9jaykuYXBwZW5kKHJvdyk7CisgICAgfSk7CisKKyAg
ICByZXR1cm4gYmxvY2s7Cit9OworCit9KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvdWlfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L3VpX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91
aV91bml0dGVzdHMuanM6OTMyNTQpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aV91bml0
dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
KGZ1bmN0aW9uICgpIHsKKworbW9kdWxlKCJpdSIpOworCit2YXIga0V4YW1wbGVSZXN1bHRzQnlU
ZXN0ID0geworICAgICJzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRl
LXN0eWxlLmh0bWwiOiB7CisgICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7CisgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiAiSU1BR0UiLAorICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKKyAgICAg
ICAgfSwKKyAgICAgICAgIk1vY2sgTGludXgiOiB7CisgICAgICAgICAgICAiZXhwZWN0ZWQiOiAi
VEVYVCIsCisgICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgorICAgICAgICB9CisgICAgfSwK
KyAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7CisgICAgICAgICJNb2NrIEJ1
aWxkZXIiOiB7CisgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAi
YWN0dWFsIjogIlRFWFQiCisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoImluZm9iYXJNZXNz
YWdlRm9yQ29tcGlsZUVycm9ycyIsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciBtZXNzYWdlID0g
dWkuaW5mb2Jhck1lc3NhZ2VGb3JDb21waWxlRXJyb3JzKFsnTW9jayBCdWlsZGVyJywgJ0Fub3Ro
ZXIgQnVpbGRlciddKTsKKyAgICBtZXNzYWdlLndyYXAoJzx3cmFwcGVyPjwvd3JhcHBlcj4nKTsK
KyAgICBlcXVhbChtZXNzYWdlLnBhcmVudCgpLmh0bWwoKSwKKyAgICAgICAgJzxkaXYgY2xhc3M9
ImNvbXBpbGUtZXJyb3JzIj5CdWlsZCBGYWlsZWQ6PHVsPicgKworICAgICAgICAgICAgJzxsaT48
YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9t
aXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1Nb2NrK0J1aWxkZXIiPk1vY2sgQnVpbGRlcjwv
YT48L2xpPicgKworICAgICAgICAgICAgJzxsaT48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRl
cj1Bbm90aGVyK0J1aWxkZXIiPkFub3RoZXIgQnVpbGRlcjwvYT48L2xpPicgKworICAgICAgICAn
PC91bD48L2Rpdj4nKTsKK30pOworCit0ZXN0KCJmYWlsdXJlRGV0YWlsc1N0YXR1cyIsIDEsIGZ1
bmN0aW9uKCkgeworICAgIHZhciBzdGF0dXMgPSB1aS5mYWlsdXJlRGV0YWlsc1N0YXR1cyh7Cisg
ICAgICAgICdidWlsZGVyTmFtZSc6ICdNb2NrIEJ1aWxkZXInLAorICAgICAgICAndGVzdE5hbWUn
OiAndXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwnLAorICAgICAgICAnZmFpbHVyZVR5cGVM
aXN0JzogWydURVhUJ10sCisgICAgfSwgWydNb2NrIEJ1aWxkZXInLCAnQW5vdGhlciBCdWlsZGVy
J10pOworICAgIHN0YXR1cy53cmFwKCc8d3JhcHBlcj48L3dyYXBwZXI+Jyk7CisgICAgZXF1YWwo
c3RhdHVzLnBhcmVudCgpLmh0bWwoKSwKKyAgICAgICAgJzxzcGFuPicgKworICAgICAgICAgICAg
JzxzcGFuIGNsYXNzPSJ0ZXN0LW5hbWUgVEVYVCI+dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWw8L3NwYW4+JyArCisgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJ1aWxkZXItbGlzdCI+JyAr
CisgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJidWlsZGVyLW5hbWUgc2VsZWN0ZWQiPk1v
Y2sgQnVpbGRlcjwvc3Bhbj4nICsKKyAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJ1aWxk
ZXItbmFtZSI+QW5vdGhlciBCdWlsZGVyPC9zcGFuPicgKworICAgICAgICAgICAgJzwvc3Bhbj4n
ICsKKyAgICAgICAgJzwvc3Bhbj4nKTsKK30pOworCit0ZXN0KCJyZXN1bHRzLlJlc3VsdHNHcmlk
IiwgMSwgZnVuY3Rpb24oKSB7CisgICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRz
R3JpZCgpCisgICAgZ3JpZC5hZGRSZXN1bHRzKFsKKyAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNv
bS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItZGlmZi50eHQnLAorICAgICAgICAnaHR0cDov
L2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1leHBlY3RlZC5wbmcnLAor
ICAgICAgICAnaHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1h
Y3R1YWwucG5nJywKKyAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Zvby1iYXItZGlmZi5wbmcnLAorICAgIF0pOworICAgIGVxdWFsKGdyaWQuaW5uZXJIVE1M
LAorICAgICAgICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKKyAgICAgICAgICAgICc8
dGhlYWQ+JyArCisgICAgICAgICAgICAgICAgJzx0cj4nICsKKyAgICAgICAgICAgICAgICAgICAg
Jzx0aD5FeHBlY3RlZDwvdGg+JyArCisgICAgICAgICAgICAgICAgICAgICc8dGg+QWN0dWFsPC90
aD4nICsKKyAgICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsKKyAgICAgICAgICAg
ICAgICAnPC90cj4nICsKKyAgICAgICAgICAgICc8L3RoZWFkPicgKworICAgICAgICAgICAgJzx0
Ym9keT4nICsKKyAgICAgICAgICAgICAgICAnPHRyPicgKworICAgICAgICAgICAgICAgICAgICAn
PHRkIGNsYXNzPSJleHBlY3RlZCI+PGltZyBjbGFzcz0iaW1hZ2UtcmVzdWx0IiBzcmM9Imh0dHA6
Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItZXhwZWN0ZWQucG5nIj48
L3RkPicgKworICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJhY3R1YWwiPjxpbWcgY2xh
c3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0LXRlc3QtcmVz
dWx0cy9mb28tYmFyLWFjdHVhbC5wbmciPjwvdGQ+JyArCisgICAgICAgICAgICAgICAgICAgICc8
dGQgY2xhc3M9ImRpZmYiPjxpbWcgY2xhc3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhh
bXBsZS5jb20vbGF5b3V0LXRlc3QtcmVzdWx0cy9mb28tYmFyLWRpZmYucG5nIj48L3RkPicgKwor
ICAgICAgICAgICAgICAgICc8L3RyPicgKworICAgICAgICAgICAgJzwvdGJvZHk+JyArCisgICAg
ICAgICc8L3RhYmxlPicgKworICAgICAgICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsK
KyAgICAgICAgICAgICc8dGhlYWQ+JyArCisgICAgICAgICAgICAgICAgJzx0cj4nICsKKyAgICAg
ICAgICAgICAgICAgICAgJzx0aD5FeHBlY3RlZDwvdGg+JyArCisgICAgICAgICAgICAgICAgICAg
ICc8dGg+QWN0dWFsPC90aD4nICsKKyAgICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4n
ICsKKyAgICAgICAgICAgICAgICAnPC90cj4nICsKKyAgICAgICAgICAgICc8L3RoZWFkPicgKwor
ICAgICAgICAgICAgJzx0Ym9keT4nICsKKyAgICAgICAgICAgICAgICAnPHRyPicgKworICAgICAg
ICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJleHBlY3RlZCI+PC90ZD4nICsKKyAgICAgICAgICAg
ICAgICAgICAgJzx0ZCBjbGFzcz0iYWN0dWFsIj48L3RkPicgKworICAgICAgICAgICAgICAgICAg
ICAnPHRkIGNsYXNzPSJkaWZmIj48aWZyYW1lIGNsYXNzPSJ0ZXh0LXJlc3VsdCIgc3JjPSJodHRw
Oi8vZXhhbXBsZS5jb20vbGF5b3V0LXRlc3QtcmVzdWx0cy9mb28tYmFyLWRpZmYudHh0Ij48L2lm
cmFtZT48L3RkPicgKworICAgICAgICAgICAgICAgICc8L3RyPicgKworICAgICAgICAgICAgJzwv
dGJvZHk+JyArCisgICAgICAgICc8L3RhYmxlPicpOworfSk7CisKK3Rlc3QoInJlc3VsdHMuUmVz
dWx0c0dyaWQgKGNyYXNobG9nKSIsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciBncmlkID0gbmV3
IHVpLnJlc3VsdHMuUmVzdWx0c0dyaWQoKQorICAgIGdyaWQuYWRkUmVzdWx0cyhbJ2h0dHA6Ly9l
eGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9nLnR4dCddKTsK
KyAgICBlcXVhbChncmlkLmlubmVySFRNTCwgJzxpZnJhbWUgY2xhc3M9InRleHQtcmVzdWx0IiBz
cmM9Imh0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gt
bG9nLnR4dCI+PC9pZnJhbWU+Jyk7Cit9KTsKKwordGVzdCgicmVzdWx0cy5SZXN1bHRzR3JpZCAo
ZW1wdHkpIiwgMSwgZnVuY3Rpb24oKSB7CisgICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5S
ZXN1bHRzR3JpZCgpCisgICAgZ3JpZC5hZGRSZXN1bHRzKFtdKTsKKyAgICBlcXVhbChncmlkLmlu
bmVySFRNTCwgJycpOworfSk7CisKK3Rlc3QoInN1bW1hcml6ZUZhaWx1cmUiLCAxLCBmdW5jdGlv
bigpIHsKKyAgICB2YXIgZmFpbHVyZUFuYWx5c2lzID0geworICAgICAgICAidGVzdE5hbWUiOiAi
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LXN2Z2RvbS1iYXNlRnJl
cXVlbmN5LXByb3AuaHRtbCIsCisgICAgICAgICJyZXN1bHROb2Rlc0J5QnVpbGRlciI6IHsKKyAg
ICAgICAgICAgICJXZWJraXQgTWFjMTAuNSAoQ0cpIjogeworICAgICAgICAgICAgICAgICJleHBl
Y3RlZCI6ICJJTUFHRSIsCisgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJQQVNTIgorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICJXZWJraXQgTWFjMTAuNSAoQ0cpKGRiZykoMikiOiB7Cisg
ICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIklNQUdFIiwKKyAgICAgICAgICAgICAgICAiYWN0
dWFsIjoiUEFTUyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBm
YWlsdXJlU3VtbWFyeSA9IHVpLnN1bW1hcml6ZUZhaWx1cmUoZmFpbHVyZUFuYWx5c2lzKTsKKyAg
ICB2YXIgZmFpbHVyZUluZm9MaXN0ID0gdWkuZmFpbHVyZUluZm9MaXN0Rm9yU3VtbWFyeShmYWls
dXJlU3VtbWFyeSk7CisKKyAgICBkZWVwRXF1YWwoZmFpbHVyZUluZm9MaXN0LCBbeworICAgICAg
ICAidGVzdE5hbWUiOiAic3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LXN2Z2RvbS1iYXNlRnJlcXVlbmN5LXByb3AuaHRtbCIsCisgICAgICAgICJidWlsZGVyTmFtZSI6
ICJXZWJraXQgTWFjMTAuNSAoQ0cpIiwKKyAgICAgICAgImZhaWx1cmVUeXBlTGlzdCI6IFsKKyAg
ICAgICAgICAgICJQQVNTIgorICAgICAgICBdCisgICAgICB9LCB7CisgICAgICAgICJ0ZXN0TmFt
ZSI6ICJzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQtc3ZnZG9tLWJh
c2VGcmVxdWVuY3ktcHJvcC5odG1sIiwKKyAgICAgICAgImJ1aWxkZXJOYW1lIjogIldlYmtpdCBN
YWMxMC41IChDRykoZGJnKSgyKSIsCisgICAgICAgICJmYWlsdXJlVHlwZUxpc3QiOiBbCisgICAg
ICAgICAgICAiUEFTUyIKKyAgICAgICAgXQorICAgICAgfQorICAgIF0pOworfSk7CisKK30pKCk7
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91bmV4cGVjdGVkLXBhc3Nlcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91bmV4cGVjdGVkLXBhc3Nlcy5qcwko
cmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91bmV4cGVjdGVkLXBhc3Nlcy5q
czo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VuZXhwZWN0ZWQtcGFzc2VzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9u
KCkgeworCitmdW5jdGlvbiBzZWxlY3RlZFN1Y2Nlc3NlcygpCit7CisgICAgdmFyIGZhaWx1cmVJ
bmZvTGlzdCA9IFtdOworCisgICAgJCgnLnRlc3QgaW5wdXQ6Y2hlY2tib3gnKS5lYWNoKGZ1bmN0
aW9uKCkgeworICAgICAgICBpZiAoIXRoaXMuY2hlY2tlZCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZmFpbHVyZUluZm9MaXN0ID0gZmFpbHVyZUluZm9MaXN0LmNvbmNhdCh1aS5mYWls
dXJlSW5mb0xpc3RGb3JTdW1tYXJ5KCQodGhpcykucGFyZW50cygnLnJlc3VsdCcpKSk7CisgICAg
fSk7CisKKyAgICByZXR1cm4gZmFpbHVyZUluZm9MaXN0OworfQorCitmdW5jdGlvbiB1cGRhdGVF
eHBlY3RhdGlvbnNGb3JTZWxlY3RlZCgpCit7CisgICAgY2hlY2tvdXQudXBkYXRlRXhwZWN0YXRp
b25zKHNlbGVjdGVkU3VjY2Vzc2VzKCksICQubm9vcCk7Cit9CisKK2Z1bmN0aW9uIHNob3dVbmV4
cGVjdGVkU3VjY2VzcyhzdWNjZXNzQW5hbHlzaXMpCit7CisgICAgLy8gRklYTUU6IFJlbmFtZSBz
dW1tYXJpemVGYWlsdXJlIHRvIG1ha2UgaXQgYXBwcm9wcmlhdGUgdG8gdXNlIGhlcmUuCisgICAg
JCgnLnJlY2VudC1oaXN0b3J5IHRhYmxlJykuYXBwZW5kKHVpLnN1bW1hcml6ZUZhaWx1cmUoc3Vj
Y2Vzc0FuYWx5c2lzKSk7Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZSgpCit7CisgICAgbW9kZWwudXBk
YXRlUmVzdWx0c0J5QnVpbGRlcihmdW5jdGlvbigpIHsKKyAgICAgICAgbW9kZWwuYW5hbHl6ZVVu
ZXhwZWN0ZWRTdWNjZXNzZXMoc2hvd1VuZXhwZWN0ZWRTdWNjZXNzKTsKKyAgICB9KTsKK30KKwor
JCgnLnVwZGF0ZS1leHBlY3RhdGlvbnMtc2VsZWN0ZWQnKS5saXZlKCdjbGljaycsIHVwZGF0ZUV4
cGVjdGF0aW9uc0ZvclNlbGVjdGVkKTsKKworJChkb2N1bWVudCkucmVhZHkodXBkYXRlKTsKKwor
fSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcmVzdWx0cy5qcwkocmV2aXNpb24g
OTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1bHRzLmpzOjkzMjU0KQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcmVzdWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCit2YXIgdWkgPSB1aSB8fCB7fTsKK3VpLnJlc3VsdHMg
PSB1aS5yZXN1bHRzIHx8IHt9OworCisoZnVuY3Rpb24oKXsKKworLy8gRklYTUU6IFJhdGhlciB0
aGFuIHVzaW5nIHRhYmxlLCBzaG91bGQgd2UgYmUgdXNpbmcgc29tZXRoaW5nIGZhbmNpZXI/Cit1
aS5yZXN1bHRzLkNvbXBhcmlzb24gPSBiYXNlLmV4dGVuZHMoJ3RhYmxlJywgeworICAgIGluaXQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ2NvbXBhcmlzb24n
OworICAgICAgICB0aGlzLmlubmVySFRNTCA9ICc8dGhlYWQ+PHRyPjx0aD5FeHBlY3RlZDwvdGg+
PHRoPkFjdHVhbDwvdGg+PHRoPkRpZmY8L3RoPjwvdHI+PC90aGVhZD4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnPHRib2R5Pjx0cj48dGQgY2xhc3M9ImV4cGVjdGVkIj48L3RkPjx0ZCBj
bGFzcz0iYWN0dWFsIj48L3RkPjx0ZCBjbGFzcz0iZGlmZiI+PC90ZD48L3RyPjwvdGJvZHk+JzsK
KyAgICB9LAorICAgIF9zZWxlY3RvckZvcktpbmQ6IGZ1bmN0aW9uKGtpbmQpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSByZXN1bHRzLmtFeHBlY3RlZEtpbmQ6
CisgICAgICAgICAgICByZXR1cm4gJy5leHBlY3RlZCc7CisgICAgICAgIGNhc2UgcmVzdWx0cy5r
QWN0dWFsS2luZDoKKyAgICAgICAgICAgIHJldHVybiAnLmFjdHVhbCc7CisgICAgICAgIGNhc2Ug
cmVzdWx0cy5rRGlmZktpbmQ6CisgICAgICAgICAgICByZXR1cm4gJy5kaWZmJzsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gJy51bmtub3duJzsKKyAgICB9LAorICAgIHVwZGF0ZTogZnVuY3Rp
b24oa2luZCwgcmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdG9yID0gdGhpcy5fc2Vs
ZWN0b3JGb3JLaW5kKGtpbmQpOworICAgICAgICAkKHNlbGVjdG9yLCB0aGlzKS5lbXB0eSgpLmFw
cGVuZChyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCit9KTsKKworLy8g
V2UnZCByZWFsbHkgbGlrZSBUZXh0UmVzdWx0IGFuZCBJbWFnZVJlc3VsdCB0byBleHRlbmQgYSBj
b21tb24gUmVzdWx0IGJhc2UKKy8vIGNsYXNzLCBidXQgd2UgY2FuJ3Qgc2VlbSB0byBkbyB0aGF0
IGJlY2F1c2UgdGhleSBpbmhlcml0IGZyb20gZGlmZmVyZW50CisvLyBIVE1MRWxlbWVudHMuIFdl
IGNvdWxkIGhhdmUgdGhlbSBpbmhlcml0IGZyb20gPGRpdj4sIGJ1dCB0aGF0IHNlZW1zIGxhbWUu
CisKK3VpLnJlc3VsdHMuVGV4dFJlc3VsdCA9IGJhc2UuZXh0ZW5kcygnaWZyYW1lJywgeworICAg
IGluaXQ6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Rl
eHQtcmVzdWx0JzsKKyAgICAgICAgdGhpcy5zcmMgPSB1cmw7CisgICAgfQorfSk7CisKK3VpLnJl
c3VsdHMuSW1hZ2VSZXN1bHQgPSBiYXNlLmV4dGVuZHMoJ2ltZycsIHsKKyAgICBpbml0OiBmdW5j
dGlvbih1cmwpCisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdpbWFnZS1yZXN1bHQn
OworICAgICAgICB0aGlzLnNyYyA9IHVybDsKKyAgICB9Cit9KTsKKworZnVuY3Rpb24gY29uc3Ry
dWN0b3JGb3JSZXN1bHRUeXBlKHR5cGUpCit7CisgICAgcmV0dXJuICh0eXBlID09IHJlc3VsdHMu
a0ltYWdlVHlwZSkgPyB1aS5yZXN1bHRzLkltYWdlUmVzdWx0IDogdWkucmVzdWx0cy5UZXh0UmVz
dWx0OworfQorCit1aS5yZXN1bHRzLlJlc3VsdHNHcmlkID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7
CisgICAgaW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAn
cmVzdWx0cy1ncmlkJzsKKyAgICB9LAorICAgIF9hZGRSZXN1bHQ6IGZ1bmN0aW9uKGNvbXBhcmlz
b24sIGNvbnN0cnVjdG9yLCByZXN1bHRzVVJMc0J5S2luZCwga2luZCkKKyAgICB7CisgICAgICAg
IHZhciB1cmwgPSByZXN1bHRzVVJMc0J5S2luZFtraW5kXTsKKyAgICAgICAgaWYgKCF1cmwpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbXBhcmlzb24udXBkYXRlKGtpbmQsIG5ldyBj
b25zdHJ1Y3Rvcih1cmwpKTsKKyAgICB9LAorICAgIGFkZENvbXBhcmlzb246IGZ1bmN0aW9uKHJl
c3VsdFR5cGUsIHJlc3VsdHNVUkxzQnlLaW5kKQorICAgIHsKKyAgICAgICAgdmFyIGNvbXBhcmlz
b24gPSBuZXcgdWkucmVzdWx0cy5Db21wYXJpc29uKCk7CisgICAgICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IGNvbnN0cnVjdG9yRm9yUmVzdWx0VHlwZShyZXN1bHRUeXBlKTsKKworICAgICAgICB0aGlz
Ll9hZGRSZXN1bHQoY29tcGFyaXNvbiwgY29uc3RydWN0b3IsIHJlc3VsdHNVUkxzQnlLaW5kLCBy
ZXN1bHRzLmtFeHBlY3RlZEtpbmQpOworICAgICAgICB0aGlzLl9hZGRSZXN1bHQoY29tcGFyaXNv
biwgY29uc3RydWN0b3IsIHJlc3VsdHNVUkxzQnlLaW5kLCByZXN1bHRzLmtBY3R1YWxLaW5kKTsK
KyAgICAgICAgdGhpcy5fYWRkUmVzdWx0KGNvbXBhcmlzb24sIGNvbnN0cnVjdG9yLCByZXN1bHRz
VVJMc0J5S2luZCwgcmVzdWx0cy5rRGlmZktpbmQpOworCisgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQoY29tcGFyaXNvbik7CisgICAgICAgIHJldHVybiBjb21wYXJpc29uOworICAgIH0sCisgICAg
YWRkUm93OiBmdW5jdGlvbihyZXN1bHRUeXBlLCB1cmwpCisgICAgeworICAgICAgICB2YXIgY29u
c3RydWN0b3IgPSBjb25zdHJ1Y3RvckZvclJlc3VsdFR5cGUocmVzdWx0VHlwZSk7CisgICAgICAg
IHZhciB2aWV3ID0gbmV3IGNvbnN0cnVjdG9yKHVybCk7CisgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQodmlldyk7CisgICAgICAgIHJldHVybiB2aWV3OworICAgIH0sCisgICAgYWRkUmVzdWx0czog
ZnVuY3Rpb24ocmVzdWx0c1VSTHMpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0c1VSTHNCeVR5
cGVBbmRLaW5kID0ge307CisKKyAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jlc3Vs
dHMua0ltYWdlVHlwZV0gPSB7fTsKKyAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jl
c3VsdHMua1RleHRUeXBlXSA9IHt9OworCisgICAgICAgIHJlc3VsdHNVUkxzLmZvckVhY2goZnVu
Y3Rpb24odXJsKSB7CisgICAgICAgICAgICByZXN1bHRzVVJMc0J5VHlwZUFuZEtpbmRbcmVzdWx0
cy5yZXN1bHRUeXBlKHVybCldW3Jlc3VsdHMucmVzdWx0S2luZCh1cmwpXSA9IHVybDsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgJC5lYWNoKHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZCwgZnVuY3Rp
b24ocmVzdWx0VHlwZSwgcmVzdWx0c1VSTHNCeUtpbmQpIHsKKyAgICAgICAgICAgIGlmICgkLmlz
RW1wdHlPYmplY3QocmVzdWx0c1VSTHNCeUtpbmQpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGlmIChyZXN1bHRzLmtVbmtub3duS2luZCBpbiByZXN1bHRzVVJMc0J5S2lu
ZCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc29tZXRoaW5nIGxpa2UgImNyYXNoIiB0
aGF0IGlzbid0IGEgY29tcGFyaXNvbi4KKyAgICAgICAgICAgICAgICB0aGlzLmFkZFJvdyhyZXN1
bHRUeXBlLCByZXN1bHRzVVJMc0J5S2luZFtyZXN1bHRzLmtVbmtub3duS2luZF0pOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuYWRkQ29t
cGFyaXNvbihyZXN1bHRUeXBlLCByZXN1bHRzVVJMc0J5S2luZCk7CisgICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgfQorfSk7CisKK3VpLnJlc3VsdHMuUmVzdWx0c0RldGFpbHMgPSBiYXNlLmV4
dGVuZHMoJ2RpdicsIHsKKyAgICBpbml0OiBmdW5jdGlvbihkZWxlZ2F0ZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtZGV0YWlsJzsKKyAgICAgICAgdGhpcy5fZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9LAorICAgIHNob3c6IGZ1bmN0aW9uKGZhaWx1cmVJbmZv
KSB7CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLmZldGNoUmVzdWx0c1VSTHMoZmFpbHVyZUluZm8s
IGZ1bmN0aW9uKHJlc3VsdHNVUkxzKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0c0dyaWQgPSBu
ZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpOworICAgICAgICAgICAgcmVzdWx0c0dyaWQuYWRk
UmVzdWx0cyhyZXN1bHRzVVJMcyk7CisgICAgICAgICAgICAkKHRoaXMpLmVtcHR5KCkuYXBwZW5k
KHJlc3VsdHNHcmlkKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9LAorfSk7CisKK3Vp
LnJlc3VsdHMuVGVzdFNlbGVjdG9yID0gYmFzZS5leHRlbmRzKCdpbnB1dCcsIHsKKyAgICBpbml0
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICd0ZXN0LXNlbGVj
dG9yJzsKKyAgICAgICAgdGhpcy50eXBlID0gJ3RleHQnOworICAgICAgICB0aGlzLnBsYWNlaG9s
ZGVyID0gJ1Rlc3QgbmFtZSc7CisgICAgfSwKKyAgICBzZXRUZXN0TGlzdDogZnVuY3Rpb24odGVz
dE5hbWVMaXN0KQorICAgIHsKKyAgICAgICAgJCh0aGlzKS5hdXRvY29tcGxldGUoeworICAgICAg
ICAgICAgc291cmNlOiB0ZXN0TmFtZUxpc3QsCisgICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9u
KGV2ZW50LCBzZWxlY3RlZCkgeworICAgICAgICAgICAgICAgICQodGhpcykudHJpZ2dlcigndGVz
dHNlbGVjdGVkJywgW3NlbGVjdGVkLml0ZW0udmFsdWVdKTsKKyAgICAgICAgICAgIH0uYmluZCh0
aGlzKQorICAgICAgICB9KTsKKyAgICB9Cit9KTsKKwordWkucmVzdWx0cy5CdWlsZGVyU2VsZWN0
b3IgPSBiYXNlLmV4dGVuZHMoJ3NlbGVjdCcsIHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdidWlsZGVyLXNlbGVjdG9yJzsKKyAgICAgICAg
JCh0aGlzKS5oaWRlKCk7CisgICAgICAgICQodGhpcykuY2hhbmdlKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKCdidWlsZGVyc2VsZWN0ZWQnKTsKKyAgICAgICAgfS5i
aW5kKHRoaXMpKTsKKyAgICB9LAorICAgIHNob3c6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lTGlzdCkg
eworICAgICAgICAkKHRoaXMpLmVtcHR5KCk7CisgICAgICAgICQodGhpcykuc2hvdygpOworICAg
ICAgICBidWlsZGVyTmFtZUxpc3QuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAg
ICAgICAgICAgdmFyIGJ1aWxkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0
aW9uJyk7CisgICAgICAgICAgICBidWlsZGVyRWxlbWVudC50ZXh0Q29udGVudCA9IHVpLmRpc3Bs
YXlOYW1lRm9yQnVpbGRlcihidWlsZGVyTmFtZSk7CisgICAgICAgICAgICBidWlsZGVyRWxlbWVu
dC52YWx1ZSA9IGJ1aWxkZXJOYW1lOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChidWls
ZGVyRWxlbWVudCk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfSwKKyAgICBzZWxlY3Q6
IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7CisgICAgICAgIHZhciBidWlsZGVySW5kZXggPSAtMTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNbaV0udmFsdWUgPT0gYnVpbGRlck5hbWUpIHsK
KyAgICAgICAgICAgICAgICBidWlsZGVySW5kZXggPSBpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChidWlsZGVySW5kZXggPT0g
LTEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGJ1
aWxkZXJJbmRleDsKKyAgICB9LAorICAgIHNlbGVjdGVkQnVpbGRlcjogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT0gLTEpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsK
KyAgICB9Cit9KTsKKwordWkucmVzdWx0cy5BY3Rpb25zID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7
CisgICAgaW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAn
YWN0aW9ucyc7CisgICAgICAgIHRoaXMuaW5uZXJIVE1MID0gJzxidXR0b24gY2xhc3M9InJlYmFz
ZWxpbmUgZGVmYXVsdCI+UmViYXNlbGluZTwvYnV0dG9uPicgKworICAgICAgICAgICAgICAgICAg
ICAgICAgICc8YnV0dG9uIGNsYXNzPSJwcmV2aW91cyI+JiM5NjY0OzwvYnV0dG9uPicgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJuZXh0Ij4mIzk2NTQ7PC9idXR0
b24+JzsKKyAgICAgICAgdGhpcy5fcm91dGVDbGlja0V2ZW50KCcucmViYXNlbGluZScsICdyZWJh
c2VsaW5lJyk7CisgICAgICAgIHRoaXMuX3JvdXRlQ2xpY2tFdmVudCgnLnByZXZpb3VzJywgJ3By
ZXZpb3VzJyk7CisgICAgICAgIHRoaXMuX3JvdXRlQ2xpY2tFdmVudCgnLm5leHQnLCAnbmV4dCcp
OworICAgIH0sCisgICAgX3JvdXRlQ2xpY2tFdmVudDogZnVuY3Rpb24oc2VsZWN0b3IsIGV2ZW50
TmFtZSkgeworICAgICAgICAkKHNlbGVjdG9yLCB0aGlzKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKGV2ZW50TmFtZSk7CisgICAgICAgIH0u
YmluZCh0aGlzKSk7CisgICAgfQorfSk7CisKK3VpLnJlc3VsdHMuVmlldyA9IGJhc2UuZXh0ZW5k
cygnZGl2JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAg
dGhpcy5jbGFzc05hbWUgPSAncmVzdWx0cy12aWV3JzsKKyAgICAgICAgdGhpcy5pbm5lckhUTUwg
PSAnPGRpdiBjbGFzcz0idG9vbGJhciI+PGRpdiBjbGFzcz0ic2VsZWN0b3IiPjwvZGl2PjwvZGl2
PjxkaXYgY2xhc3M9ImNvbnRlbnQiPjwvZGl2Pic7CisKKyAgICAgICAgdGhpcy5fdGVzdFNlbGVj
dG9yID0gbmV3IHVpLnJlc3VsdHMuVGVzdFNlbGVjdG9yKCk7CisgICAgICAgIHRoaXMuX2J1aWxk
ZXJTZWxlY3RvciA9IG5ldyB1aS5yZXN1bHRzLkJ1aWxkZXJTZWxlY3RvcigpOworICAgICAgICB0
aGlzLl9yZXN1bHRzRGV0YWlscyA9IG5ldyB1aS5yZXN1bHRzLlJlc3VsdHNEZXRhaWxzKGRlbGVn
YXRlKTsKKworICAgICAgICAkKCcudG9vbGJhcicsIHRoaXMpLnByZXBlbmQobmV3IHVpLnJlc3Vs
dHMuQWN0aW9ucygpKQorICAgICAgICAkKCcuc2VsZWN0b3InLCB0aGlzKS5hcHBlbmQodGhpcy5f
dGVzdFNlbGVjdG9yKS5hcHBlbmQodGhpcy5fYnVpbGRlclNlbGVjdG9yKTsKKyAgICAgICAgJCgn
LmNvbnRlbnQnLCB0aGlzKS5hcHBlbmQodGhpcy5fcmVzdWx0c0RldGFpbHMpOworICAgIH0sCisg
ICAgc2V0VGVzdExpc3Q6IGZ1bmN0aW9uKHRlc3ROYW1lTGlzdCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3Rlc3RTZWxlY3Rvci5zZXRUZXN0TGlzdCh0ZXN0TmFtZUxpc3QpOworICAgIH0sCisgICAg
Y3VycmVudFRlc3ROYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
dGVzdFNlbGVjdG9yLnZhbHVlOworICAgIH0sCisgICAgY3VycmVudEJ1aWxkZXJOYW1lOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRlclNlbGVjdG9yLnNlbGVj
dGVkQnVpbGRlcigpOworICAgIH0sCisgICAgc2V0QnVpbGRlckxpc3Q6IGZ1bmN0aW9uKGJ1aWxk
TmFtZUxpc3QpCisgICAgeworICAgICAgICB0aGlzLl9idWlsZGVyU2VsZWN0b3Iuc2hvdyhidWls
ZE5hbWVMaXN0KTsKKyAgICB9LAorICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbihmYWlsdXJlSW5m
bykKKyAgICB7CisgICAgICAgIHRoaXMuX3Rlc3RTZWxlY3Rvci52YWx1ZSA9IGZhaWx1cmVJbmZv
LnRlc3ROYW1lOworICAgICAgICB0aGlzLl9idWlsZGVyU2VsZWN0b3Iuc2VsZWN0KGZhaWx1cmVJ
bmZvLmJ1aWxkZXJOYW1lKTsKKyAgICAgICAgdGhpcy5fcmVzdWx0c0RldGFpbHMuc2hvdyhmYWls
dXJlSW5mbyk7CisgICAgfQorfSk7CisKK30pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCShmcm9t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qczo5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uICgpIHsKKworbW9kdWxl
KCJpdS5yZXN1bHRzIik7CisKK3ZhciBrRXhhbXBsZVJlc3VsdHNCeVRlc3QgPSB7CisgICAgInNj
cm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCI6IHsK
KyAgICAgICAgIk1vY2sgQnVpbGRlciI6IHsKKyAgICAgICAgICAgICJleHBlY3RlZCI6ICJJTUFH
RSIsCisgICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgorICAgICAgICB9LAorICAgICAgICAi
TW9jayBMaW51eCI6IHsKKyAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKKyAgICAgICAg
ICAgICJhY3R1YWwiOiAiQ1JBU0giCisgICAgICAgIH0KKyAgICB9LAorICAgICJ1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKKyAgICAgICAgIk1vY2sgQnVpbGRlciI6IHsKKyAgICAg
ICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIK
KyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgiVmlldyIsIDYsIGZ1bmN0aW9uKCkgeworICAg
IHZhciByZXN1bHRzVmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoeworICAgICAgICBmZXRjaFJl
c3VsdHNVUkxzOiAkLm5vb3AKKyAgICB9KTsKKyAgICB2YXIgY29udHJvbGxlciA9IG5ldyBjb250
b2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3VsdHNWaWV3LCBrRXhhbXBsZVJlc3VsdHNCeVRlc3Qp
OworICAgIGNvbnRyb2xsZXIuc2hvd1Rlc3QoInNjcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13
aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCIpOworICAgIGVxdWFsKHJlc3VsdHNWaWV3LmN1cnJl
bnRUZXN0TmFtZSgpLCAic2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0
ZS1zdHlsZS5odG1sIik7CisgICAgZXF1YWwocmVzdWx0c1ZpZXcuY3VycmVudEJ1aWxkZXJOYW1l
KCksICJNb2NrIEJ1aWxkZXIiKTsKKyAgICByZXN1bHRzVmlldy5zaG93UmVzdWx0cyh7CisgICAg
ICAgICJ0ZXN0TmFtZSI6ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsCisgICAgICAg
ICJidWlsZGVyTmFtZSI6ICJNb2NrIEJ1aWxkZXIiLAorICAgIH0pOworICAgIGVxdWFsKHJlc3Vs
dHNWaWV3LmN1cnJlbnRUZXN0TmFtZSgpLCAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
KTsKKyAgICBlcXVhbChyZXN1bHRzVmlldy5jdXJyZW50QnVpbGRlck5hbWUoKSwgIk1vY2sgQnVp
bGRlciIpOworICAgIHJlc3VsdHNWaWV3LnNob3dSZXN1bHRzKHsKKyAgICAgICAgInRlc3ROYW1l
IjogInNjcm9sbGJhcnMvY3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRt
bCIsCisgICAgICAgICJidWlsZGVyTmFtZSI6ICJNb2NrIExpbnV4IiwKKyAgICB9KTsKKyAgICBl
cXVhbChyZXN1bHRzVmlldy5jdXJyZW50VGVzdE5hbWUoKSwgInNjcm9sbGJhcnMvY3VzdG9tLXNj
cm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCIpOworICAgIGVxdWFsKHJlc3VsdHNW
aWV3LmN1cnJlbnRCdWlsZGVyTmFtZSgpLCAiTW9jayBMaW51eCIpOworfSkKKworfSkoKTsKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvVGVzdEZhaWx1cmVzLmNzcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL1Rlc3RGYWlsdXJlcy5jc3MJKHJldmlzaW9uIDkzMjU0
KQkoZnJvbSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVGVzdEZhaWx1cmVzLmNzczo5MzI1NCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zdHlsZXMvVGVzdEZhaWx1cmVzLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2FzaWRlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgdG9wOiAzcHg7CisgICAgcmlnaHQ6IDVweDsKKyAgICBjb2xvcjogIzg4ODsKKyAgICBm
b250LXNpemU6IDAuOWVtOworfQorCitjb2RlIHsKKyAgICBmb250LXNpemU6IDAuOWVtOworfQor
CitvbCB7CisgICAgbGlzdC1zdHlsZS10eXBlOiBub25lOworfQorCitkdCB7CisgICAgZmxvYXQ6
IGxlZnQ7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cit9
CisKK2R0OjphZnRlciB7CisgICAgY29udGVudDogJzonOworfQorCisjZmFpbHVyZS1oaXN0b3J5
LCAjcG9zc2libHktZmxha3ktdGVzdHMgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAw
IDAgMCAxNXB4OworfQorCisjZmFpbHVyZS1oaXN0b3J5ID4gbGkgeworICAgIG1hcmdpbi1ib3R0
b206IDEwcHg7CisgICAgcGFkZGluZzogMTBweDsKK30KKworI3Bvc3NpYmx5LWZsYWt5LXRlc3Rz
ID4gbGkgeworICAgIHBhZGRpbmc6IDFweCAwcHg7Cit9CisKKyNmYWlsdXJlLWhpc3RvcnkgPiBs
aSwgI3Bvc3NpYmx5LWZsYWt5LXRlc3RzID4gbGkgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNm
MGYwZjA7CisgICAgcGFkZGluZy1sZWZ0OiA1MHB4OworfQorCisjcG9zc2libHktZmxha3ktdGVz
dHMgPiBsaSA+IDpmaXJzdC1jaGlsZCB7CisgICAgbWFyZ2luLWxlZnQ6IC01MHB4OworfQorCisu
Zmxha2luZXNzLWV4YW1wbGVzLWxpc3QgeworICAgIHBhZGRpbmc6IDA7Cit9CisKKy50ZXN0LWxp
c3QgeworICAgIG1hcmdpbjogMCAwIDAgLTQwcHg7CisgICAgcGFkZGluZzogMDsKK30KKworLmlu
Zm8geworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLmV4aXN0aW5nLWFuZC1uZXctYnVn
cyB7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKworLmV4aXN0aW5nLWJ1Z3MtbGlzdCwgLnN1
c3BlY3QtcmV2aXNpb25zLWxpc3QsIC5mbGFraW5lc3MtZXhhbXBsZXMtbGlzdCB7CisgICAgZm9u
dC1zaXplOiBzbWFsbGVyOworfQorCisubmV3LWJ1Zy1mb3JtIHsKKyAgICBkaXNwbGF5OiBub25l
OworfQorCisuZGlzY2xvc3VyZS10cmlhbmdsZSB7CisgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAt
d2Via2l0LXRyYW5zZm9ybSAwLjFzOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cisg
ICAgY3Vyc29yOiBkZWZhdWx0OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBwYWRk
aW5nOiAwcHggM3B4OworfQorCisuZXhwYW5kZWQgPiAuZGlzY2xvc3VyZS10cmlhbmdsZSB7Cisg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVooOTBkZWcpOworfQorCisuZXhwYW5kYWJsZSB7
CisgICAgaGVpZ2h0OiAwcHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworLmV4cGFuZGVk
ID4gLmV4cGFuZGFibGUgeworICAgIGhlaWdodDogYXV0bzsKK30KSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zdHlsZXMvbWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxl
cy9tYWluLmNzcwkocmV2aXNpb24gOTMyNTQpCShmcm9tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmNz
czo5MzI1NCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvbWFpbi5jc3MJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworYm9keSB7CisgICAgZm9udC1mYW1p
bHk6IFRhaG9tYSwgc2Fucy1zZXJpZjsKKyAgICBmb250LXNpemU6IDExcHg7CisgICAgbWFyZ2lu
OiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKK2EgeworICAgIGNvbG9yOiBCbGFjazsKK30KKwor
dGFibGUgeworICAgIHRhYmxlLWxheW91dDogZml4ZWQ7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKK30KKwordGQsIHRoIHsKKyAgICBvdmVyZmxvdzog
aGlkZGVuOworICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CisgICAgLyogYm9yZGVyLXJpZ2h0OiAx
cHggc29saWQgI2M2YzZjNjsgKi8KK30KKwordGQ6bGFzdC1vZi10eXBlLCB0aDpsYXN0LW9mLXR5
cGUgeworICAgIC8qIGJvcmRlci1yaWdodDogMHB4OyAqLworfQorCit0aCB7CisgICAgLyogYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjNmM2YzY7ICovCit9CisKK2J1dHRvbiB7CisgICAgYm9y
ZGVyLXJhZGl1czogMnB4OworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdy
YWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEo
MCwgMCwgMCwgMC4xKTsKKyAgICBib3JkZXItcmFkaXVzOiAycHg7CisgICAgY29sb3I6ICM2NjY7
CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBmb250LXdl
aWdodDogYm9sZDsKKyAgICBoZWlnaHQ6IDI5cHg7CisgICAgbGluZS1oZWlnaHQ6IDI3cHg7Cisg
ICAgbWFyZ2luOiAxMXB4IDZweDsKKyAgICBtaW4td2lkdGg6IDU0cHg7CisgICAgcGFkZGluZzog
MCA4cHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyCit9CisKK2J1dHRvbi5uZXh0IHsKKyAgICBt
YXJnaW4tbGVmdDogMHB4OworfQorCitidXR0b24ucHJldmlvdXMgeworICAgIG1hcmdpbi1yaWdo
dDogMHB4OworfQorCitidXR0b25bZGlzYWJsZWRdIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47
Cit9CisKK2J1dHRvbjpob3ZlciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5l
YXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93
OiAwIDFweCAxcHggcmdiYSgwLDAsMCwwLjEpOworICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4
Zjg7CisgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNm
MWYxZjEpOworICAgIGJvcmRlcjogMXB4IHNvbGlkICNjNmM2YzY7CisgICAgYm94LXNoYWRvdzog
MCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKKyAgICBjb2xvcjogIzMzMworfQorCitidXR0b246
Zm9jdXMgeworICAgIGJvcmRlcjogMXB4IHNvbGlkICM0ZDkwZmU7CisgICAgb3V0bGluZTogbm9u
ZQorfQorCitidXR0b24uZGVmYXVsdCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzMwNzlFRDsK
KyAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXIt
Z3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCk7Cit9CisKK2J1dHRvbi5kZWZhdWx0OmhvdmVy
IHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjMmY1YmI3OworICAgIGNvbG9yOiB3aGl0ZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzU3YWU4OworICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJr
aXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGZyb20oIzRkOTBmZSksdG8o
IzM1N2FlOCkpOworfQorCisuY2xlYXIgeworICAgIGNsZWFyOiBib3RoOworfQorCisvKioqIGJ1
dHRlcmJhciAqKiovCisKKy5idXR0ZXJiYXIgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1
ZjU7CisgICAgcGFkZGluZzogNXB4OworICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICB0b3A6IDBw
eDsKKyAgICByaWdodDogMHB4OworfQorCisuYnV0dGVyYmFyIC5oaWRlIHsKKyAgICBtYXJnaW4t
bGVmdDogMjBweDsKK30KKworLyoqKiBpbmZvYmFyICoqKi8KKworLmluZm9iYXIgeworICAgIGRp
c3BsYXk6IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogQ29ybnNpbGs7CisgICAgYm9yZGVy
OiA1cHggc29saWQgVG9tYXRvOworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgbWFyZ2luOiA1cHgg
YXV0bzsKKyAgICBmb250LXNpemU6IDE1cHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgdGV4dC1h
bGlnbjogY2VudGVyOworfQorCisuaW5mb2JhciAuc3RhdHVzIGEgeworICAgIGZvbnQtd2VpZ2h0
OiBub3JtYWw7Cit9CisKKy5pbmZvYmFyIC5zdGF0dXMgdWwgeworICAgIG1hcmdpbjogMDsKKyAg
ICBwYWRkaW5nOiAwOworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7Cit9CisKKy5pbmZvYmFyIC5zdGF0dXMg
bGkgeworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBtYXJnaW46IDBweCA1cHg7Cit9
CisKKy8qKiogcmVjZW50LWhpc3RvcnkgKioqLworCisucmVjZW50LWhpc3RvcnkgeworfQorCisu
cmVjZW50LWhpc3RvcnkgLmJ1aWxkZXIgeworICAgIHdpZHRoOiA1cHg7CisgICAgYm9yZGVyLXJp
Z2h0OiAxcHggc29saWQgI2Y1ZjVmNTsKK30KKworLnJlY2VudC1oaXN0b3J5IC5idWlsdCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzZjNjsKK30KKworLnJlY2VudC1oaXN0b3J5IHRkW2Rh
dGEtZmFpbHVyZS10eXBlc10geworICAgIGJhY2tncm91bmQtY29sb3I6IEJsYWNrOworfQorCisu
Y2hhbmdlbG9nIC5yZXN1bHQgeworICAgIHBhZGRpbmc6IDRweCAwcHg7CisgICAgYm9yZGVyLXRv
cDogMnB4IHNvbGlkIHdoaXRlOworICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB3aGl0ZTsK
K30KKworLmNoYW5nZWxvZyAudGVzdCB7CisgICAgcGFkZGluZy1sZWZ0OiAzcHg7Cit9CisKKy5j
aGFuZ2Vsb2cgLmVudHJ5IHsKKyAgICBwYWRkaW5nOiA0cHggMHB4IDRweCAzcHg7Cit9CisKKy5j
aGFuZ2Vsb2cgLnJldmVydGVkIHsKKyAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsK
K30KKworLmNoYW5nZWxvZyAucG9zc2libGUtcmVncmVzc2lvbiB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogUGFwYXlhV2hpcDsKK30KKworLmNoYW5nZWxvZyAuZGV0YWlscywgLmNoYW5nZWxvZyAu
ZGV0YWlscyBhIHsKKyAgICBjb2xvcjogIzU1NTsKK30KKworLmNoYW5nZWxvZyAuc3VtbWFyeSB7
CisgICAgY29sb3I6IEJsYWNrOworfQorCisuY2hhbmdlbG9nIC5hdXRob3IgeworICAgIGZvbnQt
c3R5bGU6IGl0YWxpYzsKK30KKworLnRlc3QtbmFtZS5JTUFHRVwrVEVYVDo6YWZ0ZXIgeworICAg
IGNvbnRlbnQ6ICdJTUFHRStURVhUJzsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworICAgIHRl
eHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogSW5kaWdvOworICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICBwYWRkaW5nOiAxcHggMnB4
OworICAgIG1hcmdpbjogMCAwIDAgM3B4OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKK30KKwor
LnRlc3QtbmFtZS5JTUFHRTo6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICdJTUFHRSc7CisgICAgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY29sb3I6
IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IE1pZG5pZ2h0Qmx1ZTsKKyAgICBmb250LXNp
emU6IDEwcHg7CisgICAgcGFkZGluZzogMXB4IDJweDsKKyAgICBtYXJnaW46IDAgMCAwIDNweDsK
KyAgICBib3JkZXItcmFkaXVzOiA0cHg7Cit9CisKKy50ZXN0LW5hbWUuVElNRU9VVDo6YWZ0ZXIg
eworICAgIGNvbnRlbnQ6ICdUSU1FT1VUJzsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogRGFya0dvbGRlblJvZDsKKyAgICBmb250LXNpemU6IDEwcHg7CisgICAgcGFkZGlu
ZzogMXB4IDJweDsKKyAgICBtYXJnaW46IDAgMCAwIDNweDsKKyAgICBib3JkZXItcmFkaXVzOiA0
cHg7Cit9CisKKy50ZXN0LW5hbWUuVEVYVDo6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICdURVhUJzsK
KyAgICBmb250LXdlaWdodDogbm9ybWFsOworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAg
ICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogRG9kZ2VyQmx1ZTsKKyAgICBm
b250LXNpemU6IDEwcHg7CisgICAgcGFkZGluZzogMXB4IDJweDsKKyAgICBtYXJnaW46IDAgMCAw
IDNweDsKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7Cit9CisKKy50ZXN0LW5hbWUuQ1JBU0g6OmFm
dGVyIHsKKyAgICBjb250ZW50OiAnQ1JBU0gnOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cisg
ICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBUb21hdG87CisgICAgZm9udC1zaXplOiAxMHB4OworICAgIHBhZGRpbmc6IDFw
eCAycHg7CisgICAgbWFyZ2luOiAwIDAgMCAzcHg7CisgICAgYm9yZGVyLXJhZGl1czogNHB4Owor
fQorCisvKioqIHJlc3VsdHMtdmlldyAqKiovCisKKy8qIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNl
IGdhcmRlbi1vLW1hdGljIHN3aXRjaGVzIHRvIHRoZSBuZXcgcmVzdWx0cyB2aWV3LiAqLworLm9s
ZC1yZXN1bHRzLXZpZXcgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGZpeGVk
OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAgIHRvcDogMjUlOworICAgIGJv
dHRvbTogMHB4OworfQorCisucmVzdWx0cy12aWV3IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
ZjVmNWY1OworfQorCisucmVzdWx0cy12aWV3IC50b29sYmFyIHsKKyAgICBib3JkZXItdG9wOiAx
cHggc29saWQgI2M2YzZjNjsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2M2YzZjNjsK
K30KKworLnJlc3VsdHMtdmlldyAudG9vbGJhciAuc2VsZWN0b3IgeworICAgIGZvbnQtc2l6ZTog
MTFweDsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICBoZWlnaHQ6IDI5cHg7CisgICAgbGlu
ZS1oZWlnaHQ6IDI3cHg7CisgICAgbWFyZ2luOiAxMXB4IDZweDsKKyAgICBwYWRkaW5nOiAwIDhw
eDsKK30KKworLnJlc3VsdHMtdmlldyAudGVzdC1zZWxlY3RvciB7CisgICAgd2lkdGg6IDQwMHB4
OworICAgIG1hcmdpbi1yaWdodDogNnB4OworfQorCisucmVzdWx0cy12aWV3IC50b29sYmFyIC5h
Y3Rpb25zIHsKKyAgICBmbG9hdDogcmlnaHQ7Cit9CisKKy5yZXN1bHRzLWRldGFpbCB0ZCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cit9CisKKy50ZXh0LXJlc3VsdCB7CisgICAgYm9y
ZGVyOiBub25lOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogNDAwcHg7IC8qIEZJWE1F
OiBIb3cgZG8gd2UgZ2V0IGEgcmVhc29uYWJsZSBoZWlnaHQgaGVyZT8gKi8KK30KKworLmltYWdl
LXJlc3VsdCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiBhdXRvOworfQorCisvKioq
IHBhcnR5dGltZSAqKiovCisKKy5wYXJ0eXRpbWUgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
dGV4dC1hbGlnbjogY2VudGVyOworfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMuanMJKHJldmlzaW9u
IDkzMjU0KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3VpL3Jlc3VsdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkgfHwge307Ci11aS5y
ZXN1bHRzID0gdWkucmVzdWx0cyB8fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLS8vIEZJWE1FOiBS
YXRoZXIgdGhhbiB1c2luZyB0YWJsZSwgc2hvdWxkIHdlIGJlIHVzaW5nIHNvbWV0aGluZyBmYW5j
aWVyPwotdWkucmVzdWx0cy5Db21wYXJpc29uID0gYmFzZS5leHRlbmRzKCd0YWJsZScsIHsKLSAg
ICBpbml0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdjb21w
YXJpc29uJzsKLSAgICAgICAgdGhpcy5pbm5lckhUTUwgPSAnPHRoZWFkPjx0cj48dGg+RXhwZWN0
ZWQ8L3RoPjx0aD5BY3R1YWw8L3RoPjx0aD5EaWZmPC90aD48L3RyPjwvdGhlYWQ+JyArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJzx0Ym9keT48dHI+PHRkIGNsYXNzPSJleHBlY3RlZCI+PC90
ZD48dGQgY2xhc3M9ImFjdHVhbCI+PC90ZD48dGQgY2xhc3M9ImRpZmYiPjwvdGQ+PC90cj48L3Ri
b2R5Pic7Ci0gICAgfSwKLSAgICBfc2VsZWN0b3JGb3JLaW5kOiBmdW5jdGlvbihraW5kKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgcmVzdWx0cy5rRXhwZWN0
ZWRLaW5kOgotICAgICAgICAgICAgcmV0dXJuICcuZXhwZWN0ZWQnOwotICAgICAgICBjYXNlIHJl
c3VsdHMua0FjdHVhbEtpbmQ6Ci0gICAgICAgICAgICByZXR1cm4gJy5hY3R1YWwnOwotICAgICAg
ICBjYXNlIHJlc3VsdHMua0RpZmZLaW5kOgotICAgICAgICAgICAgcmV0dXJuICcuZGlmZic7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuICcudW5rbm93bic7Ci0gICAgfSwKLSAgICB1cGRhdGU6
IGZ1bmN0aW9uKGtpbmQsIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3RvciA9IHRo
aXMuX3NlbGVjdG9yRm9yS2luZChraW5kKTsKLSAgICAgICAgJChzZWxlY3RvciwgdGhpcykuZW1w
dHkoKS5hcHBlbmQocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotfSk7
Ci0KLS8vIFdlJ2QgcmVhbGx5IGxpa2UgVGV4dFJlc3VsdCBhbmQgSW1hZ2VSZXN1bHQgdG8gZXh0
ZW5kIGEgY29tbW9uIFJlc3VsdCBiYXNlCi0vLyBjbGFzcywgYnV0IHdlIGNhbid0IHNlZW0gdG8g
ZG8gdGhhdCBiZWNhdXNlIHRoZXkgaW5oZXJpdCBmcm9tIGRpZmZlcmVudAotLy8gSFRNTEVsZW1l
bnRzLiBXZSBjb3VsZCBoYXZlIHRoZW0gaW5oZXJpdCBmcm9tIDxkaXY+LCBidXQgdGhhdCBzZWVt
cyBsYW1lLgotCi11aS5yZXN1bHRzLlRleHRSZXN1bHQgPSBiYXNlLmV4dGVuZHMoJ2lmcmFtZScs
IHsKLSAgICBpbml0OiBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFt
ZSA9ICd0ZXh0LXJlc3VsdCc7Ci0gICAgICAgIHRoaXMuc3JjID0gdXJsOwotICAgIH0KLX0pOwot
Ci11aS5yZXN1bHRzLkltYWdlUmVzdWx0ID0gYmFzZS5leHRlbmRzKCdpbWcnLCB7Ci0gICAgaW5p
dDogZnVuY3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnaW1hZ2Ut
cmVzdWx0JzsKLSAgICAgICAgdGhpcy5zcmMgPSB1cmw7Ci0gICAgfQotfSk7Ci0KLWZ1bmN0aW9u
IGNvbnN0cnVjdG9yRm9yUmVzdWx0VHlwZSh0eXBlKQotewotICAgIHJldHVybiAodHlwZSA9PSBy
ZXN1bHRzLmtJbWFnZVR5cGUpID8gdWkucmVzdWx0cy5JbWFnZVJlc3VsdCA6IHVpLnJlc3VsdHMu
VGV4dFJlc3VsdDsKLX0KLQotdWkucmVzdWx0cy5SZXN1bHRzR3JpZCA9IGJhc2UuZXh0ZW5kcygn
ZGl2JywgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NO
YW1lID0gJ3Jlc3VsdHMtZ3JpZCc7Ci0gICAgfSwKLSAgICBfYWRkUmVzdWx0OiBmdW5jdGlvbihj
b21wYXJpc29uLCBjb25zdHJ1Y3RvciwgcmVzdWx0c1VSTHNCeUtpbmQsIGtpbmQpCi0gICAgewot
ICAgICAgICB2YXIgdXJsID0gcmVzdWx0c1VSTHNCeUtpbmRba2luZF07Ci0gICAgICAgIGlmICgh
dXJsKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb21wYXJpc29uLnVwZGF0ZShraW5k
LCBuZXcgY29uc3RydWN0b3IodXJsKSk7Ci0gICAgfSwKLSAgICBhZGRDb21wYXJpc29uOiBmdW5j
dGlvbihyZXN1bHRUeXBlLCByZXN1bHRzVVJMc0J5S2luZCkKLSAgICB7Ci0gICAgICAgIHZhciBj
b21wYXJpc29uID0gbmV3IHVpLnJlc3VsdHMuQ29tcGFyaXNvbigpOwotICAgICAgICB2YXIgY29u
c3RydWN0b3IgPSBjb25zdHJ1Y3RvckZvclJlc3VsdFR5cGUocmVzdWx0VHlwZSk7Ci0KLSAgICAg
ICAgdGhpcy5fYWRkUmVzdWx0KGNvbXBhcmlzb24sIGNvbnN0cnVjdG9yLCByZXN1bHRzVVJMc0J5
S2luZCwgcmVzdWx0cy5rRXhwZWN0ZWRLaW5kKTsKLSAgICAgICAgdGhpcy5fYWRkUmVzdWx0KGNv
bXBhcmlzb24sIGNvbnN0cnVjdG9yLCByZXN1bHRzVVJMc0J5S2luZCwgcmVzdWx0cy5rQWN0dWFs
S2luZCk7Ci0gICAgICAgIHRoaXMuX2FkZFJlc3VsdChjb21wYXJpc29uLCBjb25zdHJ1Y3Rvciwg
cmVzdWx0c1VSTHNCeUtpbmQsIHJlc3VsdHMua0RpZmZLaW5kKTsKLQotICAgICAgICB0aGlzLmFw
cGVuZENoaWxkKGNvbXBhcmlzb24pOwotICAgICAgICByZXR1cm4gY29tcGFyaXNvbjsKLSAgICB9
LAotICAgIGFkZFJvdzogZnVuY3Rpb24ocmVzdWx0VHlwZSwgdXJsKQotICAgIHsKLSAgICAgICAg
dmFyIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JGb3JSZXN1bHRUeXBlKHJlc3VsdFR5cGUpOwot
ICAgICAgICB2YXIgdmlldyA9IG5ldyBjb25zdHJ1Y3Rvcih1cmwpOwotICAgICAgICB0aGlzLmFw
cGVuZENoaWxkKHZpZXcpOwotICAgICAgICByZXR1cm4gdmlldzsKLSAgICB9LAotICAgIGFkZFJl
c3VsdHM6IGZ1bmN0aW9uKHJlc3VsdHNVUkxzKQotICAgIHsKLSAgICAgICAgdmFyIHJlc3VsdHNV
UkxzQnlUeXBlQW5kS2luZCA9IHt9OwotCi0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2lu
ZFtyZXN1bHRzLmtJbWFnZVR5cGVdID0ge307Ci0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5k
S2luZFtyZXN1bHRzLmtUZXh0VHlwZV0gPSB7fTsKLQotICAgICAgICByZXN1bHRzVVJMcy5mb3JF
YWNoKGZ1bmN0aW9uKHVybCkgewotICAgICAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5k
W3Jlc3VsdHMucmVzdWx0VHlwZSh1cmwpXVtyZXN1bHRzLnJlc3VsdEtpbmQodXJsKV0gPSB1cmw7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgICQuZWFjaChyZXN1bHRzVVJMc0J5VHlwZUFuZEtpbmQs
IGZ1bmN0aW9uKHJlc3VsdFR5cGUsIHJlc3VsdHNVUkxzQnlLaW5kKSB7Ci0gICAgICAgICAgICBp
ZiAoJC5pc0VtcHR5T2JqZWN0KHJlc3VsdHNVUkxzQnlLaW5kKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBpZiAocmVzdWx0cy5rVW5rbm93bktpbmQgaW4gcmVzdWx0c1VS
THNCeUtpbmQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHNvbWV0aGluZyBsaWtlICJj
cmFzaCIgdGhhdCBpc24ndCBhIGNvbXBhcmlzb24uCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRS
b3cocmVzdWx0VHlwZSwgcmVzdWx0c1VSTHNCeUtpbmRbcmVzdWx0cy5rVW5rbm93bktpbmRdKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlz
LmFkZENvbXBhcmlzb24ocmVzdWx0VHlwZSwgcmVzdWx0c1VSTHNCeUtpbmQpOwotICAgICAgICB9
LmJpbmQodGhpcykpOwotICAgIH0KLX0pOwotCi11aS5yZXN1bHRzLlJlc3VsdHNEZXRhaWxzID0g
YmFzZS5leHRlbmRzKCdkaXYnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZGVsZWdhdGUpCi0gICAg
ewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdyZXN1bHRzLWRldGFpbCc7Ci0gICAgICAgIHRo
aXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgfSwKLSAgICBzaG93OiBmdW5jdGlvbihmYWls
dXJlSW5mbykgewotICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5mZXRjaFJlc3VsdHNVUkxzKGZhaWx1
cmVJbmZvLCBmdW5jdGlvbihyZXN1bHRzVVJMcykgewotICAgICAgICAgICAgdmFyIHJlc3VsdHNH
cmlkID0gbmV3IHVpLnJlc3VsdHMuUmVzdWx0c0dyaWQoKTsKLSAgICAgICAgICAgIHJlc3VsdHNH
cmlkLmFkZFJlc3VsdHMocmVzdWx0c1VSTHMpOwotICAgICAgICAgICAgJCh0aGlzKS5lbXB0eSgp
LmFwcGVuZChyZXN1bHRzR3JpZCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLX0p
OwotCi11aS5yZXN1bHRzLlRlc3RTZWxlY3RvciA9IGJhc2UuZXh0ZW5kcygnaW5wdXQnLCB7Ci0g
ICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAndGVz
dC1zZWxlY3Rvcic7Ci0gICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JzsKLSAgICAgICAgdGhpcy5w
bGFjZWhvbGRlciA9ICdUZXN0IG5hbWUnOwotICAgIH0sCi0gICAgc2V0VGVzdExpc3Q6IGZ1bmN0
aW9uKHRlc3ROYW1lTGlzdCkKLSAgICB7Ci0gICAgICAgICQodGhpcykuYXV0b2NvbXBsZXRlKHsK
LSAgICAgICAgICAgIHNvdXJjZTogdGVzdE5hbWVMaXN0LAotICAgICAgICAgICAgc2VsZWN0OiBm
dW5jdGlvbihldmVudCwgc2VsZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICAkKHRoaXMpLnRyaWdn
ZXIoJ3Rlc3RzZWxlY3RlZCcsIFtzZWxlY3RlZC5pdGVtLnZhbHVlXSk7Ci0gICAgICAgICAgICB9
LmJpbmQodGhpcykKLSAgICAgICAgfSk7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuQnVpbGRl
clNlbGVjdG9yID0gYmFzZS5leHRlbmRzKCdzZWxlY3QnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnYnVpbGRlci1zZWxlY3Rvcic7Ci0g
ICAgICAgICQodGhpcykuaGlkZSgpOwotICAgICAgICAkKHRoaXMpLmNoYW5nZShmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICQodGhpcykudHJpZ2dlcignYnVpbGRlcnNlbGVjdGVkJyk7Ci0gICAg
ICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBzaG93OiBmdW5jdGlvbihidWlsZGVyTmFt
ZUxpc3QpIHsKLSAgICAgICAgJCh0aGlzKS5lbXB0eSgpOwotICAgICAgICAkKHRoaXMpLnNob3co
KTsKLSAgICAgICAgYnVpbGRlck5hbWVMaXN0LmZvckVhY2goZnVuY3Rpb24oYnVpbGRlck5hbWUp
IHsKLSAgICAgICAgICAgIHZhciBidWlsZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ29wdGlvbicpOwotICAgICAgICAgICAgYnVpbGRlckVsZW1lbnQudGV4dENvbnRlbnQgPSB1
aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpOwotICAgICAgICAgICAgYnVpbGRl
ckVsZW1lbnQudmFsdWUgPSBidWlsZGVyTmFtZTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQoYnVpbGRlckVsZW1lbnQpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCi0gICAg
c2VsZWN0OiBmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICB2YXIgYnVpbGRlckluZGV4
ID0gLTE7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zW2ldLnZhbHVlID09IGJ1aWxkZXJO
YW1lKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlckluZGV4ID0gaTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoYnVpbGRlcklu
ZGV4ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnNlbGVjdGVkSW5k
ZXggPSBidWlsZGVySW5kZXg7Ci0gICAgfSwKLSAgICBzZWxlY3RlZEJ1aWxkZXI6IGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09IC0xKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0u
dmFsdWU7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuQWN0aW9ucyA9IGJhc2UuZXh0ZW5kcygn
ZGl2JywgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NO
YW1lID0gJ2FjdGlvbnMnOwotICAgICAgICB0aGlzLmlubmVySFRNTCA9ICc8YnV0dG9uIGNsYXNz
PSJyZWJhc2VsaW5lIGRlZmF1bHQiPlJlYmFzZWxpbmU8L2J1dHRvbj4nICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0icHJldmlvdXMiPiYjOTY2NDs8L2J1dHRvbj4n
ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0ibmV4dCI+JiM5NjU0
OzwvYnV0dG9uPic7Ci0gICAgICAgIHRoaXMuX3JvdXRlQ2xpY2tFdmVudCgnLnJlYmFzZWxpbmUn
LCAncmViYXNlbGluZScpOwotICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQoJy5wcmV2aW91
cycsICdwcmV2aW91cycpOwotICAgICAgICB0aGlzLl9yb3V0ZUNsaWNrRXZlbnQoJy5uZXh0Jywg
J25leHQnKTsKLSAgICB9LAotICAgIF9yb3V0ZUNsaWNrRXZlbnQ6IGZ1bmN0aW9uKHNlbGVjdG9y
LCBldmVudE5hbWUpIHsKLSAgICAgICAgJChzZWxlY3RvciwgdGhpcykuYmluZCgnY2xpY2snLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICQodGhpcykudHJpZ2dlcihldmVudE5hbWUpOwotICAg
ICAgICB9LmJpbmQodGhpcykpOwotICAgIH0KLX0pOwotCi11aS5yZXN1bHRzLlZpZXcgPSBiYXNl
LmV4dGVuZHMoJ2RpdicsIHsKLSAgICBpbml0OiBmdW5jdGlvbihkZWxlZ2F0ZSkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtdmlldyc7Ci0gICAgICAgIHRoaXMuaW5u
ZXJIVE1MID0gJzxkaXYgY2xhc3M9InRvb2xiYXIiPjxkaXYgY2xhc3M9InNlbGVjdG9yIj48L2Rp
dj48L2Rpdj48ZGl2IGNsYXNzPSJjb250ZW50Ij48L2Rpdj4nOwotCi0gICAgICAgIHRoaXMuX3Rl
c3RTZWxlY3RvciA9IG5ldyB1aS5yZXN1bHRzLlRlc3RTZWxlY3RvcigpOwotICAgICAgICB0aGlz
Ll9idWlsZGVyU2VsZWN0b3IgPSBuZXcgdWkucmVzdWx0cy5CdWlsZGVyU2VsZWN0b3IoKTsKLSAg
ICAgICAgdGhpcy5fcmVzdWx0c0RldGFpbHMgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzRGV0YWls
cyhkZWxlZ2F0ZSk7Ci0KLSAgICAgICAgJCgnLnRvb2xiYXInLCB0aGlzKS5wcmVwZW5kKG5ldyB1
aS5yZXN1bHRzLkFjdGlvbnMoKSkKLSAgICAgICAgJCgnLnNlbGVjdG9yJywgdGhpcykuYXBwZW5k
KHRoaXMuX3Rlc3RTZWxlY3RvcikuYXBwZW5kKHRoaXMuX2J1aWxkZXJTZWxlY3Rvcik7Ci0gICAg
ICAgICQoJy5jb250ZW50JywgdGhpcykuYXBwZW5kKHRoaXMuX3Jlc3VsdHNEZXRhaWxzKTsKLSAg
ICB9LAotICAgIHNldFRlc3RMaXN0OiBmdW5jdGlvbih0ZXN0TmFtZUxpc3QpCi0gICAgewotICAg
ICAgICB0aGlzLl90ZXN0U2VsZWN0b3Iuc2V0VGVzdExpc3QodGVzdE5hbWVMaXN0KTsKLSAgICB9
LAotICAgIGN1cnJlbnRUZXN0TmFtZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX3Rlc3RTZWxlY3Rvci52YWx1ZTsKLSAgICB9LAotICAgIGN1cnJlbnRCdWlsZGVyTmFt
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkZXJTZWxlY3Rv
ci5zZWxlY3RlZEJ1aWxkZXIoKTsKLSAgICB9LAotICAgIHNldEJ1aWxkZXJMaXN0OiBmdW5jdGlv
bihidWlsZE5hbWVMaXN0KQotICAgIHsKLSAgICAgICAgdGhpcy5fYnVpbGRlclNlbGVjdG9yLnNo
b3coYnVpbGROYW1lTGlzdCk7Ci0gICAgfSwKLSAgICBzaG93UmVzdWx0czogZnVuY3Rpb24oZmFp
bHVyZUluZm8pCi0gICAgewotICAgICAgICB0aGlzLl90ZXN0U2VsZWN0b3IudmFsdWUgPSBmYWls
dXJlSW5mby50ZXN0TmFtZTsKLSAgICAgICAgdGhpcy5fYnVpbGRlclNlbGVjdG9yLnNlbGVjdChm
YWlsdXJlSW5mby5idWlsZGVyTmFtZSk7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHNEZXRhaWxzLnNo
b3coZmFpbHVyZUluZm8pOwotICAgIH0KLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gOTMyNTQpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvdWkvcmVzdWx0c191bml0dGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoIml1LnJlc3VsdHMi
KTsKLQotdmFyIGtFeGFtcGxlUmVzdWx0c0J5VGVzdCA9IHsKLSAgICAic2Nyb2xsYmFycy9jdXN0
b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIjogewotICAgICAgICAiTW9j
ayBCdWlsZGVyIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIklNQUdFIiwKLSAgICAgICAg
ICAgICJhY3R1YWwiOiAiQ1JBU0giCi0gICAgICAgIH0sCi0gICAgICAgICJNb2NrIExpbnV4Ijog
ewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6
ICJDUkFTSCIKLSAgICAgICAgfQotICAgIH0sCi0gICAgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIjogewotICAgICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgImV4cGVj
dGVkIjogIlBBU1MiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICB9Ci0g
ICAgfQotfQotCi10ZXN0KCJWaWV3IiwgNiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlc3VsdHNW
aWV3ID0gbmV3IHVpLnJlc3VsdHMuVmlldyh7Ci0gICAgICAgIGZldGNoUmVzdWx0c1VSTHM6ICQu
bm9vcAotICAgIH0pOwotICAgIHZhciBjb250cm9sbGVyID0gbmV3IGNvbnRvbGxlcnMuUmVzdWx0
c0RldGFpbHMocmVzdWx0c1ZpZXcsIGtFeGFtcGxlUmVzdWx0c0J5VGVzdCk7Ci0gICAgY29udHJv
bGxlci5zaG93VGVzdCgic2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0
ZS1zdHlsZS5odG1sIik7Ci0gICAgZXF1YWwocmVzdWx0c1ZpZXcuY3VycmVudFRlc3ROYW1lKCks
ICJzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwi
KTsKLSAgICBlcXVhbChyZXN1bHRzVmlldy5jdXJyZW50QnVpbGRlck5hbWUoKSwgIk1vY2sgQnVp
bGRlciIpOwotICAgIHJlc3VsdHNWaWV3LnNob3dSZXN1bHRzKHsKLSAgICAgICAgInRlc3ROYW1l
IjogInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwKLSAgICAgICAgImJ1aWxkZXJOYW1l
IjogIk1vY2sgQnVpbGRlciIsCi0gICAgfSk7Ci0gICAgZXF1YWwocmVzdWx0c1ZpZXcuY3VycmVu
dFRlc3ROYW1lKCksICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCIpOwotICAgIGVxdWFs
KHJlc3VsdHNWaWV3LmN1cnJlbnRCdWlsZGVyTmFtZSgpLCAiTW9jayBCdWlsZGVyIik7Ci0gICAg
cmVzdWx0c1ZpZXcuc2hvd1Jlc3VsdHMoewotICAgICAgICAidGVzdE5hbWUiOiAic2Nyb2xsYmFy
cy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIiwKLSAgICAgICAg
ImJ1aWxkZXJOYW1lIjogIk1vY2sgTGludXgiLAotICAgIH0pOwotICAgIGVxdWFsKHJlc3VsdHNW
aWV3LmN1cnJlbnRUZXN0TmFtZSgpLCAic2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgt
aW5jb21wbGV0ZS1zdHlsZS5odG1sIik7Ci0gICAgZXF1YWwocmVzdWx0c1ZpZXcuY3VycmVudEJ1
aWxkZXJOYW1lKCksICJNb2NrIExpbnV4Iik7Ci19KQotCi19KSgpOwo=
</data>
<flag name="review"
          id="100053"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>